Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A1dxvtsZx8NE9fwjXUNDBr
La Leggenda del Regolo
Avventura grafica punta-e-clicca ambientata a San Piero a Sieve, nella settimana del Palio della Fortezza del 2007. Il palio, il quadro dipinto dai ragazzi delle medie, è sparito: un ragazzo del paese deve ritrovarlo prima della festa.
Al Lele, che mi ha fatto conoscere Monkey Island.
Progetto in fase di ideazione: il documento di progetto è in docs/PROGETTO.md.
Per ora c'è un prototipo del motore con due scene di prova e grafica provvisoria.
Generare sfondi dalle fotografie
Il generatore Python è tools/genera.py; istruzioni e prompt delle due nuove vedute
sono descritti in docs/GENERAZIONE_SFONDI.md.
Lavora sulle foto di San Piero a Sieve, conserva i master a 1536×864 e permette
di prepararne copie a 640×360 per il gioco.
python3 tools/genera.py --dry-run # elenco delle foto, nessuna API e nessun file scritto
Voci dei personaggi
Ogni battuta ha la sua voce, generata con XTTS-v2 sulla GPU (licenza solo non commerciale): un mp3 per battuta in
assets/voices/, la voce di ogni personaggio in tools/voci.json (castello e leone con altezza ed eco proprie).
make voci # solo le battute nuove o cambiate; i file che non servono più si tolgono
make voci RIFAI='Ci sei?' # ritenta una battuta storpiata (XTTS è casuale: di solito il secondo tentativo va)
make voci-elenco # cosa manca, senza generare
Il test tests/voices.test.mjs fallisce se una battuta non ha la sua voce: dopo aver cambiato un testo, make voci.
Giocare in locale
python3 -m http.server 8000 # poi http://localhost:8000
Clic = azione più sensata (parla, guarda, vai); clic destro o pressione lunga = guarda; un verbo scelto vale per il clic successivo. Spazio salta la battuta, i numeri scelgono nel dialogo, Esc annulla il verbo.
Il libro dell'oratorio si apre e si sfoglia con clic o tocco; Esc lo chiude. Nella fessura della Fortezza, la torcia segue mouse o dito (anche trascinando): si cercano i dettagli tenendo brevemente la luce su di essi. Si possono usare anche le frecce, oppure Invio per cercare il prossimo dettaglio. «Torna fuori» permette di riprovare; dopo il ritrovamento, «Continua» conclude il capitolo. Il volume dei suoni ambientali e del fruscio delle pagine si regola in Pausa → Ambiente ed effetti.
Al biliardo del Circolo 4 Maggio, clic o tocco fissa la mira; regola la forza e premi Tira. Le frecce ← → affinano la direzione, con Maiusc per passi ancora più piccoli. La guida usa la stessa fisica del tiro: mostra sponde, primo contatto e direzioni iniziali dopo l'urto (azzurro per l'avversaria, giallo per la propria biglia). Tenendo premuto sul tavolo o Spazio si carica il colpo, con la mira bloccata.
In Docker
make up # http://localhost:8080 (DOCKER_PORT=… per cambiarla)
make down
Struttura
src/engine/: motore senza storia (game.jslogica e coda delle azioni,geometry.jsarea calpestabile e percorsi,command.jsverbi e clic,render.jsdisegno,storage.jssalvataggio);src/story/: la storia come dati (story.js) e la sua soluzione completa (solution.js);src/main.js: collega tutto alla pagina;assets/scenes/: sfondi a 640×360, preparati contools/prepare_background.pydagli originali inassets/raw/.assets/characters/: fogli dei personaggi, tagliati contools/slice_sprites.pye allineati contools/prepare_character.py(istruzioni in testa al file).
Test
npm test # logica, storia coerente, soluzione percorsa dall'inizio alla fine
npm install && npx playwright install chromium-headless-shell
npm run browser # partita completa con clic veri in Chromium, salvataggio, telefono
npm run browser -- --media-only # libro, torcia e audio: controllo mirato desktop/telefono
npm run browser:biliardo # mira e tiro con mouse/touch, desktop e telefono; schermate in /tmp/regolo-biliardo