198 lines
6.8 KiB
Markdown
198 lines
6.8 KiB
Markdown
# slaywithfriends roadmap
|
|
|
|
overall progress tracker. references existing plans and design docs.
|
|
|
|
key docs:
|
|
- docs/plans/2026-02-23-single-combat-plan.md (implementation plan)
|
|
- docs/plans/2026-02-23-single-combat-design.md (design decisions)
|
|
- docs/rules-web-mvp.md (what we're building toward)
|
|
- docs/rules-canon.md (board game source of truth)
|
|
- docs/rules-web-delta.md (known differences)
|
|
|
|
---
|
|
|
|
## phase 0: foundation [done]
|
|
|
|
project scaffold, core engine, first playable encounter.
|
|
|
|
- [x] bun + biome project setup
|
|
- [x] card data module (cards.js, starter deck)
|
|
- [x] state module (combat init, draw, play, end turn)
|
|
- [x] effect resolver (hit, block, status, draw, lose_hp)
|
|
- [x] die roll + enemy action resolver
|
|
- [x] combat orchestration (turn flow, win/loss)
|
|
- [x] html shell + css layout + dev server
|
|
- [x] render module (state to dom)
|
|
- [x] main module (event handling, game loop)
|
|
- [x] ironclad starter card image mapping
|
|
|
|
## phase 1: data pipeline [in progress]
|
|
|
|
extract all board game data into structured json.
|
|
|
|
branch: data-pipeline-merge-and-assets
|
|
- [x] extract ironclad cards from board game sheets
|
|
- [x] extract silent cards
|
|
- [x] extract defect cards
|
|
- [ ] extract watcher cards (in progress - 8/~120 done)
|
|
- [x] extract colorless cards
|
|
- [x] merge per-character files into unified cards.json (410 cards)
|
|
- [x] map card images: ironclad (118), silent (108), defect (106), watcher (8)
|
|
- [x] extract enemy data (57 enemies across acts 1-4)
|
|
- [x] switch cards.js to load full cards.json
|
|
- [x] add data validation tests (cards + enemies schema)
|
|
- [ ] 70 cards still missing image paths (28 ironclad, 20 silent, 22 defect)
|
|
- [ ] potion data extraction
|
|
- [ ] relic data extraction
|
|
|
|
## phase 2: multiplayer state model [in progress]
|
|
|
|
restructure engine for multiple players and enemies.
|
|
|
|
branch: engine-multiplayer-state
|
|
- [x] indexed players[] and enemies[] arrays
|
|
- [x] backward-compat aliases for single-player code
|
|
- [x] getEntity/setEntity abstraction in effects
|
|
- [x] per-player draw/play/endTurn
|
|
- [x] per-enemy combat resolution
|
|
- [x] fix draw effect player index bug
|
|
- [x] fix lose_hp semantics (damages caster)
|
|
- [x] playersReady duplicate guard
|
|
- [x] refactor playCard to options-based API
|
|
- [x] enemy instanceId for multi-enemy encounters
|
|
- [ ] enemy targeting logic (currently always player 0)
|
|
- [ ] turn order for simultaneous play
|
|
|
|
## phase 3: board game assets + ui
|
|
|
|
use board game visual assets for an authentic feel.
|
|
|
|
### icons (manual extraction needed - jared doing this)
|
|
the Reference.png has all the game icons. plan:
|
|
- [ ] extract individual icons from reference card (jared, manual)
|
|
- [ ] try svg versions of icons
|
|
- [ ] evaluate emoji as slottable icon alternatives
|
|
- [ ] text version of reference card for image-free mode
|
|
(see docs/reference.txt)
|
|
|
|
### board game art for ui
|
|
StS_BG_assets/ has a wealth of material:
|
|
- [ ] player boards (Player_Board_Ironclad.png etc) - character select / stats
|
|
- [ ] playmats (Playmat.jpg, per-character variants) - combat background
|
|
- [ ] boss art (front + back, normal + A9 variants) - encounter screens
|
|
- [ ] enemy/elite card sheets - could crop individual enemy art
|
|
- [ ] map tiles + tokens - for map navigation screen
|
|
- [ ] hp tracker (HP_Tracker.png) - compact tens/ones component
|
|
- [ ] status tokens (Token_Vulnerable.png etc) - inline status display
|
|
- [ ] potion sheet (Potions.png) - potion inventory
|
|
- [ ] relic sheets (Relics_Common.png, Relics_Boss.png)
|
|
- [ ] shop image (Shop.png) - merchant screen
|
|
- [ ] card back (Cards_Back.png) - draw pile / face-down cards
|
|
- [ ] mini character portraits (Mini_Ironclad.png etc) - player indicators
|
|
|
|
### card images
|
|
- [ ] decide: crop individual cards from sheets vs use video game card images
|
|
- [ ] or: combine all into single spritesheet for efficient loading
|
|
- [ ] image-free fallback mode (text + icons only)
|
|
|
|
## phase 4: full combat
|
|
|
|
complete combat mechanics per rules-web-mvp.md.
|
|
|
|
- [ ] all keywords: exhaust, ethereal, retain, scry, unplayable
|
|
- [ ] area of effect (single row + boss)
|
|
- [ ] multi-hit with correct token consumption
|
|
- [ ] poison mechanic (max 30 across all enemies)
|
|
- [ ] start-of-turn / end-of-turn trigger system
|
|
- [ ] status cards (dazed, slime, burn, wound, void)
|
|
- [ ] potion system (max 3, use/discard flow)
|
|
- [ ] combat log (scrollable history of actions)
|
|
|
|
## phase 5: character mechanics
|
|
|
|
each character's unique systems.
|
|
|
|
- [ ] ironclad: strength interactions, heal 1 hp end of combat
|
|
- [ ] silent: shiv generation, poison limits/behavior
|
|
- [ ] defect: orb channel/end-of-turn/evoke
|
|
- [ ] watcher: neutral/calm/wrath stances + miracle tokens
|
|
|
|
## phase 6: map + progression
|
|
|
|
between-combat game flow.
|
|
|
|
- [ ] map generation (acts 1-3 structure)
|
|
- [ ] room types: encounter, elite, event, campfire, treasure, merchant, boss
|
|
- [ ] deck building / card reward selection
|
|
- [ ] upgraded card rewards, rare rewards
|
|
- [ ] campfire: rest (heal) / smith (upgrade)
|
|
- [ ] merchant: buy cards, remove cards, buy potions/relics
|
|
- [ ] events (act-specific event decks)
|
|
- [ ] relic system
|
|
- [ ] act transitions
|
|
- [ ] neow bonuses (run start)
|
|
|
|
## phase 7: multiplayer
|
|
|
|
the "with friends" part.
|
|
|
|
- [ ] websocket server (bun serve)
|
|
- [ ] lobby/room creation
|
|
- [ ] simultaneous play during player turn
|
|
- [ ] row-based enemy targeting across players
|
|
- [ ] shared combat state sync
|
|
- [ ] reconnection handling
|
|
- [ ] spectator mode
|
|
|
|
## phase 8: polish
|
|
|
|
- [ ] animations (card play, damage, block, status)
|
|
- [ ] sound effects
|
|
- [ ] mobile touch optimization
|
|
- [ ] save/load (persist run state)
|
|
- [ ] ascension levels (A1-A20)
|
|
- [ ] act 4 (corrupt heart)
|
|
- [ ] daily climb mode
|
|
|
|
---
|
|
|
|
## asset inventory (StS_BG_assets/)
|
|
|
|
game state / reference:
|
|
- Reference.png - combat flow + icon glossary + map nodes
|
|
- HP_Tracker.png - tens/ones hp dial
|
|
- Ascension_Reference.png - ascension level modifiers
|
|
- Kindling.png / Kindling_Back.png - campfire resource
|
|
|
|
per-character:
|
|
- Player_Board_{character}.png - stats/ability board
|
|
- Playmat_{character}.png (+ Playmat.jpg generic)
|
|
- Mini_{character}.png - small portrait
|
|
- Cards_{character}.png / _Rare.png / _Start.png + upgraded variants
|
|
|
|
enemies/bosses:
|
|
- Enemies_Act{1-3}.png + _Back.png (+ Act1_First_Back.png)
|
|
- Elites_Act{1-3}.png + _Back.png
|
|
- Boss_Act{1-4}_{name}.png + variants (A9, Back, Summon)
|
|
- Summons_Act{1-3}.png + _Back.png
|
|
|
|
map:
|
|
- Map.png, Map_Act{1-3}.png
|
|
- Map_Token_{type}.png (Back, Camp, Elite, Empty, Encounter, Enemy, Shop)
|
|
|
|
tokens:
|
|
- Token_Block_5.png, Token_Gold_{1,5}.png
|
|
- Token_Poison.png, Token_Poison_{5,10}.png
|
|
- Token_Strength.png, Token_Strength_5.png
|
|
- Token_Vulnerable.png, Token_Weak.png
|
|
- Token_Shield.png, Token_Shiv.png, Token_Miracle.png
|
|
- Status_Dazed.png, Status_Slime_Burn.png
|
|
|
|
other:
|
|
- Cards_Back.png, Cards_Colorless.png + upgraded
|
|
- Curse.png, Curse_A5.png
|
|
- Events.png, Events_Act{1-3}.png + _Back.png
|
|
- Neows_Blessing.png + _Back.png
|
|
- Potions.png + _Back.png
|
|
- Relics_Common.png, Relics_Boss.png + _Back variants
|
|
- Shop.png
|