Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1205192e8a | ||
|
|
aa2f547856 | ||
|
|
57e72de021 | ||
|
|
15ae2b8221 | ||
|
|
f895b7979d |
@@ -24,7 +24,7 @@ CROP ?=
|
||||
COLORS ?= 64
|
||||
|
||||
.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
|
||||
|
||||
@@ -124,6 +124,8 @@ image-size: ## Dimensione dell'immagine
|
||||
# Host e indirizzo stanno in deploy.local.mk, fuori da git, per esempio:
|
||||
# DEPLOY_HOST = root@mio-server
|
||||
# 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
|
||||
DEPLOY_DIR ?= /root/leggenda-regolo
|
||||
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
|
||||
@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
|
||||
@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'
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 6.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 475 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 456 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1335,6 +1335,38 @@
|
||||
"file": "andrea-3e2f9b4424.mp3",
|
||||
"sec": 6.42
|
||||
},
|
||||
"andrea|La pozza. Anche il quindici d'agosto è sempre bella piena.": {
|
||||
"file": "andrea-8c0ccd6cd7.mp3",
|
||||
"sec": 5.09
|
||||
},
|
||||
"andrea|Un giorno ci casco dentro e ci affogo: il primo annegato in mezzo al bosco.": {
|
||||
"file": "andrea-d7a9731b0f.mp3",
|
||||
"sec": 4.59
|
||||
},
|
||||
"andrea|Un bagno nella pozza? No, grazie: non so quanto è fonda, e non lo voglio sapere.": {
|
||||
"file": "andrea-97a7504f87.mp3",
|
||||
"sec": 6.15
|
||||
},
|
||||
"andrea|Una rete vecchia, tenuta su coi pali di legno e con la speranza.": {
|
||||
"file": "andrea-bbd7781659.mp3",
|
||||
"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.": {
|
||||
"file": "andrea-060513a152.mp3",
|
||||
"sec": 8.65
|
||||
|
||||
@@ -211,6 +211,13 @@ I prompt fissi (stile, scene, foglio sprite) sono in `prompts/STILE.md`, escluso
|
||||
giardini del Comune (lato sinistro della scena del Comune); la scalinata si prende anche dalla curva a sinistra in
|
||||
cima a Via dell'Antica Posta. In Piazzetta tutto il lato sinistro porta in Via de' Medici. Da confermare con Andrea:
|
||||
il nome vero della scalinata. Battute provvisorie.
|
||||
- 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).
|
||||
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
|
||||
`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
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "leggenda-del-regolo",
|
||||
"version": "0.1.28",
|
||||
"version": "0.1.30",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@@ -80,6 +80,15 @@ export const ambience = {
|
||||
butterfly([150, 170, 150, 60], 5000),
|
||||
{ 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: [
|
||||
{ type: 'cloudshadow', phase: day, area: [0, 180, 640, 180], offset: 5000, clip: rect([0, 180, 640, 180]) },
|
||||
butterfly([380, 200, 160, 70], 8000),
|
||||
],
|
||||
// Via dell'Antica Posta e dintorni (28 ottobre).
|
||||
via_antica_posta: [
|
||||
{ type: 'clouds', area: [180, 0, 300, 90], count: 2 },
|
||||
|
||||
@@ -12,7 +12,7 @@ export const soundscapes = {
|
||||
};
|
||||
|
||||
const groups = {
|
||||
bosco: ['bosco_ai_frati', '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'],
|
||||
pieve: ['pieve', 'pieve_interno', 'oratorio'],
|
||||
circolo: ['campomigliaio_circolo', 'tennis_chiesa', 'area_feste_festa'],
|
||||
|
||||
+72
-4
@@ -626,7 +626,7 @@ export const story = {
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'sentiero_trebbio', name: 'sentiero per il Trebbio', box: [0, 200, 90, 160], at: [20, 330], exit: { scene: 'casa_maestro_bacci', at: [120, 350], face: 'up' },
|
||||
id: 'sentiero_trebbio', name: 'sentiero per il Trebbio', box: [0, 200, 90, 160], at: [20, 330], exit: { scene: 'sentiero_fortezza', at: [325, 190], face: 'down' },
|
||||
},
|
||||
{
|
||||
id: 'verso_villa_adami', name: 'giù per il Poggio, verso Villa Adami', box: [180, 326, 340, 34], at: [330, 352], exit: { scene: 'salita_fortezza', at: [150, 318], face: 'up' },
|
||||
@@ -2228,6 +2228,74 @@ export const story = {
|
||||
},
|
||||
],
|
||||
},
|
||||
// Il sentiero nel bosco fra la casa del maestro Bacci (alle spalle) e la Fortezza (a diritto): foto di Andrea,
|
||||
// 28 ottobre. La pozza c'è anche a Ferragosto (Andrea).
|
||||
sentiero_fortezza: {
|
||||
name: 'Il sentiero della Fortezza',
|
||||
map: [43, 9],
|
||||
background: 'assets/scenes/sentiero-fortezza.png',
|
||||
walk: [[0, 360], [0, 321], [208, 267], [292, 196], [317, 181], [342, 181], [375, 217], [500, 292], [640, 325], [640, 360]],
|
||||
depth: [[181, 0.3], [360, 1.15]],
|
||||
entry: [320, 350],
|
||||
hotspots: [
|
||||
{
|
||||
id: 'pozza', name: 'pozza', box: [271, 212, 96, 54], at: [250, 285], face: 'right',
|
||||
actions: {
|
||||
look: [{ say: 'La pozza. Anche il quindici d\'agosto è sempre bella piena.' }, { say: 'Un giorno ci casco dentro e ci affogo: il primo annegato in mezzo al bosco.' }],
|
||||
use: [{ say: 'Un bagno nella pozza? No, grazie: non so quanto è fonda, e non lo voglio sapere.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'rete', name: 'rete', box: [0, 140, 230, 150], at: [120, 300], face: 'left',
|
||||
actions: {
|
||||
look: [{ say: 'Una rete vecchia, tenuta su coi pali di legno e con la speranza.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'alla_fortezza', name: 'a diritto, verso la Fortezza', box: [295, 160, 70, 36], at: [328, 186], exit: { scene: 'fortezza', at: [20, 330], face: 'right' },
|
||||
},
|
||||
{
|
||||
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: [120, 350], face: 'up' },
|
||||
},
|
||||
],
|
||||
},
|
||||
// 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.
|
||||
casa_maestro_bacci: {
|
||||
name: 'La casa del maestro Bacci',
|
||||
@@ -2257,10 +2325,10 @@ 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: 'fortezza', at: [20, 330], face: 'right' },
|
||||
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' },
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -2661,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: '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
@@ -1,5 +1,5 @@
|
||||
// La versione del gioco: la cambia scripts/bump.sh, insieme a package.json.
|
||||
export const VERSION = '0.1.28';
|
||||
export const VERSION = '0.1.30';
|
||||
|
||||
// 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).
|
||||
|
||||
Reference in New Issue
Block a user