Files
org_web/docs/princess-lima-v2-implementation.md
gitea-actions 6066f486de
All checks were successful
Build Org Website / build (push) Successful in 1m2s
Refine Princess Lima for v2 presentation
2026-07-30 15:00:45 +01:00

73 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Princess Lima v2 implementation
## Architecture
The rebuild keeps the existing four-chapter story, cast, quest consequences,
keyboard-first accessibility, Org publishing entry point, and v1 save. It
replaces the static regional backgrounds and single-scene prototype with:
- Boot, preload, title/setup, cinematic intro, region, boss, and ending flows.
- Versioned data contracts for maps, actors, enemies, items, quests, dialogue,
cutscenes, assets, interactions, and saves.
- Focused map, state, input-lock, combat, AI, dialogue, camera, audio, save, and
accessibility controllers.
- Nine committed Tiled JSON regions with collision, navigation, interaction,
transition, spawn, camera, audio, secret, and state layers.
- EasyStar.js 0.4.4 for obstacle-aware paths; Phaser remains the renderer,
input, physics, animation, timeline, camera, and effects engine.
Only `/play/rpg.html` loads the game runtime and its locally hosted assets.
## Art direction
The final field style uses 32px terrain, 48×64 four-direction actors, nearest
neighbour scaling, dark restrained outlines, warm upper-left lighting, compact
shadows, parchment and aged-metal DOM UI, serif display faces, and sans-serif
body copy. Regional palettes distinguish the village, woods, ruins, mountain,
camp, fortress, throne, and dawn chamber.
`tools/generate-princess-lima-v2-assets.py` normalizes the field atlas, effects,
palette, transparency, and tile source into deterministic PNG assets. The
portrait contact sheet began as original ImageGen source art and was inspected,
cropped through CSS atlas coordinates, and kept free of generated text. It is
presentation art only and is never used as collision geometry.
## Play and story systems
The complete opening-to-rescue arc includes:
- Broken Village production slice, eight enemy roles, four multi-phase bosses,
optional discoveries, puzzles, prisoners, fortress defences, and three
approach consequences.
- Acceleration movement, normalized diagonals, directional animation, two-hit
combo, charged strike, block, active-frame hitboxes, one hit per swing,
knockback, recovery, particles, and layered local audio.
- Data-driven conversations with expressions, choices, conditional effects,
history, typing controls, camera framing, background focus treatment, and
reliable input/focus restoration.
- A skippable, replayable, pausable, narrated introduction with subtitles,
title reveal, muted play, and reduced-motion timing.
- Resolved-state flags for all nine regions and an ending that reflects rescued
allies and preparation choices.
## Saves and accessibility
New progress uses `zxh_princess_lima_rpg_v2`. The v1 key remains untouched.
Migration validates identity, appearance, chapter, quests, inventory,
equipment, bosses, intro preference, and settings; rejects unknown IDs;
reconstructs derived statistics; and restores to a named safe spawn.
Menus and dialogue remain DOM-backed. They provide keyboard focus, an
`aria-live` spoken-line mirror, history, instant completion, choice navigation,
subtitles, narration toggle, text speed, high contrast, reduced motion,
particles, lighting, shake, blur, and effects-quality controls. Canvas and
blur-disabled modes retain dimming and actor depth separation.
## Validation
Automated coverage lives in `tests/princess-lima-*.test.cjs` and checks schemas,
map contracts and reachability, dialogue effects, cutscene cleanup, input
restoration, quests, movement/combat phases, hitbox rules, AI transitions,
boss phases, v1 migration, invalid-data recovery, and accessibility settings.
Publishing remains covered by the Emacs and clean Org-build suites.