Example games
The repository ships fourteen complete games under
docs/examples/games/. Each
was written as a dogfood project against an earlier Lute release by an agent playing a different
kind of writer, then migrated to the current language. Each is its own project — manifest, schemas,
scenes, lore, quests, plugins, tests/ and plays/ — with a README that names the features it
exercises, the file to look at for each, and the commands to run it.
CI checks every game with lute check --project <DIR> --deny-warnings and runs its tests and plays, so the
games stay clean as the language moves. Where a game means something a warning would otherwise
question — a permanent ending, a latching spentBy, a role name two cast entries share — it says so
in the spelling Lute provides for that intent, never with a suppression.
Where to start: tea-hollin
is the smallest, written the way the getting-started pages teach.
Coming from Ink or Yarn, read
ledger beside
Coming from Ink or Yarn.
monster-league
shows a project at scale.
| Game | Genre | What it shows |
|---|---|---|
| The Ashen Stair | roguelike hub (Hades-like) | the run boundary and prev.run.*, engine-owned state and reserved relations, reward kinds, a season, per-NPC send-offs with for= |
| The Drowned Crown | roguelike (Hades-like) | run and user tiers, a permanent ending (terminal: { when, persists: true }), beat ladders on the hub visit, occasion payloads |
| Ember Road | party RPG chapter | companion approval and faction reputation, a day clock of nights on the road, a ::check dice bridge, battle payloads |
| Harbor Days | live-ops life sim | a finite clock with a week, a festival season, spend periods, spentBy beside once:, directive effects, per-villager birthdays |
| Hollow Ward | survival horror / escape | rules as the door graph with raisedWhen:, blocking bridges, entries, terminal fates, a large test suite |
| Lamplight | detective mystery / time loop | facts and stratified Datalog rules, user-tier evidence surviving each loop, a casebook series:, quests from sub-quests |
| Lantern Academy | otome / dating sim with NG+ | route locks as rules, raiseAtStart: true, user-tier cleared facts across terms, date and exam bridges |
| The Lighthouse Keeper’s Ledger | interactive fiction (Ink port) | Ink mapped to Lute: a hub with <return>, visit counters, terminal: as -> END; the Ink source beside it |
| Skerry Rock | deduction mystery (Obra Dinn-like) | stratified rules with excludes:, conclusions derived rather than asserted, a clock with raiseAtStart, an inquest chapter chain |
| Monster League | creature-collector RPG | scale: five writers, per-area schemas, 18 occasions, 151 species as facts, a template used ~160 times, sharedName: true |
| Seven Days in Marrow Bay | day-clock visual novel | deadlines as clock positions, a derived timetable relation, newRun and prev.run.*, three terminal endings |
| Starfall | live-service gacha (story layer) | three seasons with reruns, the content calendar as defs, rarity sub-kinds, summon payloads, share= |
| Summer Station | visual novel / dating sim on a clock | schedules as rules, a select: sequence routine plus events, a storm season, sub-kinds with per: state |
| Tea at Hollin Street | cozy mystery | the smallest: one chapter chain, a branch and a hub, a one-day clock, a quest with a deadline |
Run one from a checkout of the repository:
lute check --project docs/examples/games/tea-hollin --deny-warningslute test --project docs/examples/games/tea-hollinlute play --project docs/examples/games/tea-hollin --script docs/examples/games/tea-hollin/plays/magpie.play.yaml