Architecture
Gameplay logic is split across multiple modules:src/crimson/gameplay.py— Player update, movement, firing, reloadsrc/crimson/creatures/— Creature AI, animations, spawningsrc/crimson/projectiles/— Projectile pools, hit detectionsrc/crimson/bonuses/— Bonus pickups and effectssrc/crimson/perks/— Perk selection and runtime effectssrc/crimson/weapon_runtime.py— Weapon assignment and availability
Player Update
The main player update loop runs each tick:src/crimson/gameplay.py
Movement System
Movement Perks
- Speed Bonus — Temporary +50% movement speed
- Angry Reloader — +25% speed while reloading
- Slow Motion — Global time scale affects enemies but not player input
Weapon System
Weapon Firing
src/crimson/gameplay.py
Weapon Table
Weapons are defined insrc/crimson/weapons.py:
Creature System
Creature AI
Creatures use simple heuristic AI:src/crimson/creatures/ai.py
Creature Types
- Zombie — Slow, weak, basic melee
- Lizard — Fast, moderate health
- Alien — Flying, ranged attacks
- Spider — Very fast, low health
- Trooper — Ranged, high health
Spawn System
src/crimson/creatures/spawn.py
Combat System
Hit Detection
src/crimson/projectiles/runtime.py
Damage Application
src/crimson/creatures/damage.py
Progression System
Experience and Levels
src/crimson/gameplay.py
- Creature kills (base XP per type)
- Double Experience bonus (2x multiplier)
- Lean Mean XP Machine perk (extra XP per kill)
Perk Selection
See Perks Module for details.Bonus System
Bonuses drop from creatures and provide temporary effects:src/crimson/bonuses/apply.py
Next Steps
Rendering System
Learn about graphics rendering
Audio System
Explore audio routing
Perks Module
Deep dive into perks
Replay Module
Understand replay system