Compare commits

..
3 Commits
Author SHA1 Message Date
manzolo 1205192e8a Versione 0.1.30 2026-10-28 13:16:23 +01:00
manzoloandClaude Opus 5.5 aa2f547856 La salita dei cipressi fra la casa del maestro Bacci e il viale del Trebbio (Andrea)
Sfondo di Codex dalla foto di Andrea: la strada bianca in salita col muretto, il cartello e lassù i cipressi che
spuntano. Alle spalle la casa del maestro Bacci, in fondo il viale dei cipressi, che non sono più collegati
direttamente. Battute provvisorie e voci; paesaggio sonoro del bosco.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECdCPptNRwbVzjzHbohi
2026-10-28 13:09:57 +01:00
manzoloandClaude Opus 5.5 57e72de021 make deploy-vps: la stessa immagine già provata da make deploy anche sul VPS (VPS_HOST, VPS_DIR in deploy.local.mk)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECdCPptNRwbVzjzHbohi
2026-10-28 12:53:45 +01:00
14 changed files with 80 additions and 6 deletions
+13 -1
View File
@@ -24,7 +24,7 @@ CROP ?=
COLORS ?= 64 COLORS ?= 64
.PHONY: help serve open test browser verify check-public bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \ .PHONY: help serve open test browser verify check-public bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \
build up down restart logs ps shell image-size deploy deploy-logs clean distclean build up down restart logs ps shell image-size deploy deploy-vps deploy-logs clean distclean
## ------------------------------------------------------------ sviluppo ## ------------------------------------------------------------ sviluppo
@@ -124,6 +124,8 @@ image-size: ## Dimensione dell'immagine
# Host e indirizzo stanno in deploy.local.mk, fuori da git, per esempio: # Host e indirizzo stanno in deploy.local.mk, fuori da git, per esempio:
# DEPLOY_HOST = root@mio-server # DEPLOY_HOST = root@mio-server
# DEPLOY_URL = https://gioco.esempio # DEPLOY_URL = https://gioco.esempio
# VPS_HOST = mio-vps (facoltativo: una seconda copia, con make deploy-vps)
# VPS_DIR = docker/leggenda-regolo
-include deploy.local.mk -include deploy.local.mk
DEPLOY_DIR ?= /root/leggenda-regolo DEPLOY_DIR ?= /root/leggenda-regolo
DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX) DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX)
@@ -151,6 +153,16 @@ deploy: ## Pubblica l'ultimo commit: test, immagine costruita e provata qui, spe
xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null
@echo "→ $(DEPLOY_URL) ($$(git log -1 --format='%h %s'))" @echo "→ $(DEPLOY_URL) ($$(git log -1 --format='%h %s'))"
deploy-vps: ## Spedisce al VPS (VPS_HOST, VPS_DIR in deploy.local.mk) l'immagine dell'ultimo commit già provata da make deploy
@test -n "$(VPS_HOST)" -a -n "$(VPS_DIR)" || { echo "mancano VPS_HOST e VPS_DIR: scrivili in deploy.local.mk"; exit 2; }
@docker image inspect $(IMAGE):$$(git rev-parse --short HEAD) >/dev/null 2>&1 || \
{ echo "manca l'immagine dell'ultimo commit ($$(git rev-parse --short HEAD)): prima make deploy"; exit 1; }
ssh $(VPS_HOST) 'mkdir -p $(VPS_DIR)'
git show HEAD:docker-compose.homeserver.yml | ssh $(VPS_HOST) 'cat > $(VPS_DIR)/docker-compose.yml'
docker save $(IMAGE):$$(git rev-parse --short HEAD) $(IMAGE):latest | gzip | \
ssh $(VPS_HOST) 'gunzip | docker load -q && cd $(VPS_DIR) && docker compose up -d && docker image prune -f >/dev/null'
@ssh $(VPS_HOST) "docker exec $(IMAGE) grep -o \"VERSION = '[^']*'\" /usr/share/nginx/html/src/version.js" | sed 's/^/→ $(VPS_HOST): /'
deploy-logs: ## Log del container sul server di deploy deploy-logs: ## Log del container sul server di deploy
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; } @test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
ssh $(DEPLOY_HOST) 'cd $(DEPLOY_DIR) && docker compose logs -f --tail 50' ssh $(DEPLOY_HOST) 'cd $(DEPLOY_DIR) && docker compose logs -f --tail 50'
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+16
View File
@@ -1351,6 +1351,22 @@
"file": "andrea-bbd7781659.mp3", "file": "andrea-bbd7781659.mp3",
"sec": 4.13 "sec": 4.13
}, },
"andrea|Lassù spuntano i cipressi: il viale del Trebbio. Ancora un pezzo di salita.": {
"file": "andrea-429dbaf7e2.mp3",
"sec": 5.52
},
"andrea|Un cartello bianco. Bianco e basta: chi l'ha messo s'è scordato cosa ci voleva scrivere.": {
"file": "andrea-d1d027b75a.mp3",
"sec": 6.82
},
"andrea|Un muretto di sassi e mattoni: buono per riprendere fiato a metà salita.": {
"file": "andrea-9b8f4b41ad.mp3",
"sec": 4.59
},
"andrea|Mi siederei, ma se mi siedo ora non mi rialzo più.": {
"file": "andrea-093f6aff9c.mp3",
"sec": 3.56
},
"andrea|Giù a destra, oltre le vigne, c'è la casa del maestro Bacci. Mezzo paese ha imparato a leggere e scrivere da lui.": { "andrea|Giù a destra, oltre le vigne, c'è la casa del maestro Bacci. Mezzo paese ha imparato a leggere e scrivere da lui.": {
"file": "andrea-060513a152.mp3", "file": "andrea-060513a152.mp3",
"sec": 8.65 "sec": 8.65
+4
View File
@@ -214,6 +214,10 @@ I prompt fissi (stile, scene, foglio sprite) sono in `prompts/STILE.md`, escluso
- Il sentiero della Fortezza (foto di Andrea, 28 ottobre, sfondo di Codex): fra la Fortezza (a diritto) e la casa del - Il sentiero della Fortezza (foto di Andrea, 28 ottobre, sfondo di Codex): fra la Fortezza (a diritto) e la casa del
maestro Bacci (alle spalle), che non sono più collegate direttamente. La pozza c'è anche il 15 d'agosto (Andrea). maestro Bacci (alle spalle), che non sono più collegate direttamente. La pozza c'è anche il 15 d'agosto (Andrea).
Il nome del sentiero è provvisorio. Il nome del sentiero è provvisorio.
- La salita dei cipressi (foto di Andrea, 28 ottobre, sfondo di Codex): la strada bianca fra la casa del maestro
Bacci (alle spalle) e il viale dei cipressi (lassù spuntano i cipressi). Nome provvisorio, battute provvisorie.
- Seconda copia del gioco sul VPS Contabo con `make deploy-vps` (dopo `make deploy`). Per renderla pubblica serve
nel proxy del VPS la regola per 50037.manzolo.it; poi si sposta il DNS su Aruba.
- Via Pietro Cipriani (fra Piazza e campeggio): Cinema Taiuti aperto con la locandina del Rattattù 2007 (stile da - Via Pietro Cipriani (fra Piazza e campeggio): Cinema Taiuti aperto con la locandina del Rattattù 2007 (stile da
`assets/raw/riferimenti/rattattu-locandina.png`, scaletta illeggibile). Al campo da basket del Circolo, «Fai due tiri» `assets/raw/riferimenti/rattattu-locandina.png`, scaletta illeggibile). Al campo da basket del Circolo, «Fai due tiri»
(`src/engine/basket.js`, vista di lato, sfondo e sprite di Andrea col pallone da Codex): da solo, dieci palloni, a ogni (`src/engine/basket.js`, vista di lato, sfondo e sprite di Andrea col pallone da Codex): da solo, dieci palloni, a ogni
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "leggenda-del-regolo", "name": "leggenda-del-regolo",
"version": "0.1.29", "version": "0.1.30",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
+5
View File
@@ -80,6 +80,11 @@ export const ambience = {
butterfly([150, 170, 150, 60], 5000), butterfly([150, 170, 150, 60], 5000),
{ type: 'lamps', phase: 'sera', points: [[616, 118]], glow: 12 }, { type: 'lamps', phase: 'sera', points: [[616, 118]], glow: 12 },
], ],
salita_cipressi: [
{ type: 'clouds', area: [260, 0, 200, 110], count: 2 },
{ type: 'sway', rects: [[312, 118, 24, 70]], amount: 1 },
butterfly([380, 220, 180, 60], 4000),
],
sentiero_fortezza: [ sentiero_fortezza: [
{ type: 'cloudshadow', phase: day, area: [0, 180, 640, 180], offset: 5000, clip: rect([0, 180, 640, 180]) }, { type: 'cloudshadow', phase: day, area: [0, 180, 640, 180], offset: 5000, clip: rect([0, 180, 640, 180]) },
butterfly([380, 200, 160, 70], 8000), butterfly([380, 200, 160, 70], 8000),
+1 -1
View File
@@ -12,7 +12,7 @@ export const soundscapes = {
}; };
const groups = { const groups = {
bosco: ['bosco_ai_frati', 'sentiero_fortezza', 'viale_cipressi', 'trebbio', 'salita_fortezza', 'casa_maestro_bacci', 'campo_giannini', 'area_camper', 'giardini_poste'], bosco: ['bosco_ai_frati', 'sentiero_fortezza', 'salita_cipressi', 'viale_cipressi', 'trebbio', 'salita_fortezza', 'casa_maestro_bacci', 'campo_giannini', 'area_camper', 'giardini_poste'],
acqua: ['ponte_sieve', 'campomigliaio_ponte', 'verso_luna'], acqua: ['ponte_sieve', 'campomigliaio_ponte', 'verso_luna'],
pieve: ['pieve', 'pieve_interno', 'oratorio'], pieve: ['pieve', 'pieve_interno', 'oratorio'],
circolo: ['campomigliaio_circolo', 'tennis_chiesa', 'area_feste_festa'], circolo: ['campomigliaio_circolo', 'tennis_chiesa', 'area_feste_festa'],
+39 -2
View File
@@ -2259,6 +2259,43 @@ export const story = {
}, },
], ],
}, },
// La salita bianca fra la casa del maestro Bacci (alle spalle) e il viale dei cipressi (lassù spuntano i
// cipressi): foto di Andrea, 28 ottobre.
salita_cipressi: {
name: 'La salita dei cipressi',
map: [55, 10],
background: 'assets/scenes/salita-cipressi.png',
walk: [[0, 360], [0, 317], [208, 258], [298, 190], [333, 188], [417, 233], [583, 300], [640, 325], [640, 360]],
depth: [[188, 0.3], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'cipressi', name: 'cipressi', box: [310, 118, 26, 70], at: [316, 200], face: 'up',
actions: {
look: [{ say: 'Lassù spuntano i cipressi: il viale del Trebbio. Ancora un pezzo di salita.' }],
},
},
{
id: 'cartello', name: 'cartello', box: [104, 144, 26, 26], at: [150, 280], face: 'left',
actions: {
look: [{ say: 'Un cartello bianco. Bianco e basta: chi l\'ha messo s\'è scordato cosa ci voleva scrivere.' }],
},
},
{
id: 'muretto', name: 'muretto', box: [0, 232, 112, 60], at: [120, 300], face: 'left',
actions: {
look: [{ say: 'Un muretto di sassi e mattoni: buono per riprendere fiato a metà salita.' }],
use: [{ say: 'Mi siederei, ma se mi siedo ora non mi rialzo più.' }],
},
},
{
id: 'ai_cipressi', name: 'su, verso i cipressi', box: [290, 162, 66, 32], at: [316, 194], exit: { scene: 'viale_cipressi', at: [300, 350], face: 'up' },
},
{
id: 'alla_casa_bacci', name: 'indietro, verso la casa del maestro Bacci', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'casa_maestro_bacci', at: [138, 226], face: 'down' },
},
],
},
// Fra la Fortezza e i cipressi: la stradina fra le vigne, la casa del maestro Bacci, e lassù il Trebbio. // Fra la Fortezza e i cipressi: la stradina fra le vigne, la casa del maestro Bacci, e lassù il Trebbio.
casa_maestro_bacci: { casa_maestro_bacci: {
name: 'La casa del maestro Bacci', name: 'La casa del maestro Bacci',
@@ -2288,7 +2325,7 @@ export const story = {
}, },
}, },
{ {
id: 'ai_cipressi', name: 'avanti, verso i cipressi e il Trebbio', box: [120, 150, 56, 30], at: [138, 226], exit: { scene: 'viale_cipressi', at: [300, 350], face: 'up' }, id: 'ai_cipressi', name: 'avanti, verso i cipressi e il Trebbio', box: [120, 150, 56, 30], at: [138, 226], exit: { scene: 'salita_cipressi', at: [320, 350], face: 'up' },
}, },
{ {
id: 'alla_fortezza', name: 'indietro, verso la Fortezza', box: [0, 330, 240, 30], at: [120, 354], exit: { scene: 'sentiero_fortezza', at: [320, 350], face: 'up' }, id: 'alla_fortezza', name: 'indietro, verso la Fortezza', box: [0, 330, 240, 30], at: [120, 354], exit: { scene: 'sentiero_fortezza', at: [320, 350], face: 'up' },
@@ -2692,7 +2729,7 @@ export const story = {
id: 'al_trebbio', name: 'in fondo, verso il Trebbio', box: [262, 214, 76, 50], at: [300, 256], exit: { scene: 'trebbio', at: [110, 345], face: 'right' }, id: 'al_trebbio', name: 'in fondo, verso il Trebbio', box: [262, 214, 76, 50], at: [300, 256], exit: { scene: 'trebbio', at: [110, 345], face: 'right' },
}, },
{ {
id: 'alla_fortezza', name: 'indietro, verso la casa del maestro Bacci', box: [0, 330, 640, 30], at: [300, 352], exit: { scene: 'casa_maestro_bacci', at: [138, 226], face: 'down' }, id: 'alla_fortezza', name: 'indietro, verso la casa del maestro Bacci', box: [0, 330, 640, 30], at: [300, 352], exit: { scene: 'salita_cipressi', at: [316, 196], face: 'down' },
}, },
], ],
}, },
+1 -1
View File
@@ -1,5 +1,5 @@
// La versione del gioco: la cambia scripts/bump.sh, insieme a package.json. // La versione del gioco: la cambia scripts/bump.sh, insieme a package.json.
export const VERSION = '0.1.29'; export const VERSION = '0.1.30';
// Immagini, musiche e voci con ?v=<versione>: a ogni versione l'indirizzo cambia e il browser le riscarica, // Immagini, musiche e voci con ?v=<versione>: a ogni versione l'indirizzo cambia e il browser le riscarica,
// mentre fra una versione e l'altra le tiene in cache a lungo (nginx.conf). // mentre fra una versione e l'altra le tiene in cache a lungo (nginx.conf).