Bird Squad is a Phaser/Vite foundation build for a rooftop card battler about a streetwise bird crew, singleton deckbuilding, and risky Molt turns.
The playable build supports desktop browsers and landscape tablets with a viewport of at least 1000x560 CSS pixels. Portrait and compact phone displays show a branded platform gate and pause the Phaser loop without discarding the current run. Rotating or returning to a supported display resumes the same game state.
Open Flock Record → Flight Folios → Flight Lab, then choose Practice (U on keyboard, Select on controller). An owned, legal Folio with an unlocked Leader can play the real Tier 0 route, battles, rewards, and Preens even while another flight is saved. Replay uses the original Folio and seed.
Practice never writes browser storage: the active flight, collection, records, unlocks, and backup journals stay untouched. Main Menu or browser reload ends practice. Settings changed during practice are also not written to storage; reload discards those temporary preferences. Fly This Folio remains the separate, progression-saving action and cannot overwrite an active flight.
Start with docs/README.md. It owns the documentation map, canonical source
rules, reading paths, and guidance for where new decisions should live.
The short version:
- product direction:
docs/game/game-design.md - combat/cards/Molt:
docs/game/core-gameplay-spec.md - route/run systems:
docs/game/run-design-spec.md - first playable slice:
docs/game/alpha-run-spec.md - runtime architecture:
docs/project/runtime-architecture.md - visual identity:
docs/art/art-bible.md - runtime data:
data/game/ - card identity data:
data/cards/ - progress and handoff notes:
docs/project/progress.md
| Path | Ownership |
|---|---|
src/ |
Runtime TypeScript and CSS for the playable build. |
assets/splash/ |
Splash and promotional images used by the menu or presentation. |
.generated/ |
Ignored generated/source masters for imagegen, concept art, screenshots, and raw art pipeline outputs. |
assets/runtime/ |
Runtime asset manifests and optimized derived card, enemy, and backdrop targets. |
assets/concept-art/backdrops/, assets/concept-art/route-events/, assets/concept-art/route-event-centerpieces/ |
Current editable world-demo source art; exact allowed generations are defined by docs/art/world-asset-contract.md. |
data/cards/arcana/ |
Production data for Legend and Crew card identities. |
data/cards/reversals/ |
Molt/reversal data layered over the card set. |
data/game/ |
Runtime-ready cards, enemies, encounters, route maps, items, economy, and district content. |
docs/game/ |
Playable design, core gameplay, run rules, and Alpha scope. |
docs/art/ |
Art bible, prompt rules, species/style/suit direction. |
docs/project/ |
Runtime architecture, progress log, performance notes, and repo stewardship notes. |
docs/README.md |
Documentation index and ownership guide. |
tools/ |
Local validation scripts, reference material, and future project tooling. Not runtime code. |
tests/ |
Playwright smoke tests driven by the text-state harness. |
.artifacts/test/ |
Ignored generated browser-test captures and action payloads. |
.artifacts/build/ |
Ignored production build output. |
npm run dev
npm run build
npm run validate
npm run validate:docs
npm run validate:runtime
npm run test:e2e
npm run preview- Put gameplay implementation in
src/. - Put durable design decisions in
docs/game/ordocs/art/. - Put project progress and handoff notes in
docs/project/. - Put card/source data in
data/cards/and runtime-ready game data indata/game/, not in docs. - Keep card definitions canonical in one place. Docs may summarize card data, but should not carry forked prototype deck lists or duplicate card maps.
- Run
npm run validateafter changing card data, runtime game data, art maps, or mechanics docs. - Put generated screenshots, Playwright states, and scratch outputs in
.artifacts/test/. - Keep
.artifacts/,output/,dist/, and accidental root test output out of source control.