← Back to GDD

Game Design Document

BLESSED

Top-down 2D co-operative roguelike wave shooter

Generated from the wiki — 2026-07-25

01 Vision & Overview

Elevator pitch

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.

Genre & inspirations

🚧 TBD — competitive analysis: what Blessed does that the inspirations don’t.

Design pillars

  1. Co-op first. Every system must work for 2–4 players online — shared card phase, revives, shared economy decisions. Solo is supported but not the design target.
  2. Build variety. 70+ weapons in 19 classes, 160+ perks, tiered upgrades — two runs should never feel the same. See Weapons & Tiers and Perks & the Card Phase.
  3. Escalating chaos. Waves scale, planets add disasters, and difficulty compounds across a run (see Mechanics for the scaling math).
  4. Readable combat. Telegraphed enemy attacks, clear rarity/element color language, pixel-crisp silhouettes.

🚧 TBD — confirm pillars with the team; cut or add.

Platform & audience

🚧 TBD — target audience definition, age rating, pricing, release window.

02 Core Loop

The loop

  1. Fight a wave — enemies spawn in escalating numbers and strength.
  2. Collect Zingthons — currency drops from kills; a magnet radius pulls pickups.
  3. Card phase — between waves, each player picks from 3 suggested cards (perks, weapons, upgrades). See Perks & the Card Phase.
  4. Repeat with a harder wave. Clear all waves to finish the planet, vote on what’s next, and carry your build forward.

Death sends the run to Purgatory — the end-of-run results flow handled by the Reaper.

Game states

The session state machine (server-authoritative, synced to all clients):

StateMeaning
SetUpLoading/preparing the wave
WaveActive combat
ClearUpWave over — sweep remaining pickups, reconcile Zingthon counts
BreakBetween waves — card phase runs here
PlanetClearedAll waves done; permanent difficulty +1
VotingPlayers vote on the next step
Finish / GameOverRun conclusion paths

Scene flow

MainMenu (shop, character select) → Lobby (Steam matchmaking) → GameplayCardSystem (between waves) → Purgatory (death / results). A PersistentManagers scene stays loaded throughout and hosts the singleton managers.

Pacing

🚧 TBD — target wave duration, break duration, waves per planet, intended run length. (These live in the timer config; document the tuned values once locked.)

03 Combat & Stats

Stat system

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.

Damage model (summary)

Aura & abilities

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.

Readability rules

🚧 TBD — friendly fire policy, i-frames/revive rules, status effect roster (stun, plague/vulnerability exist — formalize the full list and stacking rules).

04 Characters

Roster

Five playable classes, each defined by a starting weapon, a signature perk and two special abilities:

ClassRoleStarting weaponAbilities
MedicSustain / revivesNeedleRevive, Medical Crate
AssaultFrontline DPSAssault RifleBomb, Assault Crate
SniperLong-range pick-offSniper RifleFlare, Scout Crate
SupportControl / utilityPush GunTurret, Support Crate
TankAnchor / aggroGiant HammerTurret, 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).

Design intent

🚧 TBD — per-class fantasy blurbs, backstories (see Story & Narrative), planned future classes.

05 Weapons & Tiers

Archetypes

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.

Weapon classes

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.

Tier progression

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.

Weapon traits

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.

Special placements

Some weapons place objects in the world (e.g. the Ice Wall’s timed obstacle that blocks both allies and enemies).

06 Perks & the Card Phase

The card phase

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.

Perk design space

The perk pool (160+, full list on the perks index) spans three shapes:

  1. Stat trades — most perks: plus one stat, minus another (e.g. Quick Feet: +Speed, −Damage). Pure stat modifiers.
  2. Custom behaviours — event-driven effects that stats can’t express (e.g. Vampiric Touch: heal on kill), authored as custom effect definitions.
  3. Economy / meta perks — shop discounts via Allegiance (e.g. Police Badge), XP gain, pickup radius.

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.

Design rules

🚧 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?).

07 Enemies & AI

One brain, data-driven

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.

Movement profiles

Approach, Kite, Flee, Pursue, Orbit, Stationary (plus None for inert bodies). Steering is faction-aware with separation, so packs spread instead of stacking.

Enemy attacks are abilities

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).

Scaling & spawning

Archetype design guidelines

🚧 TBD — boss design per planet; elite/champion variants; enemy density targets per wave band.

08 World, Planets & Disasters

Planets

Runs progress across four elemental planets, each with its own enemy roster, backgrounds and color identity:

PlanetElement / paletteRoster & disasters
EarthSoil / brown-greensee planet page
FireEmber / red-orangesee planet page
WaterDeep bluesee planet page
WoodForest greensee 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.

Disasters

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.

Maps

🚧 TBD — arena sizes and layouts per planet, obstacle density rules, spawn-point placement rules, trees/destructibles (a perk references tree spawns — formalize the system).

Run structure

🚧 TBD — planet order (fixed or voted?), waves per planet, what carries between planets, run length target, win condition after the final planet.

09 Economy & Progression

Currencies & drops

Prices & the Allegiance economy

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?).

In-run progression

Card phase picks: new weapons, weapon tier-ups, perks. Weapon slots are a stat and can grow (e.g. Extra Arm).

Permanent progression (meta)

🚧 TBD — full upgrade tree contents, achievement list, and whether runs are resumable mid-planet.

10 Multiplayer & Networking

Model

Authority rules (the important ones)

  1. All game state syncs through the standard channels — session state, wave number and player state are server-owned synced values with client hooks.
  2. Anything with a real gameplay effect must be a networked object. One object, one pickup — otherwise four clients would each collect their own copy and the effect would fire four times.
  3. Cosmetic-or-reconciled things may be client-local. Zingthon pickups deliberately spawn a local copy per client for feel, and counts are reconciled at wave end (ClearUp).
  4. Audio that matters is synced through the networked audio path; scene changes go through network-aware loading.

Co-op design consequences

🚧 TBD — reconnect/host-migration policy, latency targets, max supported ping, spectating after death, and pause rules in co-op.

11 UI & UX

Interface stack

Screens

🚧 TBD — wireframes/mockups per screen; final HUD layout.

Feedback language

Accessibility

🚧 TBD — colorblind-safe palette check for rarity/planet colors, input remapping, screen-shake/flash toggles, text scaling.

12 Audio

Architecture

Direction

🚧 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.

13 Story & Narrative

🚧 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.

Premise

Who are the players? Why are they “Blessed”? What are they fighting for?

The world

What are the four planets (Earth, Fire, Water, Wood)? Why are they overrun?

Purgatory & the Reaper

Death takes the run to Purgatory and the Reaper presides. What is this place in the fiction? Why do runs restart?

Zingthons

The currency has a name — give it a story. What is a Zingthon?

Character backstories

One short paragraph each: Medic, Assault, Sniper, Support, Tank.

Tone & delivery

Comedy? Grim? How is story delivered — cutscenes (a cutscene event system exists), item flavor text, environmental?

14 Art Direction

What exists today

🚧 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.