Skip to content

Co-op Roguelike Design

Source: Extracted and expanded from master_gdd.md §10.
Status: DRAFT — cross-player synergy catalog needs completion.


Table of Contents

  1. Model & Philosophy
  2. Turn Flow
  3. Shared Systems
  4. Cross-Player Synergies
  5. Communication
  6. Roguelike Layer
  7. Ghost Mode
  8. Connection & Networking
  9. UI Adaptation
  10. Scope & Budget
  11. What Co-op Does NOT Need (For MVP)
  12. Open Questions

1. Model & Philosophy

The Pitch

"Multiplayer tactical roguelike" on the store page from day one. Co-op is in the base game, not a post-launch patch.

The Model

Shared Grid, Alternating Turns.

Two players share the same 8×12 grid. Each player brings 3–4 units (6–8 total on field). Turn order: Player 1 → Player 2 → Enemies → Repeat.

Why This Model

  • The Aspect system is the star. Co-op should amplify it, not fight it.
  • Units can occupy adjacent tiles and trigger cross-player synergies.
  • Each player has their own camera, can ping tiles, and sees the other player's telegraphed actions.
  • Turn-based = trivial networking. No tick rate, no rollback, no latency compensation.

What "Co-op Roguelike" Means

  • Same islands, same enemies, same procedural generation as solo.
  • Shared roguelike rewards (draft together, discuss picks).
  • Shared permadeath stakes (if one player loses all units, they go Ghost Mode).
  • Shared victory/defeat. You win together or you lose together.

2. Turn Flow

┌─────────────────────────────────────────────────────────┐
│                    BATTLE START                           │
│                                                          │
│  ROUND 1:                                                │
│    Player 1 takes turn (all P1 units)                    │
│    Player 2 takes turn (all P2 units)                    │
│    Enemies take turn (AI resolves)                       │
│                                                          │
│  ROUND 2:                                                │
│    Player 1 takes turn                                   │
│    Player 2 takes turn                                   │
│    Enemies take turn                                     │
│                                                          │
│  ... repeat until victory or defeat ...                  │
└─────────────────────────────────────────────────────────┘

Within a Player's Turn

  • Player can activate their units in any order (same as solo).
  • Each unit gets: Move → Act.
  • Player can undo their last unit's move (same as solo).

Timeline Integration

  • The timeline bar shows all 6–8 player units + all enemies.
  • P1 units and P2 units are color-coded on the timeline.
  • During P1's turn: P2's units are dimmed on timeline (they'll act in the P2 phase).
  • During P2's turn: P1's units show "already acted" state.

CT Sharing

  • CT accumulates continuously for all units regardless of whose turn it is.
  • If P1's unit and P2's unit both reach CT ≥ 100 on the same tick: P1 acts first, then P2.

3. Shared Systems

What's Shared

SystemSharing Model
GridBoth players see and interact with the same grid in real-time.
TimelineSame timeline, all units visible.
Aspect poolAfter each floor: shared reward screen. Both players see relic choices and aspect drops.
GoldShared pool. Both players spend from the same gold total at shops.
PermadeathIf a unit dies, both players lose access to that unit's aspects.

What's Individual

SystemIndividual Model
CameraEach player has independent camera (pan, zoom).
Unit controlOnly your own units. Cannot control partner's units.
EXPEach unit earns EXP individually. P1's kills only give EXP to P1's units (unless Mentor aspect).
Aspect inventoryShared (both see the pool). Equipment is assigned per-unit.
RelicsShared effect (applies to both players' units).

Draft Phase (Co-op)

Before the run begins:

  1. Both players see shared pool of 6 starting units (3 Key Aspects each, randomized).
  2. P1 picks first unit. P2 picks second unit. Alternate until each has 3 units.
  3. Each player assigns starting Aspects to their own units from a shared starting pool.
  4. Both confirm. Run begins.

4. Cross-Player Synergies

Discovery Model

When a P1 unit and a P2 unit trigger a synergy:

  1. Popup appears on BOTH players' screens: synergy name + effect.
  2. Synergy added to both players' Synergy Codex.
  3. Brief celebration animation.

Synergy Catalog

P1 Unit ConditionP2 Unit ConditionProximity TriggerSynergy NameEffect
Knight Key + Shield DefenseMage Key + Any FunctionAdjacentFortress CastingMage's spells charge 1 tick faster while adjacent to Knight.
Priest KeyBerserker KeyPriest heals BerserkerRighteous FuryHeal also grants +3 ATK for 2 ticks. Berserker's kills heal Priest for 5 HP.
Rogue Key + Assassin FunctionBard KeyBard uses Encore on RogueDuet of DeathEncore grants 2 free attacks instead of 1.
Archer KeyEngineer FunctionArcher's Volley into Engineer's minefieldKillzone CoordinationAll mines in Volley AoE detonate simultaneously.
Shaman KeyWarlock FunctionBoth target same enemyCurse ChainHex + Spreading Curse = curses jump to ALL enemies in range.
Monk KeyChronomancer FunctionChronomancer Hastes MonkFlurry of TimeHaste on Monk grants 3 attacks per turn instead of 2.

Synergy Design Rules

  • Each synergy involves exactly 1 unit from each player.
  • Synergies are bonuses, not requirements. Co-op is playable without synergies.
  • Synergies are discoverable. Hidden until triggered. Then permanently visible in Codex.
  • Max 1 synergy active per pair of units at a time (if multiple conditions met, strongest activates).

Expanded Synergies (Post-MVP)

P1P2Synergy
Knight + AlchemistEngineerFortified Position: Engineer constructs within Knight's Fortify aura have +5 HP.
Mage + DruidShamanElemental Storm: Druid terrain effects + Shaman totems = totems gain elemental damage.
Rogue + IllusionistNecromancerPhantom Legion: Illusionist's Mirror Images + Necromancer's Skeletons = both share buffs.
Berserker + Blood MagePriestBlood Communion: Blood Mage sacrifices heal Berserker for double. Priest can redirect damage to Berserker.
BardTactician (Utility)Battle Chorus: Bard's Ballad + Tactician's aura = both effects are global instead of radius-limited.
ArcherScout (Utility)Coordinated Fire: Scout's reveal + Archer's Sniper Shot = bonus range equal to revealed tiles.

5. Communication

Ping System

PingIconMeaning
Stack HereFlag"Move your units to this tile/area."
Focus This EnemyCrosshair"Kill this enemy. Priority target."
DangerExclamation mark"Don't stand here. Trap/incoming AoE."
I've Got This LaneShield"I'll handle this side. You take the other."
Heal RequestHeart"This unit needs healing."
Synergy OpportunitySparkle"If you move here, we trigger a synergy."

Quick Emotes

Character-specific one-liners (2 per character):

  • Brick: "I've got this!" / "Maybe help?"
  • Mira: "As expected." / "Interesting timeline choice."
  • Whiskers: "SCIENCE!" / "That wasn't supposed to happen."

Communication During Partner's Turn

  • You can freely pan the camera.
  • You can hover enemies to read telegraphs.
  • You can ping and emote.
  • You CANNOT control units or interact with the grid.
  • A subtle pulse shows "Partner is taking their turn" on the UI.

6. Roguelike Layer

Draft Phase

  • Both players draft simultaneously from a shared pool.
  • UI shows both players' picks in real-time.
  • No time limit for draft. (Can add turn timer later if griefing is a concern.)

After Each Floor

Reward Screen (Shared):

  1. Relic choices — Pick 1 of 3 (or 5 for Hard Fight). Both players see choices. Players discuss. One player "calls" a pick. The other confirms or suggests alternatives. No voting — discussion-based.
  2. Aspect drops — Enemies drop aspects normally. Both players see all drops. Decide who equips what. Aspects can be freely traded between players' inventories.
  3. Gold distribution — Shared pool. Both players see it. No splitting.
  4. Shop visits — Shared shop. Both players see stock. Discuss purchases.

Camp Nodes

  • Both players' units fully heal.
  • Both players can swap one Aspect each.
  • Character banter includes cross-player interactions.

Brick (P1) to Mira (P2): "So, your commander also loops time? Ours does too. Is it the same commander? Do we share a boss?" Mira (P2): "I've learned not to think about it."

Permadeath in Co-op

  • If a unit dies, both players lose access to that unit's aspects.
  • The surviving player can recruit a replacement at the next RECRUIT node.
  • If one player loses ALL units: they enter Ghost Mode.

7. Ghost Mode

Trigger

  • A player has 0 alive units remaining.

Ghost Mode Capabilities

Can DoCannot Do
Ping tilesControl units
Use emotesTake turns
Spectate (free camera)Interact with grid
Read enemy telegraphsSpend gold
Discuss strategy with partnerPick rewards (partner chooses)

Revival

The surviving partner can revive ONE ghost-player unit:

  • At the next CAMP node.
  • Requires: Phoenix Down in inventory.
  • Revived unit: 25% HP, all aspects intact.
  • Ghost Mode ends. Player regains control of revived unit.

If Both Players Enter Ghost Mode

  • Run over. Defeat. Normal run-end rewards calculated.

Ghost Mode Design Philosophy

  • Watching your partner play is less fun than playing. But it's better than being kicked to a loading screen.
  • Ghost Mode preserves the social experience. You can still talk, strategize, and commiserate.
  • Single-unit revival means Ghost Mode usually lasts 1–2 floors at most.

8. Connection & Networking

Model

  • Direct invite only. Friend code or Steam invite. No matchmaking servers.
  • Host/client architecture. Host owns the game state. Client sends inputs.
  • Turn-passing protocol. State synced at end of each turn. Not real-time.

Steamworks Integration

FeatureAPI
Invite friendSteam Friends → Game Invite
LobbySteam Matchmaking (used for invites only, not public matchmaking)
Data transferSteam Networking P2P (reliable mode)
NAT traversalHandled by Steamworks

Connection Flow

1. Host: Main Menu → "Create Co-op Game" → Steam lobby created
2. Host: "Invite Friend" → Steam overlay → friend accepts
3. Guest: Joins lobby → "Connected" UI shown
4. Both: Enter Draft phase together
5. Host: Starts run → initial game state sent to guest
6. Turn loop begins

Disconnection Handling

ScenarioResult
Guest disconnects mid-battleHost freezes. "Waiting for partner to reconnect..." 60-second timer. If timer expires: guest's units become AI-controlled. Guest can rejoin later as Ghost Mode.
Host disconnects mid-battleRun lost. Both players return to main menu. (Host owns the save. If host is gone, run is gone.)
Disconnect during draftReturn to lobby. Can re-invite.

Latency

  • Turn-based game. No real-time requirements.
  • State payload estimated at 5–20 KB per turn (unit states, grid changes, timeline).
  • 200ms latency = imperceptible (you wait for partner's turn anyway).

9. UI Adaptation

Changes from Solo UI

ElementSoloCo-op
Timeline barShows all unitsUnits color-coded by player. P1 = blue, P2 = orange.
Unit info panelOn hover/selectAdditional: "Controlled by [Player Name]" badge.
Turn indicator"Your Turn" / "Enemy Phase""Player 1's Turn" (blue pulse) / "Player 2's Turn" (orange pulse)
Undo buttonSingle-move undoSingle-move undo (each player undoes their own).
Target tooltipDamage preview+ Synergy opportunity indicator (sparkle icon if synergy possible)
Ping displayN/APing icons on grid, fade after 3 seconds
Partner's actionsN/APartner's planned move shown as translucent preview (optional, togglable)

10. Scope & Budget

Development Effort

FeatureEffortNotes
Turn-passing systemLowAlready turn-based. Adding a "pass control" state machine.
Second player camera + inputMediumCamera already exists. Adding second camera + input routing.
Ping/emote systemLow–MediumUI overlay + input binding. Emotes are text strings.
Cross-player synergy resolverMediumNew combinatorics in battle engine. Synergy table data structure.
Shared roguelike draft UIMediumNew UI screens. Shared state synchronization.
Ghost modeLowState flag + disabling input.
Steamworks integrationLow–MediumSteamworks.NET wrapper. Invite flow.
Shared reward screensMediumUI work. Discussion-based selection (no voting logic needed).
Total co-op overhead~15–20% additional dev time on top of soloMatches master GDD estimate.

Risk Assessment

RiskSeverityMitigation
Cross-player synergy balanceMediumSynergies are bonuses, not requirements. Co-op is playable without them.
Networking bugsLowTurn-passing is simple. State sync is serializable.
UI clutter with 8 unitsMediumLarger timeline bar. Color-coding. Good default zoom.
Social friction (disagreements on picks)LowDiscussion-based, not voting. If you can't agree, you probably shouldn't be playing co-op together.

11. What Co-op Does NOT Need (For MVP)

  • [x] Matchmaking, ladder, ranks, seasons
  • [x] PvP balance
  • [x] Separate co-op campaign — same islands, same enemies, same procedural gen
  • [x] Voice chat (players use Discord/Steam)
  • [x] Spectator mode for third viewers
  • [x] Async/play-by-mail mode
  • [x] Cross-platform play
  • [x] Drop-in/drop-out mid-run
  • [x] Co-op specific achievements (regular achievements apply to both)

12. Open Questions

  1. Turn order within a player's phase: Currently: activate units in any order. Should there be a "Ready" button to signal that you've finished your turn? Or does turn auto-end after the last unit acts? (Recommend: "End Turn" button. Player can choose order of their units, then presses "End Turn" when done.)
  2. Shared gold spending: If P1 spends all the gold at a Shop, P2 gets nothing. Is this a social problem? (Recommend: shops could give each player a personal gold allowance — shared pool splits 50/50 at shop time. Or: shops have a "suggest purchase" system where both players must confirm >50% gold spends.)
  3. Ghost Mode depth: Should the ghost player have any gameplay input? Ideas: tactical buffs (once-per-floor "Inspire" that gives partner's units +2 ATK), scout info (reveal enemy intentions earlier), one-time intervention (block an attack that would kill a unit). (Recommend: post-MVP. Ghost Mode is passive for MVP.)
  4. Synergy discovery in co-op: Should cross-player synergies be discoverable in solo? No — they require two players. But showing them greyed out in the Codex with "Requires co-op" might entice solo players to try co-op.
  5. Connection model without Steam: If we ever ship on GOG/itch.io, Steamworks isn't available. Need a fallback (direct IP, Epic Online Services). Acceptable to require Steam for co-op at launch?
  6. Co-op run duration: Target 40–60 minutes for 2-island MVP. Can a co-op session fit in one sitting? (Recommend: co-op allows a single "Save & Quit" that both players can resume from. Solo doesn't get this — solo is short enough to finish in one sitting.)

Next: Return to Master GDD

Markdown is the canonical GDD source.