A Quake III Arena / QuakeWorld-inspired first-person shooter written 100% in Odin.
odin run .
Ensure you have the required system packages for raylib:
# Ubuntu/Debian
sudo apt-get install libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libwayland-dev libxkbcommon-dev
# Then build and run
odin run .| Key | Action |
|---|---|
| WASD | Move |
| Mouse | Look |
| Space | Jump (hold for auto-bunnyhop) |
| LMB | Fire |
| 1-5 | Select weapon |
| Mouse Wheel | Cycle weapons |
| Tab | Scoreboard |
| F3 | Debug overlay |
| Esc | Pause menu |
The game uses a fixed 125Hz physics tick with variable rendering. Core systems include:
- Physics: QuakeWorld-style movement with air-strafing, bunnyhopping, and precise collision
- Combat: 5 weapons (MG, SG, RL, LG, RG) with hitscan/projectile mechanics
- World: AABB brush-based arena with items, jump pads, and spawn points
- Bots: Simple state machine with roaming and combat behaviors
- HUD: Crosshair, health/armor, ammo, speedometer, kill feed, and scoreboard
All state is contained in a single Game struct, with fixed pools for projectiles and particles to avoid runtime allocations.
- Used QuakeWorld air acceleration quirk (capped wishspeed to 30 but scaled acceleration with uncapped 320)
- Implemented auto-bunnyhop by skipping friction on jump tick when space is held
- Step-up uses 18-unit maximum as specified
- Axis-separated sweep for movement resolution
- Short downward probe (0.25 units) for ground detection
- All entities use same brush collision system
- Hitscan uses ray vs AABB tests
- Rocket splash damage uses linear falloff within 120-unit radius
- Railgun pierces actors but stops at world geometry
- Simple waypoint-based navigation
- Engage state triggers within 1200 units with line of sight
- Use same physics as player for consistency
- Used raylib primitives (cubes, spheres) for all geometry
- Flat colors with wireframe outlines for visual clarity
- No textures or external assets
- Project is not yet complete - some features are simplified or not yet implemented
- Audio system is minimal (procedural sound generation not fully implemented)
- Some weapon effects (lightning beam, rail trail) are not visually represented
- Bot AI is basic and may not be challenging
- Particle system is simplified
MIT License