Skip to content

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DOOM — Browser FPS Concept

A first-person shooter concept built purely with JavaScript, HTML, and CSS — no libraries, no frameworks, no assets. Inspired by classic Doom.

Born on a Saturday with nothing else to do.

Live version: braz.dev/doom

Play

Open index.html in a browser. That's it. No build step, no server required (though serving via HTTP avoids the file:// AudioContext warning).

Click to lock the pointer, then:

KeyAction
W/A/S/DMove / Strafe
MouseLook around
Left clickFire
1-4Switch weapon
SpaceFire
RRestart (on death/win screen)
Toggle god mode (try typing what a Doom marine would scream)

Features

  • Raycasting engine — DDA ray marching, textured walls, distance darkening, z-buffer
  • 5 levels — connected rooms and corridors, increasing difficulty
  • 8 enemy types — Zombie, Imp, Demon, Baron, Cyberdemon, Cacodemon, Lost Soul, Mancubus
  • 4 weapons — Fist, Pistol, Shotgun (5 pellets), Chaingun (rapid fire)
  • Boss fight — Cyberdemon in a large arena with enemy spawn waves
  • HUD — Health bar, ammo, weapon selector, enemy count, level indicator
  • Death / win screens — R to restart
  • Sound effects — procedural via Web Audio API (no audio files)
  • Background music — original procedural metal tracks, one per level

What's inside

├── index.html — single page, no dependencies
├── css/style.css — fullscreen layout, overlays, loading screen
├── js/
│ ├── engine.js — raycasting renderer, enemy sprite drawing
│ ├── audio.js — Web Audio SFX + procedural music engine
│ ├── game.js — game state, levels, AI, HUD, weapons
│ └── main.js — game loop, input, pointer lock
└── README.md

License

GNU General Public License v3.0

About

A first-person shooter concept built purely with JavaScript, HTML, and CSS

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages