spirit-painter
@jeffy24

spirit-painter

Trace daily spirit runes with resumable runs, avatars, and shared best-run records.

About this tile

Spirit Painter is an original Poe mini game inspired by rune and spirit combat mini games. Drag through glowing rune points in order, complete daily shared-grove seals to summon spirits, protect scarce ink, and chain streak bonuses across an eight-level campaign. Runs are resumable, social presence shows other painters' Poe names and avatars, and best-run records sync across everyone in the app instance. Artwork, copy, levels, scoring, and presentation are original.

What you can do

  • Paint spirit seals across an 8-level deterministic daily shared-grove campaign.
  • Drag through glowing rune nodes directly on the main play surface.
  • Resume the current run after closing/reopening the app.
  • See active painters with display names and profile images in the shared grove strip.
  • Open the top-right help modal for rules and public records.
  • Publish public best-run records through synced-store.

Implementation

Core rules live in logic/game.ts and multiplayer presentation helpers live in logic/multiplayer.ts; both are tested without mounting UI. The UI renders derived state, translates taps into explicit logic actions, persists each user's current run with synced-store, and keeps secondary actions behind modals.

The multiplayer model is async shared challenge play: everyone traces the same deterministic daily grove independently, each user's active run is keyed by their Poe user id to avoid state trampling, and public best-run records/active painter presence make the instance social without turning the precision tracing mechanic into a chaotic shared canvas. The app reads $userInfo for display names/profile images and notifies activity when a best run lands.

Built using Codex and OpenSpec in ~/mobile-game-clones/games/spirit-painter.