Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
449c9511e1 | ||
|
|
0ec49c4fe7 | ||
|
|
b41cadd95b | ||
|
|
0bd3e2255f | ||
|
|
dc17a7f963 |
@@ -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-vps deploy-logs clean distclean
|
build up down restart logs ps shell image-size deploy deploy-logs clean distclean
|
||||||
|
|
||||||
## ------------------------------------------------------------ sviluppo
|
## ------------------------------------------------------------ sviluppo
|
||||||
|
|
||||||
@@ -124,8 +124,7 @@ 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)
|
# DEPLOY_DIR = docker/leggenda-regolo (la cartella del compose sul server)
|
||||||
# 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,18 +150,12 @@ deploy: ## Pubblica l'ultimo commit: test, immagine costruita e provata qui, spe
|
|||||||
@# Sul server il prune toglie l'immagine vecchia; qui restano solo latest e quella appena pubblicata.
|
@# Sul server il prune toglie l'immagine vecchia; qui restano solo latest e quella appena pubblicata.
|
||||||
@docker image ls $(IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $$(git rev-parse --short HEAD) | \
|
@docker image ls $(IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $$(git rev-parse --short HEAD) | \
|
||||||
xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null
|
xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null
|
||||||
|
@# L'indirizzo pubblico deve servire la versione appena spedita.
|
||||||
|
@v=$$(grep -o "VERSION = '[^']*'" src/version.js); \
|
||||||
|
for i in 1 2 3 4 5; do curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" && break; sleep 2; done; \
|
||||||
|
curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" || { echo "$(DEPLOY_URL) non serve $$v"; exit 1; }
|
||||||
@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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1667,6 +1667,22 @@
|
|||||||
"file": "zio_mario-b3e99c241a.mp3",
|
"file": "zio_mario-b3e99c241a.mp3",
|
||||||
"sec": 2.68
|
"sec": 2.68
|
||||||
},
|
},
|
||||||
|
"andrea|E con la Ghiacciomobile nel muro, come si fa?": {
|
||||||
|
"file": "andrea-e964cb256d.mp3",
|
||||||
|
"sec": 2.69
|
||||||
|
},
|
||||||
|
"zio_mario|Siamo a cavallo al ciuco!": {
|
||||||
|
"file": "zio_mario-e74a044fb6.mp3",
|
||||||
|
"sec": 1.22
|
||||||
|
},
|
||||||
|
"andrea|Menomale tu ci sei te, Zio!": {
|
||||||
|
"file": "andrea-eea2bd2097.mp3",
|
||||||
|
"sec": 2.29
|
||||||
|
},
|
||||||
|
"zio_mario|Alla terza tu capisci subito, al volo!": {
|
||||||
|
"file": "zio_mario-4317f4b5f3.mp3",
|
||||||
|
"sec": 2.03
|
||||||
|
},
|
||||||
"andrea|Il parcheggio sotto casa. Col gesso ci si disegnava la pista delle macchinine, e si giocava finché non chiamavano per cena.": {
|
"andrea|Il parcheggio sotto casa. Col gesso ci si disegnava la pista delle macchinine, e si giocava finché non chiamavano per cena.": {
|
||||||
"file": "andrea-8670e6ce99.mp3",
|
"file": "andrea-8670e6ce99.mp3",
|
||||||
"sec": 7.6
|
"sec": 7.6
|
||||||
@@ -1915,6 +1931,22 @@
|
|||||||
"file": "zio_mario-5773e3350f.mp3",
|
"file": "zio_mario-5773e3350f.mp3",
|
||||||
"sec": 1.13
|
"sec": 1.13
|
||||||
},
|
},
|
||||||
|
"andrea|Sai, Zio? Son stato in California!": {
|
||||||
|
"file": "andrea-d8f8c38415.mp3",
|
||||||
|
"sec": 3.33
|
||||||
|
},
|
||||||
|
"zio_mario|E dov'è?": {
|
||||||
|
"file": "zio_mario-1cb1e2ca51.mp3",
|
||||||
|
"sec": 0.43
|
||||||
|
},
|
||||||
|
"andrea|In America!": {
|
||||||
|
"file": "andrea-8c8a45db81.mp3",
|
||||||
|
"sec": 0.85
|
||||||
|
},
|
||||||
|
"zio_mario|Ahhh... sopra Firenzola!": {
|
||||||
|
"file": "zio_mario-67279d2518.mp3",
|
||||||
|
"sec": 2.73
|
||||||
|
},
|
||||||
"andrea|Le case coi balconi pieni di vasi: qui ogni finestra è un giardino.": {
|
"andrea|Le case coi balconi pieni di vasi: qui ogni finestra è un giardino.": {
|
||||||
"file": "andrea-ec81875c47.mp3",
|
"file": "andrea-ec81875c47.mp3",
|
||||||
"sec": 5.22
|
"sec": 5.22
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
# Deploy dietro un reverse proxy (make deploy): l'immagine arriva già costruita dal PC (docker load), niente porte esposte, il container sta sulla rete esterna nginx-net,
|
# Deploy dietro un reverse proxy (make deploy): l'immagine arriva già costruita dal PC (docker load), niente porte esposte, il container sta sulla rete esterna nginx-net,
|
||||||
# dove l'NPM interno di home-server lo pubblica col suo nome (50037.manzolo.it → leggenda-regolo:80).
|
# dove Nginx Proxy Manager del VPS lo pubblica col suo nome (50037.manzolo.it → leggenda-regolo:80).
|
||||||
services:
|
services:
|
||||||
leggenda-regolo:
|
leggenda-regolo:
|
||||||
image: leggenda-regolo:latest
|
image: leggenda-regolo:latest
|
||||||
|
|||||||
+6
-4
@@ -235,8 +235,10 @@ Online su 50037.manzolo.it tutto fino agli effetti ambientali di Codex. Aperto,
|
|||||||
|
|
||||||
**Si gioca** in Docker su http://localhost:8080 (`make up`; Manzolo Rush è stato fermato per liberare la porta) e,
|
**Si gioca** in Docker su http://localhost:8080 (`make up`; Manzolo Rush è stato fermato per liberare la porta) e,
|
||||||
**online dal 2026-10-23**, su https://50037.manzolo.it (50037 è il CAP di San Piero), finché non va su GitHub Pages.
|
**online dal 2026-10-23**, su https://50037.manzolo.it (50037 è il CAP di San Piero), finché non va su GitHub Pages.
|
||||||
Si aggiorna con `make deploy`: pubblica l'ultimo commit, immagine costruita e provata sul PC e spedita al container
|
Dal 2026-10-31 il sito pubblico è sul **VPS Contabo** (CNAME `50037` → `vps.manzolo.it`, NPM del VPS col certificato
|
||||||
`leggenda-regolo` di home-server (NPM centrale → NPM interno di home-server → container).
|
Let's Encrypt → container `leggenda-regolo`); la copia su home-server è stata tolta. Si aggiorna con `make deploy`:
|
||||||
|
test, immagine costruita e provata sul PC, spedita al VPS, e il controllo che https://50037.manzolo.it serva la
|
||||||
|
versione nuova.
|
||||||
|
|
||||||
- **Motore** (`src/engine/`): camminata con percorsi su aree concave, profondità, sette verbi + clic intelligente,
|
- **Motore** (`src/engine/`): camminata con percorsi su aree concave, profondità, sette verbi + clic intelligente,
|
||||||
clic destro / pressione lunga = guarda, inventario con "usa… con" e "dai… a", dialoghi a scelte (anche una
|
clic destro / pressione lunga = guarda, inventario con "usa… con" e "dai… a", dialoghi a scelte (anche una
|
||||||
@@ -388,8 +390,8 @@ I prompt fissi (stile, scene, foglio sprite) sono in `prompts/STILE.md`, escluso
|
|||||||
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
|
- 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.
|
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
|
- Il gioco pubblico sta sul VPS Contabo (dal 31 ottobre: regola in NPM del VPS, DNS spostato su Aruba, certificato
|
||||||
nel proxy del VPS la regola per 50037.manzolo.it; poi si sposta il DNS su Aruba.
|
Let's Encrypt); la copia su home-server è stata tolta (Andrea: «la tengo fuori e basta»).
|
||||||
- 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
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "leggenda-del-regolo",
|
"name": "leggenda-del-regolo",
|
||||||
"version": "0.1.64",
|
"version": "0.1.65",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
+15
-2
@@ -3210,8 +3210,16 @@ export const story = {
|
|||||||
id: 'zio_mario', name: 'lo zio Mario', box: [418, 206, 46, 124], at: [362, 334], face: 'right', default: 'look', when: '!indizio_regolo',
|
id: 'zio_mario', name: 'lo zio Mario', box: [418, 206, 46, 124], at: [362, 334], face: 'right', default: 'look', when: '!indizio_regolo',
|
||||||
actions: {
|
actions: {
|
||||||
look: [{ say: 'Lo zio Mario. Guarda il muro, guarda la macchina, e si gratta la testa sotto il berretto.' }],
|
look: [{ say: 'Lo zio Mario. Guarda il muro, guarda la macchina, e si gratta la testa sotto il berretto.' }],
|
||||||
// Il primo scambio con lo zio (Andrea, 29 ottobre).
|
// Il primo scambio con lo zio (Andrea, 29 ottobre); «Siamo a cavallo al ciuco», «Menomale tu ci sei te» e
|
||||||
talk: [{ say: 'Zio, hai problemi?' }, { say: 'I problemi io gli avevo quando andavo a scuola!', who: 'zio_mario', pose: 'laugh' }],
|
// «Alla terza tu capisci subito» sono di Andrea (31 ottobre). [DA ANDREA: la domanda sulla Ghiacciomobile]
|
||||||
|
talk: [
|
||||||
|
{ say: 'Zio, hai problemi?' },
|
||||||
|
{ say: 'I problemi io gli avevo quando andavo a scuola!', who: 'zio_mario', pose: 'laugh' },
|
||||||
|
{ say: 'E con la Ghiacciomobile nel muro, come si fa?' },
|
||||||
|
{ say: 'Siamo a cavallo al ciuco!', who: 'zio_mario', pose: 'explain' },
|
||||||
|
{ say: 'Menomale tu ci sei te, Zio!' },
|
||||||
|
{ say: 'Alla terza tu capisci subito, al volo!', who: 'zio_mario', pose: 'laugh' },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@@ -3702,6 +3710,11 @@ export const story = {
|
|||||||
{ say: 'No, dormo!', who: 'zio_mario', pose: 'laugh' },
|
{ say: 'No, dormo!', who: 'zio_mario', pose: 'laugh' },
|
||||||
{ say: 'Zio, a me mi garba Michael Jackson!' },
|
{ say: 'Zio, a me mi garba Michael Jackson!' },
|
||||||
{ say: 'Mai col gesso!', who: 'zio_mario', pose: 'laugh' },
|
{ say: 'Mai col gesso!', who: 'zio_mario', pose: 'laugh' },
|
||||||
|
// Il posto lontanissimo dello zio (Andrea, 31 ottobre).
|
||||||
|
{ say: 'Sai, Zio? Son stato in California!' },
|
||||||
|
{ say: 'E dov\'è?', who: 'zio_mario', pose: 'think' },
|
||||||
|
{ say: 'In America!' },
|
||||||
|
{ say: 'Ahhh... sopra Firenzola!', who: 'zio_mario', pose: 'point' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
+1
-1
@@ -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.64';
|
export const VERSION = '0.1.65';
|
||||||
|
|
||||||
// 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).
|
||||||
|
|||||||
Reference in New Issue
Block a user