# Gardens of the Moon — prologue study

An assembled, fully scripted Godot cutscene for a private learning project. All artwork and staging are candidates awaiting review.

Latest iteration: **MOTION_REVISION.md** documents the closer wall positions, revised walks, distinct fiddle-soldier run and fast typewriter reveal.

Start with **REVIEW_START_HERE.md** or open **review.html** in a browser. The review page contains a silent video, cast/emotion candidates, animated sprite previews, map/UI alternatives, fidelity notes and exact generation prompts.

## Run

Run `./run.sh`, or import `project.godot` in the locally installed **Godot 4.7.2** and press **F5**. No Python packages, API key, Aseprite or additional game plugins are needed to play this candidate build.

The main scene is `scenes/prologue.tscn`. The opening panorama waits for Space, Enter or a click before fading into the top-down tiled battlement. Walking, facing, tiptoe, entrances, exits and smoke are scripted. There are no player movement controls.

## Controls

| Key | Action |
|---|---|
| Space / Enter / left click | Confirm opening; while text types, fill current page instantly; next press continues |
| Hide button in dialogue | Hide dialogue and portrait; click / Enter / Space restores them without advancing |
| A | Toggle autoplay; initially off |
| F2 | Pause and open cast / animation gallery |
| B | Pause and read current original book paragraph |
| G | Show zero-based tile coordinates |
| L | Switch large / compact bust layout |
| M | Switch quiet / dense floor tiles |
| H | Hide / show review controls bar |
| F11 | Fullscreen |
| R | Replay from the beginning |
| Esc | Close gallery / book reference |

Gallery: **1–4** select a speaker, **Tab** changes expression, **arrows** change facing, **V** switches the fiddle soldier’s walk/run, **5** shows the guards. Return with F2 or Esc.

The dialogue **Hide** button uncovers the scene. While hidden, typing, scrolling and Auto pause. The first left click, Enter or Space only restores the boxes; it never reveals or advances text.

Dialogue uses a small bottom-right triangle when the current text is complete. On confirmation, the next page types below the previous lines and scrolls them upward. Text resets for each new utterance. Auto starts off; enabling it does not dismiss the opening artwork. Explicit `--smoke-test` and `--review-film` runs retain automatic pacing.

## Working resolution

- Canvas: **640×360**, nearest-neighbour integer scaling. Full HD uses exact **3×** enlargement.
- Tiles: **32×32**. Map positions are authored pixel foot coordinates, not grid-locked movement.
- Cast: **48×64** frame cells, **192×256** four-direction walk atlases for the four speakers; the unchanged acolyte atlas is 144×256. Separate stable idle strips are 48×256. Child, adolescent and adult body heights differ inside that common frame.
- Busts: **160×192**. The compact alternative fits the same image inside **128×160** without distorting its aspect ratio.

These are exercised production candidates, not a user-approved style lock. Generated source images are larger than runtime assets and require slicing, scaling and cleanup; see ART_STYLE.md and art/ASSET_STATUS.md.

## Project structure

| Folder / file | Purpose |
|---|---|
| `art/source/` | Generated masters, exact prompts and slicing metadata |
| `art/portraits/`, `sprites/`, `tiles/`, `props/` | Processed game candidates |
| `art/previews/` | Animation GIFs, Godot screenshots and 1080p review film |
| `art/CANDIDATE_MANIFEST.json` | Selected assets, source provenance and hashes |
| `content/prologue_source.txt` | User-supplied local book text |
| `content/prologue.json` | Compiled dialogue and visual staging cues |
| `content/characters.json` | Selected sprite, portrait and pose paths |
| `content/prologue_map.json` | Tile layout and staging-coordinate reference |
| `scripts/` | Scene runner, actor animation, dialogue and coordinate overlay |
| `tools/` | Text compilation, read-only analysis and Aseprite export helpers |

The generic causeway demo (`scenes/main.tscn`) and single-frame scale comparison (`scenes/art_review.tscn`) remain historical labs. Neither is the default scene.

## Render evidence and limits

Motion revision 2 was rendered through all 48 dialogue paragraphs at 60 fps (7652 frames, 127.53 seconds). Typewriter reveal is visible in the film. Current logs are under review-evidence/motion-v2/. No new automated tests were added or run for this revision.


The earlier candidate build’s automated Godot run completed **108 cues**, **48 speaking paragraphs** and **22 engine captures**. A separate validator confirmed **58 exact quoted fragments**, in source order, plus current image/frame contracts. The review film completed all 48 dialogue paragraphs at accelerated pacing.

The book guides decisions, including later appearance descriptions. Architecture, unspecified clothing colours, spatial blocking and timing remain interpretations. Read the review index for known visual defects. Sound, music, standalone export packaging and final art polish remain future work.
