Project 05
Bunblade
A turn-based combat system built in Unity 6 and C#, designed around an event-driven architecture: one turn state machine broadcasts events and every system subscribes on its own, so combat, status effects, spells, the shop, and run progression stay fully decoupled.
- Unity 6
- C#
- event-driven architecture
| Architecture | Systems wire together through event Action delegates and unsubscribe on turn end, so no system holds a hard reference to another. |
|---|---|
| Turn order | A hand-written generic binary heap acts as the scheduler: each actor's speed maps inversely to a time-to-next-turn value, and actors are re-queued after acting so slows and speed swings reorder the fight. |
| Parry | A coroutine state machine runs per incoming hit (windup, parry window, late threshold). The Space input is graded early, perfect, late, or fail, with a downtime lockout that punishes mashing. |
| Combat | Elemental weakness system, stacking burn / slow / attack-debuff statuses ticked each turn, and mana-gated spells authored as ScriptableObjects. |
| Run loop | A persistent session singleton carries gold and battle count across scenes and rescales each enemy on a fresh instance, so the roguelike run keeps ramping. |
The game
Bunblade is a turn-based roguelike. You play a bunny fighting through a run of battles against a monster. Land attacks, spend mana on spells (Ignia burns, Glacia slows), and time your parry: hit Space in the window during an enemy attack to block the hit and claw back a turn. Clear a fight and you reach the shop, where the gold you earned buys more attack, defense, or spell power before the next, tougher enemy. Lose and the run ends.
WASD move J confirm K back Space parry