An attempt to make a doom more customizable, easy to use, and portable.
A playable version of DOOM implemented in typescript, rendered in threejs, with a svelte UI. It is not a port of DOOM per se because it deviates from the DOOM implementation where it was fun or interesting to experiment but it should still feel like DOOM. Parts are derived from the DOOM source code - in particular for animation, monster behaviour, and timing - so if you're familiar with that code you may recognize parts of it in this implementation.
Install NodeJS 16 or higher and run:
## Install NodeJS dependencies
npm install
## Run dev server
npm run dev
Open your web browser to http://localhost:5173 and the page should explain the rest.
Nonexhaustive list of bugs and missing/incomplete features:
- Screen wipe
- Sounds for crushers and moving floors (door sounds work!)
- Crackling/popping sounds
- Holes in floor/ceiling geometry in some maps (eg. Doom2 MAP25~~, Plutonia MAP25 and MAP29~~)
- Load/Save games
- Lighting effects (like light diminishing)
- Automap
- AI performance on large maps
WANTED:
- Better touch controls
- Multiplayer (P2P over webrtc?)
- Play demos
- Nightmare monster respawn (and other nightmare monster behaviours)
- More HUD options
- Improve the intro and menu UI. I don't have a design in mind, I just don't love what's there. It would be really fun to build something DOOM themed.
- Support more DOOM engine games (Heretic, Hexen, Strife)
- More Boom compatibility like switches, platforms, lights, etc. At least enough to play the community chest maps, ancient aliens, or sunlust.
- ZDoom compatibility like voxels, 3d models ZScript and etc.
- Generate BSP, SEGS, and SSECTOR nodes for large maps that don't have them
- Lloyd Markle
- Sapbot
- You?
I'm happy to take contributions (features or bug fixes) so feel free to reach out in an issue or pull request. I'm sure there is lots of room to improve. I may not be super quick to respond.
This project is licensed under the GPLv2 License - see the LICENSE file for details.
Inspiration, code snippets, etc. (in no particular order):
- DOOM source code
- smol/doom
- jmickle66666666/wad-js
- cristicbz/rust-doom
- Fabien Sanglard's Game Engine Black Book: DOOM
- Doom wiki (see source code for specific links)
- Doomworld Forums (see source code for specific links)