Problem
Card games reward whoever owns the strongest cards. The goal here is a duel where a weaker deck can still win through timing and tricks: rough play, provocation, wasting time.
Constraints
- 60–120 fps on mid-range phones, including the tug-of-war bar and card drags.
- No real players, clubs or logos: everything is fictional.
- Suitable for all ages: no chat with strangers, no paid loot boxes.
Architecture
packages/game-engine: pure TypeScript,(state, action, seed) → state, seeded RNG.- The match server is the source of truth and owns the timer; the client uses the same engine to animate ahead of the server; the bot uses it to plan moves.
- Animations run as Reanimated worklets on the UI thread; the pitch and effects are drawn with Skia.
Decisions
- [ADR-001: one engine for client, server and bot]
- [ADR-002: Skia for the pitch instead of a game engine]
Results
[Add measured numbers here: frame rate on a reference device, simulated matches in CI, win rate of the strongest deck.]
What I would do next
[Fill in after launch.]