Skip to content

pmcbatipvc/ArenaFPS

Repository files navigation

Odin Arena

A Quake III Arena / QuakeWorld-inspired first-person shooter written 100% in Odin.

Build & Run

Windows

odin run .

Linux

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 .

Controls

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

Architecture Overview

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.

Decisions

Movement Physics

  • 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

Collision

  • Axis-separated sweep for movement resolution
  • Short downward probe (0.25 units) for ground detection
  • All entities use same brush collision system

Weapons

  • Hitscan uses ray vs AABB tests
  • Rocket splash damage uses linear falloff within 120-unit radius
  • Railgun pierces actors but stops at world geometry

Bots

  • Simple waypoint-based navigation
  • Engage state triggers within 1200 units with line of sight
  • Use same physics as player for consistency

Rendering

  • Used raylib primitives (cubes, spheres) for all geometry
  • Flat colors with wireframe outlines for visual clarity
  • No textures or external assets

Known Issues

  • 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

License

MIT License

About

Quake 3 Arena and Quake World inspired First Person Shooter

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages