- 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 input → Interactive gameplay experience
Render 3D graphics
Game state data → WebGL-rendered visuals
Generate procedural levels
Game initialization parameters → Randomized game maps
Track player progress
Player actions and game events → Current game state and statistics
Execute permadeath mechanics
Player death event → Game restart with lost progress
Process combat interactions
Player attacks and enemy encounters → Damage calculations and combat results
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
