Game Design Document
Top-down 2D co-operative roguelike wave shooter
Generated from the wiki — 2026-07-25
Blessed is a top-down 2D co-operative roguelike wave shooter for 2–4 players. Fight escalating waves of elemental enemies across four planets, collect Zingthons, and reforge your build every wave in a shared card-selection phase — until the run ends in Purgatory or glory.
🚧 TBD — refine the pitch into one marketing-ready sentence.
🚧 TBD — competitive analysis: what Blessed does that the inspirations don’t.
🚧 TBD — confirm pillars with the team; cut or add.
🚧 TBD — target audience definition, age rating, pricing, release window.
Death sends the run to Purgatory — the end-of-run results flow handled by the Reaper.
The session state machine (server-authoritative, synced to all clients):
| State | Meaning |
|---|---|
SetUp | Loading/preparing the wave |
Wave | Active combat |
ClearUp | Wave over — sweep remaining pickups, reconcile Zingthon counts |
Break | Between waves — card phase runs here |
PlanetCleared | All waves done; permanent difficulty +1 |
Voting | Players vote on the next step |
Finish / GameOver | Run conclusion paths |
MainMenu (shop, character select) → Lobby (Steam matchmaking) → Gameplay ⇄
CardSystem (between waves) → Purgatory (death / results). A PersistentManagers
scene stays loaded throughout and hosts the singleton managers.
🚧 TBD — target wave duration, break duration, waves per planet, intended run length. (These live in the timer config; document the tuned values once locked.)
Every entity (player or enemy) carries the same runtime stat container. Stats cover offense (Damage, Melee/Ranged/Magical Damage, Attack Speed, Critical Chance/Damage), defense (Max HP, HP Regeneration, Armor, Dodge, Knockback Resistance), utility (Speed, Range, Pickup Range, Luck, XP Gain), economy (Allegiance, Loot) and the aura resource (Max Aura, Aura Regeneration, Aura Gain). Buffs and debuffs apply as stat modifiers; perk categories exist as pure tags with no numeric backing.
All formulas — damage composition, crit, armor curve, dodge, caps — are documented with exact numbers on the Mechanics page, which is kept in sync with the code.
Aura is the ability resource: abilities cost aura and run on cooldowns. Abilities are one universal layer used by both players and enemies:
Player ability kits are per-character (bombs, flares, mines, turrets, revives, deployables). Enemy attacks are authored as the same ability assets.
🚧 TBD — friendly fire policy, i-frames/revive rules, status effect roster (stun, plague/vulnerability exist — formalize the full list and stacking rules).
Five playable classes, each defined by a starting weapon, a signature perk and two special abilities:
| Class | Role | Starting weapon | Abilities |
|---|---|---|---|
| Medic | Sustain / revives | Needle | Revive, Medical Crate |
| Assault | Frontline DPS | Assault Rifle | Bomb, Assault Crate |
| Sniper | Long-range pick-off | Sniper Rifle | Flare, Scout Crate |
| Support | Control / utility | Push Gun | Turret, Support Crate |
| Tank | Anchor / aggro | Giant Hammer | Turret, Support Crate |
All classes currently share the same base statline (100 HP, 10 Damage, 5 Speed, 5 Range, 100 Max Aura); identity comes from loadout, not stats.
🚧 TBD — differentiate base statlines per class (e.g. Tank more HP/armor, Sniper more range) and give Tank a unique ability kit (it currently shares Support’s).
🚧 TBD — per-class fantasy blurbs, backstories (see Story & Narrative), planned future classes.
Three weapon archetypes with distinct handling:
The live roster (currently ~70 weapons) with full per-tier stats is on the weapons index. Examples: Bowrep, Giant Hammer.
Every weapon belongs to one of 19 classes (Gun, Bow, Medieval, Tech, Wizard, …). Classes group weapons thematically and are the hook for future class-synergy bonuses.
🚧 TBD — class set bonuses (e.g. “3 Medieval weapons → +X%”) are not designed yet; decide whether classes stay cosmetic or become a build axis.
Weapons exist in Tiers 1–5 (the rarity color language). Each tier is a full stat row — damage, cooldown, crit, range, scaling modifiers — authored per weapon. A weapon’s minimum tier gates when it can appear. In-run, higher tiers arrive through the card phase.
Behaviour a stat line can’t express (absorb shots, on-kill effects, cooldown manipulation, replacing the fire action entirely) is authored as trait assets attached to a weapon — server-side hooks around equip, fire, hit, kill and wave events. This is the extension point for “weird” weapons.
🚧 TBD — trait roster per weapon; document each shipped trait on its weapon’s wiki page as they land.
Some weapons place objects in the world (e.g. the Ice Wall’s timed obstacle that blocks both allies and enemies).
During every Break state, the run switches to the card scene and each player is offered 3 procedurally suggested cards. Cards are the run’s only build lever — weapons, perks and upgrades all arrive through them.
The suggestion system weighs rarity, price, the player’s Zingthons, unlock state and stack limits.
🚧 TBD — document the exact suggestion weighting (luck influence, tag synergy bias, duplicate protection) once tuned.
The perk pool (160+, full list on the perks index) spans three shapes:
Perk metadata: rarity (Tier 1–5 color language), base price, stack limit, tags (Armor, Speed, LifeSteal… — used for filtering and future synergies), and optional unlock conditions.
🚧 TBD — rarity distribution targets per wave band; reroll/banish mechanics (do they exist?); duplicate-pick rules in co-op (can two players take the same card?).
There are no per-enemy AI scripts. Every enemy runs the same generic intent brain; an archetype is authored purely as data — a statline, a movement profile, and a set of granted abilities. Scripted brains exist only as an escape hatch for bosses.
The intent loop: the highest-priority ready active ability drives behaviour — seek its firing range, fire when ready, follow its gated movement (flee, keep distance, hold still) while it cools down; otherwise fall back to the archetype’s default movement profile.
Approach, Kite, Flee, Pursue, Orbit, Stationary (plus None for inert
bodies). Steering is faction-aware with separation, so packs spread instead of
stacking.
Melee strikes, ranged weapon bursts, charges, summons (egg-style hatchers), contact damage and death-loot bursts are all the same ability assets players use — telegraphs included. An enemy that fires a weapon literally holds a weapon from the weapon table (e.g. Mud Slinger firing a Sniper Rifle).
🚧 TBD — boss design per planet; elite/champion variants; enemy density targets per wave band.
Runs progress across four elemental planets, each with its own enemy roster, backgrounds and color identity:
| Planet | Element / palette | Roster & disasters |
|---|---|---|
| Earth | Soil / brown-green | see planet page |
| Fire | Ember / red-orange | see planet page |
| Water | Deep blue | see planet page |
| Wood | Forest green | see planet page |
Clearing a planet raises permanent difficulty for the rest of the run (see Mechanics), and triggers the Voting state for what comes next.
Each planet has signature disasters — map-level hazards that strike during waves and force repositioning: Vortex pulls everything toward its center, Sandstorm blinds a moving region, Lava Pools cycle open and closed. Full list on the disasters index.
Design intent: disasters attack the space, not the player — they invalidate camping spots and reshape the arena mid-wave.
🚧 TBD — arena sizes and layouts per planet, obstacle density rules, spawn-point placement rules, trees/destructibles (a perk references tree spawns — formalize the system).
🚧 TBD — planet order (fixed or voted?), waves per planet, what carries between planets, run length target, win condition after the final planet.
Cards and shop entries carry base prices per rarity tier. The Allegiance stat moves shop prices (positive = discounts) — several perks trade combat power against economy (e.g. Police Badge, Spray Can). Weapons also carry negative Allegiance modifiers, making strong weapons an economic commitment.
🚧 TBD — price curves per rarity/tier, Zingthon income targets per wave, and the intended economy arc (when should a player afford their first Tier 3?).
Card phase picks: new weapons, weapon tier-ups, perks. Weapon slots are a stat and can grow (e.g. Extra Arm).
🚧 TBD — full upgrade tree contents, achievement list, and whether runs are resumable mid-planet.
ClearUp).🚧 TBD — reconnect/host-migration policy, latency targets, max supported ping, spectating after death, and pause rules in co-op.
🚧 TBD — wireframes/mockups per screen; final HUD layout.
🚧 TBD — colorblind-safe palette check for rarity/planet colors, input remapping, screen-shake/flash toggles, text scaling.
🚧 TBD — music style and per-planet themes, combat mix rules (how many simultaneous hits may sound), wave-start/wave-end stingers, card phase ambience, and the audio identity of Purgatory.
🚧 TBD — this chapter is intentionally empty. The game’s fiction is not in the project yet. The structure below is ready to fill in; names that already exist in the game (Blessed, Purgatory, the Reaper, Zingthons, the four elemental planets) are anchors the fiction should explain.
Who are the players? Why are they “Blessed”? What are they fighting for?
What are the four planets (Earth, Fire, Water, Wood)? Why are they overrun?
Death takes the run to Purgatory and the Reaper presides. What is this place in the fiction? Why do runs restart?
The currency has a name — give it a story. What is a Zingthon?
One short paragraph each: Medic, Assault, Sniper, Support, Tank.
Comedy? Grim? How is story delivered — cutscenes (a cutscene event system exists), item flavor text, environmental?
🚧 TBD — art direction is otherwise undefined. To write:
- Style guide: resolution/PPU standard, palette (tie into the rarity Tier 1–5 and planet color languages already used by UI), outline rules, animation frame budgets.
- Character/enemy silhouette rules (readability is a design pillar — see Vision & Overview).
- Per-planet environment identity beyond backgrounds.
- VFX language: what color/shape means danger vs. reward; how much screen can effects occupy in 4-player chaos.
- Missing assets: perk icons (perks currently share a default icon) and several weapon/world sprites.