A Ruby implementation of the classic DOOM engine using Gosu for rendering.
DOOM.rb is a modern Ruby port of the classic DOOM engine, using Gosu for window management and rendering. The project aims to maintain compatibility with original DOOM WAD files while leveraging modern Ruby practices and object-oriented design principles.
- Software-based rendering using Gosu's pixel buffer API
- WAD file parsing and loading
- Raycasting-based 3D rendering
- Player movement and collision detection
- Minimap display
- Debug information overlay
- Performance monitoring
- Ruby 3.3.0+
- Gosu gem (~> 0.15.0)
- FreeDOOM WAD file (for testing)
- Clone the repository
- Install dependencies:
bundle install
To run the game:
rake doom
To run the FPS tech demo:
rake demo
- WASD: Movement (A/D for strafing)
- Left/Right Arrows: Rotation
- Tab: Toggle debug overlay
- Esc: Exit
To run tests:
rake test
Currently implementing:
- Texture mapping system
- Performance optimizations for renderer
- Sprite rendering
- Sound system
Development progress is tracked in the .github/worklogs
directory:
main.md
: Global tasks and featuresbranches/
: Branch-specific worklogs- Each feature branch has its own worklog file
- Tasks are moved to main.md when completed
GPL-2.0 License - See COPYING.md for details