An FPS engine in the style of '90s shooters, like Doom and Duke Nukem.
This project will be using WebGPU via the wgpu crate for graphics, rather than a software renderer.
As of right now, you can generate a level with the included level editor, walk around, and collide with walls in the way one would expect from a traditional first person game. The camera is fully 3D, and the player can look in whichever direction they want -- it isn't limited to just yaw.
For the level editor (and subsequently, the engine itself) to work, Python Arcade needs to be installed.
- S
- Change scaling of exported level (1.0x, 1.25x, 1.5x, 1.75x, 2.0x)
- C
- Clear everything
- Alt / Option + C
- Clear all walls
- Ctrl / Cmd + C
- Clear all points
- Ctrl / Cmd + Z
- Undo last wall / point placement
- Ctrl / Cmd + S
- Saves level to
./level.json
- Saves level to
- Ctrl / Cmd + O
- Opens level saved at
./level.json
- Opens level saved at
- Ctrl / Cmd + Q
- Quit the editor
- Left Click on empty space
- Add new point
- Left Click on point
- Select as left side of wall
- Left Click on point (while left is selected)
- Add new wall
- Alt / Option + Left Click
- Set spawn position
- Ctrl / Cmd + Left Click on point
- Delete point
- Right Click
- Deselect point
- Escape / Q
- Quit engine
- W / S
- Move forward / backward
- A / D
- Strafe left / right
- Move mouse cursor
- Look around
The main references I used:
Most of the other code came from me hacking bits together and my own knowledge of trig.