Iron Fist

A from-scratch FPS built in pure C with raylib — no engine, no scripting layer, one file

Iron Fist gameplay 2,900+ lines of C • zero dependencies beyond raylib

Screenshots

Arsenal

Shotgun
Browning Auto-5
  • Fire Rate0.59s
  • Damage15 × 8 pellets
  • Max Ammo32 shells
  • SpecialDistance-scaled
Machine Gun
MP40
  • Fire Rate0.09s
  • Damage18 per round
  • Max Ammo120 rounds
  • SpecialFull-auto
Launcher
Panzerschreck
  • Fire Rate0.96s
  • Damage200 + 200 splash
  • Max Ammo8 rockets
  • Splash Radius5 meters

The Chef

Billboard-sprited enemies with boids separation and multi-state AI. Three subtypes roam the arena:

Chef

65 HP

Standard combatant. Balanced speed and damage output.

Heavy Chef

145 HP

Tank variant. Absorbs punishment, hits harder.

Fast Chef

42 HP

Glass cannon. Closes distance quickly, low survivability.

AI STATE MACHINE

Patrol Chase Attack Dying

Controls

W A S DMove
MouseAim / Look
LMBFire
SpaceJump
ShiftSprint
1 2 3Switch Weapon
- / +Music Volume
EscQuit

Architecture

Single File

The entire game lives in one game.c file. No engine, no scripting layer, no abstraction layers — just raw C and raylib.

Custom GLSL Lighting

Hand-written fragment shader with 6 dynamic point lights, distance fog, and per-pixel attenuation. Lights flicker and pulse.

Billboard Sprites

Enemies rendered as camera-facing quads, back-to-front sorted each frame for correct transparency. Classic 2.5D aesthetic.

Blood Particles

Hit-spawned particle system with floor decals. Particles inherit velocity, fade over time, and stick to surfaces as permanent blood splats.

Q3-Style Platforms

Moving platforms with Quake 3 Arena-inspired mechanics. Elevators, jump pads, and vertical combat arenas.

No Engine

No eBPF, no Unity, no Unreal, no Godot. Just C, raylib for windowing/GL, and raw OpenGL shaders. Build with a single gcc invocation.

~2,900 lines of C • single game.c • compiles in seconds

Sound Design

Hell March Loop

Iconic background music loop that sets the tone. Volume adjustable in-game with -/+ keys.

Announcer Stingers

UT/MK-style voice lines: First Blood, Headshot, Multi-Kill, Killing Spree, Fatality. Triggered by kill streaks and special shots.

Distance-Scaled FX

Explosions and gunfire attenuate with distance. Spatial audio gives positional feedback on enemy locations.

Impact Feedback

Per-weapon fire sounds, shell casings, rocket trails, meat impacts. Every action has distinct audio confirmation.

View on GitHub

Source code • Build instructions • Asset pipeline