A 3D engine in Python, using Raylib and Binary Space Partitioning, inspired by DOOM (1993).
The base engine — camera, BSP-based rendering, texture mapping, and level loading — follows StanislavPetrovV's DOOM-Clone tutorial (video walkthrough). On top of that foundation, this project is an ongoing work and so far it has been added:
UI.py— HUD and on-screen UI handlingplayer.py— player state and movement separated into its own modulecollision_handler.py— dedicated collision-resolution logic, built independently of the base tutorialprocess_sprites.py/weapon_sprite.py— sprite rendering and weapon-view systems
The engine runs, renders levels via BSP raycasting, and handles sprites and weapons. Collision has some bugs — the player can occasionally clip through geometry or catch on wall edges —.
- Harden collision detection across all wall geometries
- Polish sprite/weapon rendering
- Add enemy AI
- Sound support
- Additional levels
Because is fun and I Love the idea of recreating a videogame for 0.
Understand how a raycasting/BSP renderer like DOOM's actually works it's been super fun. As a fan, seeing aspecs you do not see In the surface it's amazing, also this is polishing further my Python knowledge and problem-solving.
- Original engine tutorial and base architecture: StanislavPetrovV/DOOM-Clone
- DOOM (1993) by id Software — this is a fan learning project, not affiliated with or endorsed by id Software or Bethesda.
MIT — see LICENSE. This project builds on code and structure from the tutorial linked above; if you reuse this code, please also credit the original tutorial.