# Sour Apples development journal

Run `npm run dev -- --port 5174`, then open http://localhost:5174/progress/ . Play at http://localhost:5174/ . The gallery checks for new images while open.

## Current build — September 5, 2026

**The combat-focused maze revision is playable.** Classroom, Hallway and Library now use narrow, connected corridors with escape loops. Movement commits one full square per tap, and the last Sour Apple opens the exit. The supply trail is gone; all pickups, including chalk, share a three-item rotating limit. The gallery shows the latest screenshots with links to the earlier room layouts. [Revision details](maze-update.md).

| Milestone | Status | Evidence |
| --- | --- | --- |
| Simulation and level design | Complete | Physics, combat, five enemy behaviors, rotating pickups, lives, scoring and exit progression |
| Raster direction studies | Complete; A chosen by user | Reference sheet and four candidate PNGs |
| Production raster set | Integrated | Five atlases, title scene/logo, HUD/button panels and derived icons |
| Browser controls and menus | Integrated | Play, help, scores, unlocked levels, keyboard, pause, restart, sound and fullscreen |
| Automated validation | 54 tests passing | Maze topology, physical clearance, grid steps, enemy pursuit, timed bonuses, combat, saves and raster validation |
| Browser validation | Inspected in Chromium | All three rooms, quick Space taps, toolbar focus, help/scores, pause/restart, fullscreen and sound controls |
| Responsive layout | Inspected | 1366 × 900 gameplay; title layouts at 1440, 1024, 768 and 390 pixels wide |
| Static distribution | Ready via `npm run build` | `dist/`, Netlify/Vercel settings and root README |

Screenshots are in `public/assets/source/previews/`. They show the actual running game, not concept mockups. [Validation results](validation.md) record the final test and packaged-browser checks. Repeatable browser scripts live in `output/playwright/`. Tests cover level completion and final victory; browser checks cover real controls and each room's rendering.

## Changes made during validation

- Moved all seven angled reflectors to walkable corridor turns; actors cross them and chalk banks around the corner.
- Restored a full visible stride during held movement, synchronized to distance instead of wall-clock time.

- Lightened all walkable floors to neutral gray and verified their pixel brightness separates them from dark brick barriers.
- Centered the teacher within one grid square, including all sixteen walk/idle/throw poses.
- Replaced the open rooms with three original 27 × 15 corridor mazes. The latest pass removes supply trails and starts 6/8/10 Sour Apples.
- Added full-square taps, held movement, queued turns and grid-aligned enemy routing.
- Capped all pickups at three, including chalk, with staggered appearance and fading. Chalk returns at least every twelve seconds; collected golden apples retire for the level.
- Checked every walkable bank corner with a real ricochet hit and every corridor for physical clearance.
- Cleared pending turns on pause and old travel directions at rest.
- Exposed the Classroom blackboard's reflective face below the brick boundary and added a real-level bounce regression.
- Returned keyboard focus to the game after toolbar actions.
- Preserved quick Space taps between simulation ticks, without changing held-fire cooldowns.
- Checked actual alpha pixels; added transparent button gutters and corrected atlas crop boundaries.
- Reduced floor contrast and fitted the full cabinet into a 900-pixel-tall desktop viewport.

## Artwork trail

- `public/assets/source/reference/`: shared palette, lighting, proportions, materials and UI reference.
- `public/assets/source/candidates/`: A, B, C and D scene/character studies.
- `public/assets/source/production/`: unchanged generated PNG sources for selected A.
- `public/assets/runtime/`: normalized transparent atlases, panels, icons and optimized WebP hero.
- `assets/manifest.json`: source prompts, dimensions, paths, atlas frames and checksums.

Generated opaque mattes were removed during preparation; runtime transparency is tested. Raster image composition supplies all game art. Dynamic text and tiny functional toolbar glyphs remain native UI.

See [asset-plan.md](asset-plan.md) for filenames, dimensions and placement. Later school locations and additional special chalk types remain future expansion beyond this initial three-level release.
