Vibeleaderboard
Index / game
Visit github.com
Category
Entertainment
Rank
No. 2121Tools index

Previous survey · No. 2116 ·

Pricing
Open Source
Type
GAME
Builder
dimillian
GitHub
4 stars
Date

About

Dimillian's roguelike Doom you can play in your browser — pure JavaScript with WebGL rendering, permadeath included.

What it does

BoomRL assembles a first-person game prototype from a Three.js scene, keyboard and mouse input, procedural grid levels, a player controller, weapon generation, and a browser HUD. Weapons vary by base type, rarity, statistics, modifiers, and generated names. Runs reset after player death.

Why it's ranked here

The strongest reason to try BoomRL is its readable separation of rendering, input, levels, player state, weapons, and interface state. The random weapon model has meaningful breadth. However, the repository supports calling this a playable prototype, not a complete roguelike: several advertised progression and combat systems remain planned or placeholder implementations.

What's good

The weapon model is unusually concrete for a prototype. Six templates combine with five rarities and modifiers that alter damage, speed, accuracy, reload time, magazine size, or special effects. Level generation clears the spawn area, builds boundary and random interior walls, and exposes collision and walkability checks. Strict TypeScript configuration and dedicated type definitions clarify intended system boundaries.

Tradeoffs

Core encounters are not finished. Shooting performs a raycast but does not test enemies or scenery. Enemy spawns, item spawns, exits, aiming, interactions, muzzle flashes, upgrades, statistics, and several weapon effects are placeholders. Meta-progression and enemy types largely exist as type definitions or roadmap items. Player movement also does not consult the level collision checks shown in the supplied code.

How to use it well

Use BoomRL as a compact browser game prototype, a Three.js learning project, or a base for implementing procedural FPS systems. Its modular state and weapon definitions give contributors clear extension points. It does not yet cover a finished campaign, working enemy combat, persistent progression, mobile controls, multiplayer, or completed audio and effects.

Technical notes+

The npm package in package.json uses ES modules, Vite, TypeScript, ESLint, Three.js, and Howler.js, with scripts for development, production builds, preview, type checking, and linting. src/main.ts wires UIManager, InputManager, and Game to DOM events and pointer lock. src/core/Game.ts owns the Three.js scene, camera, renderer, animation loop, lifecycle, and level transitions. src/levels/Level.ts creates a random wall grid plus floor, ceiling, lights, spawn clearance, and collision helpers. src/weapons/WeaponSystem.ts defines templates, weighted rarities, modifier rolls, stat mutation, and generated names, while src/weapons/Weapon.ts manages ammunition, cooldowns, reloads, projectile data, and mostly placeholder special effects. src/entities/Player.ts handles movement and camera control but its shooting raycast has no intersection processing. src/types/game.ts includes future-facing enemy and progression contracts beyond the implemented systems.

Observed

License
MIT
Primary language
TypeScript, with strict mode documented
Packaging
npm package using ES modules
Build surface
Vite development, build, and preview scripts
Interface
Browser application using WebGL rendering, DOM events, and pointer lock
Development platform
Node.js 18 or higher with npm or yarn
Core dependencies
Three.js and Howler.js
Quality commands
Dedicated TypeScript checking and ESLint scripts

Read from README.md, package.json, src/main.ts, src/core/Game.ts, src/types/game.ts, src/levels/Level.ts, src/ui/UIManager.ts, src/weapons/Weapon.ts, src/entities/Player.ts, src/utils/MathUtils.ts, src/core/InputManager.ts, src/weapons/WeaponSystem.ts.

What it can do

  • Play a roguelike Doom game

    User keyboard/mouse inputInteractive gameplay experience

  • Render 3D graphics

    Game state dataWebGL-rendered visuals

  • Generate procedural levels

    Game initialization parametersRandomized game maps

  • Track player progress

    Player actions and game eventsCurrent game state and statistics

  • Execute permadeath mechanics

    Player death eventGame restart with lost progress

  • Process combat interactions

    Player attacks and enemy encountersDamage calculations and combat results

Tags

gamedoomroguelikebrowserdimillian

Tech Stack

Node.jsTypeScriptVite

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.