Appearance
Co-op Roguelike Design
Source: Extracted and expanded from
master_gdd.md§10.
Status: DRAFT — cross-player synergy catalog needs completion.
Table of Contents
- Model & Philosophy
- Turn Flow
- Shared Systems
- Cross-Player Synergies
- Communication
- Roguelike Layer
- Ghost Mode
- Connection & Networking
- UI Adaptation
- Scope & Budget
- What Co-op Does NOT Need (For MVP)
- 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
| System | Sharing Model |
|---|---|
| Grid | Both players see and interact with the same grid in real-time. |
| Timeline | Same timeline, all units visible. |
| Aspect pool | After each floor: shared reward screen. Both players see relic choices and aspect drops. |
| Gold | Shared pool. Both players spend from the same gold total at shops. |
| Permadeath | If a unit dies, both players lose access to that unit's aspects. |
What's Individual
| System | Individual Model |
|---|---|
| Camera | Each player has independent camera (pan, zoom). |
| Unit control | Only your own units. Cannot control partner's units. |
| EXP | Each unit earns EXP individually. P1's kills only give EXP to P1's units (unless Mentor aspect). |
| Aspect inventory | Shared (both see the pool). Equipment is assigned per-unit. |
| Relics | Shared effect (applies to both players' units). |
Draft Phase (Co-op)
Before the run begins:
- Both players see shared pool of 6 starting units (3 Key Aspects each, randomized).
- P1 picks first unit. P2 picks second unit. Alternate until each has 3 units.
- Each player assigns starting Aspects to their own units from a shared starting pool.
- Both confirm. Run begins.
4. Cross-Player Synergies
Discovery Model
When a P1 unit and a P2 unit trigger a synergy:
- Popup appears on BOTH players' screens: synergy name + effect.
- Synergy added to both players' Synergy Codex.
- Brief celebration animation.
Synergy Catalog
| P1 Unit Condition | P2 Unit Condition | Proximity Trigger | Synergy Name | Effect |
|---|---|---|---|---|
| Knight Key + Shield Defense | Mage Key + Any Function | Adjacent | Fortress Casting | Mage's spells charge 1 tick faster while adjacent to Knight. |
| Priest Key | Berserker Key | Priest heals Berserker | Righteous Fury | Heal also grants +3 ATK for 2 ticks. Berserker's kills heal Priest for 5 HP. |
| Rogue Key + Assassin Function | Bard Key | Bard uses Encore on Rogue | Duet of Death | Encore grants 2 free attacks instead of 1. |
| Archer Key | Engineer Function | Archer's Volley into Engineer's minefield | Killzone Coordination | All mines in Volley AoE detonate simultaneously. |
| Shaman Key | Warlock Function | Both target same enemy | Curse Chain | Hex + Spreading Curse = curses jump to ALL enemies in range. |
| Monk Key | Chronomancer Function | Chronomancer Hastes Monk | Flurry of Time | Haste 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)
| P1 | P2 | Synergy |
|---|---|---|
| Knight + Alchemist | Engineer | Fortified Position: Engineer constructs within Knight's Fortify aura have +5 HP. |
| Mage + Druid | Shaman | Elemental Storm: Druid terrain effects + Shaman totems = totems gain elemental damage. |
| Rogue + Illusionist | Necromancer | Phantom Legion: Illusionist's Mirror Images + Necromancer's Skeletons = both share buffs. |
| Berserker + Blood Mage | Priest | Blood Communion: Blood Mage sacrifices heal Berserker for double. Priest can redirect damage to Berserker. |
| Bard | Tactician (Utility) | Battle Chorus: Bard's Ballad + Tactician's aura = both effects are global instead of radius-limited. |
| Archer | Scout (Utility) | Coordinated Fire: Scout's reveal + Archer's Sniper Shot = bonus range equal to revealed tiles. |
5. Communication
Ping System
| Ping | Icon | Meaning |
|---|---|---|
| Stack Here | Flag | "Move your units to this tile/area." |
| Focus This Enemy | Crosshair | "Kill this enemy. Priority target." |
| Danger | Exclamation mark | "Don't stand here. Trap/incoming AoE." |
| I've Got This Lane | Shield | "I'll handle this side. You take the other." |
| Heal Request | Heart | "This unit needs healing." |
| Synergy Opportunity | Sparkle | "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):
- 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.
- Aspect drops — Enemies drop aspects normally. Both players see all drops. Decide who equips what. Aspects can be freely traded between players' inventories.
- Gold distribution — Shared pool. Both players see it. No splitting.
- 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 Do | Cannot Do |
|---|---|
| Ping tiles | Control units |
| Use emotes | Take turns |
| Spectate (free camera) | Interact with grid |
| Read enemy telegraphs | Spend gold |
| Discuss strategy with partner | Pick 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
| Feature | API |
|---|---|
| Invite friend | Steam Friends → Game Invite |
| Lobby | Steam Matchmaking (used for invites only, not public matchmaking) |
| Data transfer | Steam Networking P2P (reliable mode) |
| NAT traversal | Handled 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 beginsDisconnection Handling
| Scenario | Result |
|---|---|
| Guest disconnects mid-battle | Host 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-battle | Run lost. Both players return to main menu. (Host owns the save. If host is gone, run is gone.) |
| Disconnect during draft | Return 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
| Element | Solo | Co-op |
|---|---|---|
| Timeline bar | Shows all units | Units color-coded by player. P1 = blue, P2 = orange. |
| Unit info panel | On hover/select | Additional: "Controlled by [Player Name]" badge. |
| Turn indicator | "Your Turn" / "Enemy Phase" | "Player 1's Turn" (blue pulse) / "Player 2's Turn" (orange pulse) |
| Undo button | Single-move undo | Single-move undo (each player undoes their own). |
| Target tooltip | Damage preview | + Synergy opportunity indicator (sparkle icon if synergy possible) |
| Ping display | N/A | Ping icons on grid, fade after 3 seconds |
| Partner's actions | N/A | Partner's planned move shown as translucent preview (optional, togglable) |
10. Scope & Budget
Development Effort
| Feature | Effort | Notes |
|---|---|---|
| Turn-passing system | Low | Already turn-based. Adding a "pass control" state machine. |
| Second player camera + input | Medium | Camera already exists. Adding second camera + input routing. |
| Ping/emote system | Low–Medium | UI overlay + input binding. Emotes are text strings. |
| Cross-player synergy resolver | Medium | New combinatorics in battle engine. Synergy table data structure. |
| Shared roguelike draft UI | Medium | New UI screens. Shared state synchronization. |
| Ghost mode | Low | State flag + disabling input. |
| Steamworks integration | Low–Medium | Steamworks.NET wrapper. Invite flow. |
| Shared reward screens | Medium | UI work. Discussion-based selection (no voting logic needed). |
| Total co-op overhead | ~15–20% additional dev time on top of solo | Matches master GDD estimate. |
Risk Assessment
| Risk | Severity | Mitigation |
|---|---|---|
| Cross-player synergy balance | Medium | Synergies are bonuses, not requirements. Co-op is playable without them. |
| Networking bugs | Low | Turn-passing is simple. State sync is serializable. |
| UI clutter with 8 units | Medium | Larger timeline bar. Color-coding. Good default zoom. |
| Social friction (disagreements on picks) | Low | Discussion-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
- 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.)
- 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.)
- 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.)
- 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.
- 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?
- 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