← all games

adventure-codex-unknown — GAME.md

# The Last Light Is Listening

## Current state

Top-down adventure and mystery vignette. The player investigates a lighthouse village where spoken rumors alter physical details of the world. The complete quest, optional side trail, journal, stateful dialogue, code-drawn visuals, procedural sound, and Inspector bridge are implemented.

## Scenes

- `GameScene`: one continuous world containing five connected zones: Ferry Steps, Glasshouse Lane, Tide Archive, Bell Court, and the Lantern Room. Registers the player, camera, targets, atmosphere, screen effects, UI, and `adventure` Inspector extension.

## Entity types

- `player`: code-drawn top-down character with normalized eight-direction movement, footsteps, trail particles, and gate collision.
- `target-*`: four named villagers, five curiosity props, three paper boats, the boat basin, the listening gate, and the Memory Loom.
- `painted-world` and `foreground-details`: layered architecture, water, plants, paving, and room details.
- `mist-mote-*` and `living-light-*`: environmental motion and pulsing light with no gameplay function.
- `game-state`: serializes the full quest and UI state for the Inspector.
- `game-ui`: YAGE React UI root for the HUD, dialogue, journal, toasts, prompts, zone titles, choices, and ending.

## Input actions

- Move: `WASD` or arrow keys.
- Interact or advance dialogue: `E`, `Space`, or `Enter`.
- Choose dialogue: `1`, `2`, or the arrow keys plus `Enter`.
- Close dialogue: `Escape`.
- Toggle journal: `J`.

## Assets

- No shipped image or audio asset is used.
- Visuals are drawn with YAGE renderer graphics.
- Audio is synthesized in the browser with Web Audio.

## Game state

- Main quest stage and chosen rumor.
- Collected clues: Keeper's Lens, Tide Cipher, and Bell Memory.
- Optional side quest: return three paper boats to the ferryman's basin.
- Inspected curiosity props.
- Per-NPC conversation state.

## Save payload

No persistence. One complete playthrough lasts about 8–12 minutes.

## Inspector extension

`window.__yage__.inspector.getExtension("adventure")` exposes `getState`, `getTargetIds`, `teleport`, `interactWith`, `choose`, `getPlayerPosition`, and `getPlayerMovement` for deterministic verification.