Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b64292ec9 | ||
|
|
b9bd50c8c3 | ||
|
|
c5953f04c0 | ||
|
|
1ea78161d1 | ||
|
|
5c0f4856bd | ||
|
|
d4b472119d | ||
|
|
aba2e7a0aa | ||
|
|
94902edc57 | ||
|
|
721df30937 | ||
|
|
40d5780255 | ||
|
|
9f2b045ab0 | ||
|
|
187b4c48cb | ||
|
|
c132e94ed8 | ||
|
|
9cd8027256 | ||
|
|
9f0f60d186 | ||
|
|
5135689293 | ||
|
|
8693bff0c7 | ||
|
|
c6812db291 | ||
|
|
670626afa5 | ||
|
|
9bf41d01af | ||
|
|
16252fb04a | ||
|
|
99d4dede80 | ||
|
|
36eda83fe4 | ||
|
|
58174e68d2 | ||
|
|
ff770af3b5 | ||
|
|
41e5fe2f6b | ||
|
|
9d823375aa | ||
|
|
00f9f15370 | ||
|
|
9fe6e8d0ff | ||
|
|
0f8081d8f0 | ||
|
|
500885ffe0 | ||
|
|
259be2c8b0 | ||
|
|
1706592b81 | ||
|
|
6758e6287e | ||
|
|
a699115a03 | ||
|
|
bb8e6a8885 | ||
|
|
81a1dd1bc3 | ||
|
|
0f1740a7ad | ||
|
|
3d61fc3954 | ||
|
|
6226de3795 | ||
|
|
17824963aa | ||
|
|
75cbe8250f | ||
|
|
6b17288962 | ||
|
|
262c774718 | ||
|
|
4a2c88f0e3 | ||
|
|
c395b4e890 | ||
|
|
818af5b36f | ||
|
|
a080c0ea56 | ||
|
|
fbeef76f01 | ||
|
|
45d310b9b4 | ||
|
|
481e4a9514 | ||
|
|
fde68603cb | ||
|
|
686fee043e | ||
|
|
4b709ffd80 | ||
|
|
733680301c | ||
|
|
0ba8cfc800 | ||
|
|
84ad19a47e | ||
|
|
058acd6325 | ||
|
|
497209fc9a | ||
|
|
2289480812 | ||
|
|
de418c0da8 | ||
|
|
713e328138 | ||
|
|
6a5a80d7af | ||
|
|
88f0439f79 | ||
|
|
c244424af9 | ||
|
|
c26d888263 | ||
|
|
f8dbd01358 | ||
|
|
e3d5d8b0d3 | ||
|
|
1b7511f6ca | ||
|
|
9d2cc2fcb3 | ||
|
|
44480221db | ||
|
|
4d13a4ef25 | ||
|
|
22f408cc60 | ||
|
|
927459344b | ||
|
|
08ab9ba069 | ||
|
|
1918c8d9c7 | ||
|
|
381254ed4d | ||
|
|
a11a6ef59f | ||
|
|
086e4682d4 | ||
|
|
bf22dc2511 | ||
|
|
6585c9ffcb | ||
|
|
13585491a4 | ||
|
|
72a629e88b | ||
|
|
f57bec560a | ||
|
|
1f49486870 | ||
|
|
06f7cfbfad | ||
|
|
e1b92278a5 | ||
|
|
b3c50f4694 | ||
|
|
7dd05ac92f | ||
|
|
800a82045d | ||
|
|
c96dec4692 | ||
|
|
417c126777 | ||
|
|
1205192e8a | ||
|
|
aa2f547856 | ||
|
|
57e72de021 | ||
|
|
15ae2b8221 | ||
|
|
f895b7979d | ||
|
|
bec7f067bc | ||
|
|
e50a3e80e9 | ||
|
|
afb0b931c5 | ||
|
|
fb1568259b | ||
|
|
c1049bf69d | ||
|
|
b05fe5b302 | ||
|
|
505eda01a3 | ||
|
|
d329cbd6ef | ||
|
|
1e4dcaaf3b | ||
|
|
4c5ec099d0 | ||
|
|
b2ec499590 | ||
|
|
75b532cda0 | ||
|
|
68686efe03 | ||
|
|
208e1d9535 | ||
|
|
f2a0f22f4a | ||
|
|
dea124933e | ||
|
|
51a46fe5a0 | ||
|
|
f6fb8922af | ||
|
|
bd7fbc3003 | ||
|
|
8b957c7cf7 | ||
|
|
f1de62f01e | ||
|
|
64dc8e18e7 | ||
|
|
b262977117 | ||
|
|
3762f2b465 | ||
|
|
9f7a9812ed | ||
|
|
151017d2e2 | ||
|
|
f193c6020f | ||
|
|
8a2e49036d | ||
|
|
1e5f66c2b6 | ||
|
|
b1640f1f12 | ||
|
|
0e7a50493c | ||
|
|
c2cb9b0194 | ||
|
|
5392f042b3 | ||
|
|
ca3035e33f | ||
|
|
22be1c306e | ||
|
|
add5a5fe77 | ||
|
|
3019a6e32f | ||
|
|
111b892916 | ||
|
|
f1781afea8 | ||
|
|
b44eeffd2a | ||
|
|
89ebdd40bb | ||
|
|
538bf6cedb | ||
|
|
7e1e6f6144 | ||
|
|
30e324d7e2 | ||
|
|
e8152563d8 | ||
|
|
fef236dc54 | ||
|
|
c82bef70b2 | ||
|
|
e9907e3e66 | ||
|
|
92e7a289be | ||
|
|
2362fc7741 | ||
|
|
2dd4257fd4 | ||
|
|
d51f5e56ea | ||
|
|
7b7e0031d1 | ||
|
|
94e9da4009 | ||
|
|
bd66ea45ad | ||
|
|
9eabd5c6e1 | ||
|
|
ddc877a2d1 | ||
|
|
14a1e6e5b8 | ||
|
|
49bdfb313a | ||
|
|
416b9d46ef | ||
|
|
7476c84b76 | ||
|
|
053728a086 | ||
|
|
394e8bdde3 | ||
|
|
ca56a9df17 | ||
|
|
b0b2fc0ed3 | ||
|
|
f56c9b5358 | ||
|
|
70f328c56d |
@@ -13,11 +13,20 @@ COPY assets/voices /usr/share/nginx/html/assets/voices
|
||||
COPY assets/credits /usr/share/nginx/html/assets/credits
|
||||
COPY assets/effects /usr/share/nginx/html/assets/effects
|
||||
COPY assets/closeups /usr/share/nginx/html/assets/closeups
|
||||
COPY assets/muro /usr/share/nginx/html/assets/muro
|
||||
COPY assets/favicon /usr/share/nginx/html/assets/favicon
|
||||
COPY assets/video /usr/share/nginx/html/assets/video
|
||||
|
||||
# Le immagini e i font citati da index.html e style.css prendono ?v=<versione>, come quelli caricati dal codice.
|
||||
# Alla versione si aggiunge l'impronta del contenuto di assets/: uno sfondo rifatto senza cambiare versione (in
|
||||
# locale, fra un bump e l'altro) ha un indirizzo nuovo, e il browser non tiene quello vecchio dalla cache lunga.
|
||||
RUN cd /usr/share/nginx/html \
|
||||
&& V=$(sed -n "s/^export const VERSION = '\([0-9.]*\)';$/\1/p" src/version.js) \
|
||||
&& test -n "$V" \
|
||||
&& H=$(find assets -type f -exec md5sum {} + | sort -k2 | md5sum | cut -c1-8) \
|
||||
&& sed -i -E 's#v=\$\{VERSION\}#v=${VERSION}-'"$H"'#' src/version.js \
|
||||
&& grep -q "VERSION}-$H" src/version.js \
|
||||
&& V="$V-$H" \
|
||||
&& sed -i -E "s#url\((assets/[^)]*)\)#url(\1?v=$V)#g" style.css \
|
||||
&& sed -i -E "s#src=\"(assets/[^\"]*)\"#src=\"\1?v=$V\"#g" index.html \
|
||||
&& grep -q "?v=$V" style.css && grep -q "?v=$V" index.html
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
Licenze de «La Leggenda del Regolo»
|
||||
|
||||
Il progetto è un gioco gratuito e non commerciale. Ha due parti con licenze diverse: il codice, e tutto il resto.
|
||||
|
||||
================================================================================
|
||||
1. IL CODICE: licenza MIT
|
||||
================================================================================
|
||||
|
||||
Vale per tutto ciò che sta fuori dalle cartelle assets/, docs/ e video/: i sorgenti in src/, i test, gli strumenti
|
||||
in tools/, gli script, index.html, style.css, i file di configurazione.
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Andrea Manzi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of
|
||||
the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
================================================================================
|
||||
2. LA STORIA, LA GRAFICA, LA MUSICA: Creative Commons BY-NC-SA 4.0
|
||||
================================================================================
|
||||
|
||||
Vale per la storia e i dialoghi (src/story/), i documenti in docs/, gli sfondi, i primi piani, le icone e gli sprite
|
||||
dei personaggi inventati (assets/scenes, assets/closeups, assets/icons, assets/effects, assets/favicon, e in
|
||||
assets/characters quelli che non ritraggono persone vere), le musiche composte e sintetizzate dagli script in tools/
|
||||
(assets/audio/biliardo.mp3, carte.mp3, bocce.mp3, pieve.mp3, cartello.mp3) e i video «Come si gioca» (assets/video).
|
||||
|
||||
© 2026 Andrea Manzi. Si possono copiare, ridistribuire e rielaborare citando l'autore, per scopi non commerciali,
|
||||
e distribuendo le opere derivate con la stessa licenza. Testo completo: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
|
||||
Gli sfondi sono stati disegnati con strumenti di generazione di immagini (OpenAI) a partire da fotografie di San
|
||||
Piero a Sieve, quasi tutte di Andrea Manzi; la provenienza di ognuno è registrata in docs/IMMAGINI.md (la foto
|
||||
dell'interno della Pieve è di Mariano Mirannalti, citato nei Ringraziamenti).
|
||||
|
||||
================================================================================
|
||||
3. ECCEZIONI: cose che NON si possono riusare, o che hanno una licenza propria
|
||||
================================================================================
|
||||
|
||||
a) Le persone vere. I ritratti in pixel nei Ringraziamenti (assets/credits/) e gli sprite dei personaggi ispirati a
|
||||
persone vere (vecchietti, Mariano, l'Ing. Tozzi, il Tozzino, il BaronDeDuke, l'Arcu, Fra Peppino e gli altri
|
||||
indicati nei commenti di src/story/story.js) sono pubblicati con il consenso delle persone ritratte, SOLO per
|
||||
questo gioco: tutti i diritti riservati, non si possono riusare altrove. Lo stesso vale per i nomi e i ricordi
|
||||
delle persone del paese che compaiono nella storia.
|
||||
|
||||
b) La fotografia del palio del 2007 (assets/closeups/palio-2007.jpg) ritrae il quadro dipinto dai ragazzi delle
|
||||
scuole medie di San Piero a Sieve: tutti i diritti riservati agli autori, pubblicata qui per il gioco.
|
||||
|
||||
c) Le musiche di Andrea Manzi generate con Suno (assets/audio/titolo.mp3, paese.mp3, sera.mp3, fortezza.mp3,
|
||||
ricordi.mp3) si usano alle condizioni d'uso di Suno e non sono coperte dalla licenza Creative Commons.
|
||||
|
||||
d) Le voci dei personaggi (assets/voices/) e la voce narrante dei video (assets/video/) sono sintetizzate con
|
||||
XTTS-v2 di Coqui, distribuito con la Coqui Public Model License (https://coqui.ai/cpml, testo in
|
||||
docs/LICENZA-CPML.txt): i file audio che ne derivano si possono usare SOLO per scopi non commerciali.
|
||||
|
||||
e) Il carattere Press Start 2P di CodeMan38 (assets/fonts/) è distribuito con la SIL Open Font License 1.1: il testo
|
||||
della licenza è in assets/fonts/OFL-press-start-2p.txt.
|
||||
|
||||
f) L'aneddoto della Torre dello Scoronconcolo riprende, riformulati, i fatti della voce «Michele del Tavolaccino»
|
||||
di Wikipedia in italiano (CC BY-SA 4.0): https://it.wikipedia.org/wiki/Michele_del_Tavolaccino
|
||||
|
||||
Monkey Island e La storia infinita sono citati come ricordi: i marchi e le opere restano dei rispettivi titolari.
|
||||
@@ -23,8 +23,8 @@ DST ?= assets/scenes/$(notdir $(SRC))
|
||||
CROP ?=
|
||||
COLORS ?= 64
|
||||
|
||||
.PHONY: help serve open test browser verify 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
|
||||
.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
|
||||
|
||||
## ------------------------------------------------------------ sviluppo
|
||||
|
||||
@@ -50,7 +50,10 @@ test: ## Test della logica, della storia, della soluzione completa e del generat
|
||||
browser: ## Partita completa nel browser con Playwright
|
||||
$(NODE) tests/browser.mjs
|
||||
|
||||
verify: test browser ## Tutti i controlli
|
||||
verify: test browser check-public ## Tutti i controlli
|
||||
|
||||
check-public: ## Prima di pubblicare: niente prompt, fogli grezzi, segreti o nomi della rete di casa (tutta la storia)
|
||||
bash scripts/check-public.sh
|
||||
|
||||
bump: ## Nuova versione (PARTE=patch|minor|major): verifica, commit e tag v<versione>; poi make deploy
|
||||
scripts/bump.sh $(or $(PARTE),patch)
|
||||
@@ -84,11 +87,11 @@ background: ## Porta uno sfondo a 640x360 nel gioco (SRC=..., DST=..., CROP=x,y,
|
||||
@test -n "$(SRC)" || { echo "uso: make background SRC=assets/generated/nome.png [CROP=x,y,w,h]"; exit 2; }
|
||||
$(PYTHON) tools/prepare_background.py $(SRC) $(DST) $(if $(CROP),--crop $(CROP)) --colors $(COLORS)
|
||||
|
||||
character: ## Ritaglia un foglio sprite 4x2 e prepara il personaggio (NAME=andrea, SHEET=..., HEIGHT=120, FRAMES=..., REF=stand)
|
||||
character: ## Ritaglia un foglio sprite 4x2 e prepara il personaggio (NAME=andrea, SHEET=..., HEIGHT=120, FRAMES=..., REF=stand, FIX=wave=1.3)
|
||||
$(PYTHON) tools/slice_sprites.py --sheet $(SHEET) --out /tmp/regolo-$(NAME) --cols 4 --rows 2 \
|
||||
--despill --names $(FRAMES) --prefix $(NAME)_
|
||||
$(PYTHON) tools/prepare_character.py /tmp/regolo-$(NAME) $(NAME) assets/characters --height $(HEIGHT) \
|
||||
--frames $(FRAMES) --ref $(REF)
|
||||
--frames $(FRAMES) --ref $(REF) $(if $(FIX),--fix $(FIX))
|
||||
|
||||
## ------------------------------------------------------------ docker
|
||||
|
||||
@@ -121,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)
|
||||
@@ -148,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'
|
||||
|
||||
@@ -1,75 +1,66 @@
|
||||
# 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.
|
||||
Un'avventura grafica punta-e-clicca, nello spirito delle avventure anni '90, ambientata a **San Piero a Sieve**
|
||||
(Mugello) nella settimana del **Palio della Fortezza del 2007**. Il palio, il quadro dipinto dai ragazzi delle
|
||||
medie, è sparito: Andrea, un ragazzo del paese, deve ritrovarlo prima della festa, fra vecchietti che litigano
|
||||
sulle due leggende del Regolo, il serpente della Fortezza, e un paese disegnato dalle fotografie vere.
|
||||
|
||||
*Al Lele, che mi ha fatto conoscere Monkey Island.*
|
||||
|
||||
Progetto in fase di ideazione: il documento di progetto è in [`docs/PROGETTO.md`](docs/PROGETTO.md).
|
||||
Per ora c'è un prototipo del motore con due scene di prova e grafica provvisoria.
|
||||
Si gioca online su **https://50037.manzolo.it** (50037 è il CAP di San Piero), nel browser, anche dal telefono.
|
||||
È gratuito e non commerciale.
|
||||
|
||||
## Generare sfondi dalle fotografie
|
||||
## Cosa c'è
|
||||
|
||||
Il generatore Python è `tools/genera.py`; istruzioni e prompt delle due nuove vedute
|
||||
sono descritti in [`docs/GENERAZIONE_SFONDI.md`](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.
|
||||
|
||||
```zsh
|
||||
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).
|
||||
|
||||
```zsh
|
||||
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`.
|
||||
- **Il primo capitolo**, dal pomeriggio alla sera: 38 scene, i dialoghi a scelte, l'inventario, la mappa del
|
||||
paese, il taccuino, il salvataggio automatico (e su file, per portarlo su un altro dispositivo).
|
||||
- **Le voci** di tutti i personaggi, in toscano, e le **musiche**.
|
||||
- **I giochi del paese**: la briscola, il tressette ai 21 e la scopa all'oratorio (con le carte toscane o le
|
||||
napoletane), le bocce al pallaio e il biliardo a cinque birilli al circolo, ognuno con tre livelli e un video
|
||||
«Come si gioca».
|
||||
- **Il paese vero**: gli sfondi sono disegnati dalle fotografie di San Piero; i personaggi, con il loro
|
||||
consenso, da persone vere.
|
||||
|
||||
## Giocare in locale
|
||||
|
||||
```zsh
|
||||
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**.
|
||||
|
||||
## In Docker
|
||||
Niente da installare e niente da compilare: HTML, CSS e moduli JavaScript ES.
|
||||
|
||||
```zsh
|
||||
make up # http://localhost:8080 (DOCKER_PORT=… per cambiarla)
|
||||
make down
|
||||
python3 -m http.server 8000 # poi http://localhost:8000
|
||||
```
|
||||
|
||||
## Struttura
|
||||
Oppure `make up` (Docker, su http://localhost:8080). Non aprire `index.html` con `file://`: i moduli vogliono HTTP.
|
||||
|
||||
- `src/engine/`: motore senza storia (`game.js` logica e coda delle azioni, `geometry.js` area calpestabile e
|
||||
percorsi, `command.js` verbi e clic, `render.js` disegno, `storage.js` salvataggio);
|
||||
- `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 con `tools/prepare_background.py` dagli originali in `assets/raw/`.
|
||||
- `assets/characters/`: fogli dei personaggi, tagliati con `tools/slice_sprites.py` e allineati con
|
||||
`tools/prepare_character.py` (istruzioni in testa al file).
|
||||
## Come è fatto
|
||||
|
||||
## Test
|
||||
- `src/engine/`: il motore (camminata con i percorsi, verbi e clic intelligente, dialoghi, inventario,
|
||||
salvataggi, musica, voci, suoni d'ambiente sintetizzati, effetti animati) e i minigiochi
|
||||
(`bocce.js`, `biliardo.js`, `briscola.js`, `tressette.js`, `scopa.js`, ognuno col suo `*-render.js`).
|
||||
- `src/story/`: la storia è dati, non codice: scene, oggetti, personaggi, dialoghi, soluzione (`solution.js`).
|
||||
- `assets/`: sfondi, sprite, musiche, voci, carattere, video.
|
||||
- `tools/`: gli strumenti (sprite dai fogli, voci con XTTS, musiche sintetizzate, favicon, taratura dei minigiochi).
|
||||
- `tests/`: `npm test` (unità: regole, storia coerente, voci, salvataggi) e `npm run browser` (Playwright: percorre
|
||||
tutta la soluzione dell'avventura, su desktop e telefono); `npm run browser:briscola`, `:tressette`, `:scopa`,
|
||||
`:biliardo`, `:effects` per le parti singole.
|
||||
- `video/`: i copioni dei video «Come si gioca» e della demo, girati in una macchina virtuale.
|
||||
- `docs/`: `PROGETTO.md` (l'idea, i personaggi, la mappa) e `STATO.md` (dove siamo, cosa manca).
|
||||
|
||||
```zsh
|
||||
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
|
||||
make verify # sintassi, test, prova nel browser: quello che gira prima di ogni versione
|
||||
make voci # le voci delle battute nuove (XTTS-v2 su GPU)
|
||||
make bump # nuova versione: verifica, commit e tag
|
||||
make deploy # pubblica l'ultimo commit (immagine Docker spedita al server)
|
||||
```
|
||||
|
||||
## Chi ha fatto cosa
|
||||
|
||||
Un gioco di Andrea Manzi (Manzolo). Idee, ricordi, foto e volti: gli amici di San Piero, nei Ringraziamenti del
|
||||
gioco. Programmazione con Claude e Codex; sfondi dalle fotografie di Andrea con gli strumenti di generazione di
|
||||
immagini; musiche di Andrea con Suno e, per i giochi, sintetizzate da script; voci con XTTS-v2; carattere Press
|
||||
Start 2P.
|
||||
|
||||
## Licenze
|
||||
|
||||
Il codice è MIT; storia, grafica e musiche sintetizzate sono Creative Commons BY-NC-SA 4.0; le persone vere
|
||||
ritratte, la foto del palio, le musiche di Suno e le voci XTTS (solo uso non commerciale) hanno le loro
|
||||
condizioni. Tutto in [`LICENSE`](LICENSE).
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"image": "andrea-basket.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"hold": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 51,
|
||||
"h": 120,
|
||||
"ax": 19.1,
|
||||
"ay": 120
|
||||
},
|
||||
"load": {
|
||||
"x": 53,
|
||||
"y": 0,
|
||||
"w": 62,
|
||||
"h": 106,
|
||||
"ax": 32.9,
|
||||
"ay": 106
|
||||
},
|
||||
"shoot": {
|
||||
"x": 117,
|
||||
"y": 0,
|
||||
"w": 69,
|
||||
"h": 124,
|
||||
"ax": 30.0,
|
||||
"ay": 124
|
||||
},
|
||||
"cheer": {
|
||||
"x": 188,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 118,
|
||||
"ax": 26.5,
|
||||
"ay": 118
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"image": "andrea-pesca.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"hold": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 101,
|
||||
"h": 120,
|
||||
"ax": 31.2,
|
||||
"ay": 120
|
||||
},
|
||||
"cast": {
|
||||
"x": 103,
|
||||
"y": 0,
|
||||
"w": 145,
|
||||
"h": 89,
|
||||
"ax": 56.1,
|
||||
"ay": 89
|
||||
},
|
||||
"reel": {
|
||||
"x": 250,
|
||||
"y": 0,
|
||||
"w": 102,
|
||||
"h": 107,
|
||||
"ax": 32.5,
|
||||
"ay": 107
|
||||
},
|
||||
"show": {
|
||||
"x": 354,
|
||||
"y": 0,
|
||||
"w": 129,
|
||||
"h": 113,
|
||||
"ax": 87.9,
|
||||
"ay": 113
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 46 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "baldoria.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"stand": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 120,
|
||||
"ax": 28.6,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 61,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 120,
|
||||
"ax": 28.4,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 122,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 120,
|
||||
"ax": 28.6,
|
||||
"ay": 120
|
||||
},
|
||||
"explain": {
|
||||
"x": 183,
|
||||
"y": 0,
|
||||
"w": 67,
|
||||
"h": 122,
|
||||
"ax": 29.4,
|
||||
"ay": 122
|
||||
},
|
||||
"wave": {
|
||||
"x": 252,
|
||||
"y": 0,
|
||||
"w": 101,
|
||||
"h": 156,
|
||||
"ax": 48.9,
|
||||
"ay": 156
|
||||
},
|
||||
"wave2": {
|
||||
"x": 355,
|
||||
"y": 0,
|
||||
"w": 127,
|
||||
"h": 156,
|
||||
"ax": 81.8,
|
||||
"ay": 156
|
||||
},
|
||||
"cheer": {
|
||||
"x": 484,
|
||||
"y": 0,
|
||||
"w": 70,
|
||||
"h": 120,
|
||||
"ax": 33.6,
|
||||
"ay": 120
|
||||
},
|
||||
"laugh": {
|
||||
"x": 556,
|
||||
"y": 0,
|
||||
"w": 78,
|
||||
"h": 113,
|
||||
"ax": 31.1,
|
||||
"ay": 113
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 142 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "bertovo.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"stand": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 120,
|
||||
"ax": 27.4,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 55,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 121,
|
||||
"ax": 26.1,
|
||||
"ay": 121
|
||||
},
|
||||
"talk": {
|
||||
"x": 109,
|
||||
"y": 0,
|
||||
"w": 79,
|
||||
"h": 121,
|
||||
"ax": 31.3,
|
||||
"ay": 121
|
||||
},
|
||||
"explain": {
|
||||
"x": 190,
|
||||
"y": 0,
|
||||
"w": 58,
|
||||
"h": 121,
|
||||
"ax": 30.2,
|
||||
"ay": 121
|
||||
},
|
||||
"laugh": {
|
||||
"x": 250,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 122,
|
||||
"ax": 28.6,
|
||||
"ay": 122
|
||||
},
|
||||
"chalk": {
|
||||
"x": 306,
|
||||
"y": 0,
|
||||
"w": 55,
|
||||
"h": 121,
|
||||
"ax": 25.0,
|
||||
"ay": 121
|
||||
},
|
||||
"shrug": {
|
||||
"x": 363,
|
||||
"y": 0,
|
||||
"w": 91,
|
||||
"h": 122,
|
||||
"ax": 45.4,
|
||||
"ay": 122
|
||||
},
|
||||
"cheer": {
|
||||
"x": 456,
|
||||
"y": 0,
|
||||
"w": 58,
|
||||
"h": 125,
|
||||
"ax": 31.0,
|
||||
"ay": 125
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 95 KiB |
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"image": "betino.png",
|
||||
"height": 104,
|
||||
"frames": {
|
||||
"idle": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 161,
|
||||
"h": 104,
|
||||
"ax": 80.5,
|
||||
"ay": 104
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 32 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "chiaru.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"explain": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 56,
|
||||
"h": 120,
|
||||
"ax": 31.5,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 58,
|
||||
"y": 0,
|
||||
"w": 64,
|
||||
"h": 119,
|
||||
"ax": 38.5,
|
||||
"ay": 119
|
||||
},
|
||||
"blink": {
|
||||
"x": 124,
|
||||
"y": 0,
|
||||
"w": 44,
|
||||
"h": 120,
|
||||
"ax": 24.2,
|
||||
"ay": 120
|
||||
},
|
||||
"stand": {
|
||||
"x": 170,
|
||||
"y": 0,
|
||||
"w": 44,
|
||||
"h": 120,
|
||||
"ax": 24.2,
|
||||
"ay": 120
|
||||
},
|
||||
"cheer": {
|
||||
"x": 216,
|
||||
"y": 0,
|
||||
"w": 66,
|
||||
"h": 118,
|
||||
"ax": 31.5,
|
||||
"ay": 118
|
||||
},
|
||||
"shrug": {
|
||||
"x": 284,
|
||||
"y": 0,
|
||||
"w": 79,
|
||||
"h": 119,
|
||||
"ax": 42.2,
|
||||
"ay": 119
|
||||
},
|
||||
"watch": {
|
||||
"x": 365,
|
||||
"y": 0,
|
||||
"w": 63,
|
||||
"h": 98,
|
||||
"ax": 30.3,
|
||||
"ay": 98
|
||||
},
|
||||
"laugh": {
|
||||
"x": 430,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 120,
|
||||
"ax": 30.3,
|
||||
"ay": 120
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 100 KiB |
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"image": "ghiacciomobile.png",
|
||||
"height": 144,
|
||||
"frames": {
|
||||
"idle": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 324,
|
||||
"h": 144,
|
||||
"ax": 162,
|
||||
"ay": 144
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 59 KiB |
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"image": "giocatore-carte.png",
|
||||
"height": 100,
|
||||
"frames": {
|
||||
"sit": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 67,
|
||||
"h": 100,
|
||||
"ax": 25.7,
|
||||
"ay": 100
|
||||
},
|
||||
"talk": {
|
||||
"x": 69,
|
||||
"y": 0,
|
||||
"w": 68,
|
||||
"h": 100,
|
||||
"ax": 27.6,
|
||||
"ay": 100
|
||||
},
|
||||
"laugh": {
|
||||
"x": 139,
|
||||
"y": 0,
|
||||
"w": 72,
|
||||
"h": 99,
|
||||
"ax": 19.3,
|
||||
"ay": 99
|
||||
},
|
||||
"shuffle": {
|
||||
"x": 213,
|
||||
"y": 0,
|
||||
"w": 67,
|
||||
"h": 97,
|
||||
"ax": 25.2,
|
||||
"ay": 97
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 45 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "ing-tozzi.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"stand": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 120,
|
||||
"ax": 27.9,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 55,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 120,
|
||||
"ax": 27.8,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 111,
|
||||
"y": 0,
|
||||
"w": 77,
|
||||
"h": 119,
|
||||
"ax": 29.9,
|
||||
"ay": 119
|
||||
},
|
||||
"explain": {
|
||||
"x": 190,
|
||||
"y": 0,
|
||||
"w": 58,
|
||||
"h": 119,
|
||||
"ax": 30.8,
|
||||
"ay": 119
|
||||
},
|
||||
"laugh": {
|
||||
"x": 250,
|
||||
"y": 0,
|
||||
"w": 53,
|
||||
"h": 119,
|
||||
"ax": 28.2,
|
||||
"ay": 119
|
||||
},
|
||||
"chalk": {
|
||||
"x": 305,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 119,
|
||||
"ax": 24.1,
|
||||
"ay": 119
|
||||
},
|
||||
"shrug": {
|
||||
"x": 359,
|
||||
"y": 0,
|
||||
"w": 87,
|
||||
"h": 120,
|
||||
"ax": 43.9,
|
||||
"ay": 120
|
||||
},
|
||||
"cheer": {
|
||||
"x": 448,
|
||||
"y": 0,
|
||||
"w": 56,
|
||||
"h": 123,
|
||||
"ax": 30.9,
|
||||
"ay": 123
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 102 KiB |
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"image": "pescatori.png",
|
||||
"height": 110,
|
||||
"frames": {
|
||||
"work": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 170,
|
||||
"h": 110,
|
||||
"ax": 84.0,
|
||||
"ay": 110
|
||||
},
|
||||
"talk": {
|
||||
"x": 172,
|
||||
"y": 0,
|
||||
"w": 166,
|
||||
"h": 112,
|
||||
"ax": 79.2,
|
||||
"ay": 112
|
||||
},
|
||||
"laugh": {
|
||||
"x": 340,
|
||||
"y": 0,
|
||||
"w": 164,
|
||||
"h": 113,
|
||||
"ax": 79.7,
|
||||
"ay": 113
|
||||
},
|
||||
"proud": {
|
||||
"x": 506,
|
||||
"y": 0,
|
||||
"w": 166,
|
||||
"h": 121,
|
||||
"ax": 80.7,
|
||||
"ay": 121
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 157 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "pierino_parigi.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"explain": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 61,
|
||||
"h": 120,
|
||||
"ax": 29.3,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 63,
|
||||
"y": 0,
|
||||
"w": 69,
|
||||
"h": 120,
|
||||
"ax": 26.6,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 134,
|
||||
"y": 0,
|
||||
"w": 44,
|
||||
"h": 120,
|
||||
"ax": 25.0,
|
||||
"ay": 120
|
||||
},
|
||||
"stand": {
|
||||
"x": 180,
|
||||
"y": 0,
|
||||
"w": 44,
|
||||
"h": 120,
|
||||
"ax": 24.9,
|
||||
"ay": 120
|
||||
},
|
||||
"cheer": {
|
||||
"x": 226,
|
||||
"y": 0,
|
||||
"w": 66,
|
||||
"h": 128,
|
||||
"ax": 34.6,
|
||||
"ay": 128
|
||||
},
|
||||
"shrug": {
|
||||
"x": 294,
|
||||
"y": 0,
|
||||
"w": 89,
|
||||
"h": 120,
|
||||
"ax": 43.8,
|
||||
"ay": 120
|
||||
},
|
||||
"cards": {
|
||||
"x": 385,
|
||||
"y": 0,
|
||||
"w": 50,
|
||||
"h": 120,
|
||||
"ax": 26.2,
|
||||
"ay": 120
|
||||
},
|
||||
"laugh": {
|
||||
"x": 437,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 123,
|
||||
"ax": 24.4,
|
||||
"ay": 123
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 105 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "taglia.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"stand": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 120,
|
||||
"ax": 27.7,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 56,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 120,
|
||||
"ax": 27.7,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 112,
|
||||
"y": 0,
|
||||
"w": 75,
|
||||
"h": 120,
|
||||
"ax": 32.2,
|
||||
"ay": 120
|
||||
},
|
||||
"explain": {
|
||||
"x": 189,
|
||||
"y": 0,
|
||||
"w": 64,
|
||||
"h": 120,
|
||||
"ax": 33.6,
|
||||
"ay": 120
|
||||
},
|
||||
"laugh": {
|
||||
"x": 255,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 121,
|
||||
"ax": 25.2,
|
||||
"ay": 121
|
||||
},
|
||||
"aim": {
|
||||
"x": 316,
|
||||
"y": 0,
|
||||
"w": 97,
|
||||
"h": 114,
|
||||
"ax": 55.6,
|
||||
"ay": 114
|
||||
},
|
||||
"shrug": {
|
||||
"x": 415,
|
||||
"y": 0,
|
||||
"w": 91,
|
||||
"h": 117,
|
||||
"ax": 44.2,
|
||||
"ay": 117
|
||||
},
|
||||
"throw": {
|
||||
"x": 508,
|
||||
"y": 0,
|
||||
"w": 71,
|
||||
"h": 120,
|
||||
"ax": 30.3,
|
||||
"ay": 120
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 102 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "vannino.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"explain": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 56,
|
||||
"h": 120,
|
||||
"ax": 28.6,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 58,
|
||||
"y": 0,
|
||||
"w": 64,
|
||||
"h": 120,
|
||||
"ax": 25.6,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 124,
|
||||
"y": 0,
|
||||
"w": 45,
|
||||
"h": 120,
|
||||
"ax": 25.0,
|
||||
"ay": 120
|
||||
},
|
||||
"stand": {
|
||||
"x": 171,
|
||||
"y": 0,
|
||||
"w": 46,
|
||||
"h": 120,
|
||||
"ax": 25.3,
|
||||
"ay": 120
|
||||
},
|
||||
"cheer": {
|
||||
"x": 219,
|
||||
"y": 0,
|
||||
"w": 52,
|
||||
"h": 120,
|
||||
"ax": 26.8,
|
||||
"ay": 120
|
||||
},
|
||||
"shrug": {
|
||||
"x": 273,
|
||||
"y": 0,
|
||||
"w": 80,
|
||||
"h": 120,
|
||||
"ax": 40.7,
|
||||
"ay": 120
|
||||
},
|
||||
"cards": {
|
||||
"x": 355,
|
||||
"y": 0,
|
||||
"w": 45,
|
||||
"h": 121,
|
||||
"ax": 22.7,
|
||||
"ay": 121
|
||||
},
|
||||
"laugh": {
|
||||
"x": 402,
|
||||
"y": 0,
|
||||
"w": 46,
|
||||
"h": 121,
|
||||
"ax": 22.7,
|
||||
"ay": 121
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "zio_mario.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"explain": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 67,
|
||||
"h": 120,
|
||||
"ax": 33.8,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 69,
|
||||
"y": 0,
|
||||
"w": 79,
|
||||
"h": 120,
|
||||
"ax": 44.8,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 150,
|
||||
"y": 0,
|
||||
"w": 57,
|
||||
"h": 120,
|
||||
"ax": 28.1,
|
||||
"ay": 120
|
||||
},
|
||||
"stand": {
|
||||
"x": 209,
|
||||
"y": 0,
|
||||
"w": 57,
|
||||
"h": 120,
|
||||
"ax": 27.8,
|
||||
"ay": 120
|
||||
},
|
||||
"shrug": {
|
||||
"x": 268,
|
||||
"y": 0,
|
||||
"w": 94,
|
||||
"h": 120,
|
||||
"ax": 48.1,
|
||||
"ay": 120
|
||||
},
|
||||
"point": {
|
||||
"x": 364,
|
||||
"y": 0,
|
||||
"w": 87,
|
||||
"h": 120,
|
||||
"ax": 51.0,
|
||||
"ay": 120
|
||||
},
|
||||
"think": {
|
||||
"x": 453,
|
||||
"y": 0,
|
||||
"w": 58,
|
||||
"h": 121,
|
||||
"ax": 29.2,
|
||||
"ay": 121
|
||||
},
|
||||
"laugh": {
|
||||
"x": 513,
|
||||
"y": 0,
|
||||
"w": 59,
|
||||
"h": 121,
|
||||
"ax": 30.1,
|
||||
"ay": 121
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 276 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 537 KiB |
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 526 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 317 KiB |
|
After Width: | Height: | Size: 388 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 1006 B |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 316 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 772 B |
|
After Width: | Height: | Size: 341 B |
|
After Width: | Height: | Size: 364 B |
|
After Width: | Height: | Size: 407 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 835 B |
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,57 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Language" content="it">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<title>Responsabilità degli Iscritti</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div align="center">
|
||||
<center>
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600">
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<p align="center" style="margin-top: 0; margin-bottom: 0"><b>
|
||||
<font size="6" face="Arial">Responsabilità degli Iscritti</font></b></p>
|
||||
<p align="center" style="margin-top: 0; margin-bottom: 0"> </p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial">Si fa presente che lo <b>Staff di WWW.SANPIERO50037.IT</b>,
|
||||
non effettuerà controllo preventivo sul contenuto dei commenti e degli
|
||||
interventi sul "MURO DEL SANPIERINO", ma, <b><u>vista la possibilità di
|
||||
risalire agli autori degli stessi</u></b>, si sentirà autorizzato alla
|
||||
comunicazione di tali dati ai <b>Soggetti Interessati e all'Autorità
|
||||
Giudiziaria</b> in caso di violazione di qualsiasi articolo del C.C. e del
|
||||
C.P., si invita pertanto a prendere coscienza delle<b> responsabilità
|
||||
civili e penali </b>che l'utente si assume in prima persona per il
|
||||
contenuto di ciò che scrive.</font></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0"> </p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0"><b>
|
||||
<font face="Arial">E' pertanto necessario che tutti gli utenti garantiscano il contenuto:</font></b></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial"><b>1 -</b> Non sia volgare, diffamatorio e
|
||||
pregiudizievole;</font></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial"><b>2 -</b> Non violi in alcun modo i diritti di terzi;</font></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial"><b>3 -</b> Non violi i diritti stabiliti dal
|
||||
<a href="Privacy.htm">D.Lgs. 30.06.2003 n°196</a> e ogni altra normativa
|
||||
in</font></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial"> materia di Privacy;</font></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial"><b>4 -</b> Non violi la vigente normativa in materia di
|
||||
Pubblica Sicurezza e Buon Costume e/o altre norme imperative;</font></p>
|
||||
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||
<font face="Arial"><b>5 -</b> Non venga inserito per fini di "Spamming".</font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</div>
|
||||
|
||||
<p align="center"><a href="index.html" style="font: bold 14px Tahoma; color: #800000">« Torna al Muro</a></p></body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,97 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
|
||||
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||
<title>Guida al Muro del Sanpierino</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div align="center">
|
||||
<center>
|
||||
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="1024">
|
||||
<tr>
|
||||
<td width="100%">
|
||||
<p class="MsoNormal" align="center" style="text-align: center; margin-top: 0; margin-bottom: 0">
|
||||
<b><span style="font-size: 22.0pt">Guida al Muro del Sanpierino</span></b></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<b><u><span style="text-decoration: none; font-size: 18.0pt"> </span></u></b></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<b><u><span style="font-size: 18.0pt">1 – Iscrizione</span></u></b></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<span style="font-size: 14.0pt">Se vuoi scrivere un messaggio sul Muro del
|
||||
Sanpierino adesso dovrai prima essere iscritto. Iscriversi è gratuito e
|
||||
semplicissimo, sarà sufficiente andare sul Muro e cliccare sull’icona
|
||||
“Scrivi”, da lì verrai inviato nella pagina di “Login” dove troverai il
|
||||
tasto “Iscriviti”, cliccandolo ti troverai direttamente nella pagina
|
||||
d’Iscrizione. Appena riceveremo la tua richiesta attiveremo il tuo account
|
||||
e riceverai una mail, all’indirizzo inserito, a conferma dell’attivazione.
|
||||
A quel punto potrai scrivere sempre e in qualunque momento sul Muro.</span></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<span style="font-size: 14.0pt"> </span></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<b><u><span style="font-size: 18.0pt">2 – Scrivere</span></u></b></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<span style="font-size: 14.0pt">Per scrivere sul Muro sarà sufficiente
|
||||
cliccare sul tasto “Scrivi” e inserire il proprio Nickname e Password (se
|
||||
non si è iscritti segui le istruzioni al paragrafo 1- Iscrizione). Vi
|
||||
troverete nella pagina di scrittura vera e propria dove potrete scegliere
|
||||
se mantenere il vostro Nickname d’iscrizione o variarlo, se rendere
|
||||
visibile il vostro indirizzo e-mail oppure no e ancora scegliere fra le
|
||||
oltre 470 smiles disponibili e ancora variare l’aspetto grafico del vostro
|
||||
messaggio consultando la pagiana di aiuto per la personalizzazione… tante
|
||||
alternative che sicuramente saranno di vostro gradimento!</span></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<span style="font-size: 14.0pt"> </span></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<b><u><span style="font-size: 18.0pt">3 – Privacy & Responsabilità</span></u></b></p>
|
||||
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||
<span style="font-size: 14.0pt">L’aspetto più importante di questo Nuovo
|
||||
Muro del Sanpierino è proprio quello relativo alle Resposabilità che ogni
|
||||
utente si assume nei post inseriti. Ogni Utente, pur facendo salva la
|
||||
propria Privacy, non dovrà in alcun modo ledere gli altrui diritti e
|
||||
quindi:</span></p>
|
||||
<p style="text-align: justify; margin: 0 0cm">
|
||||
<span style="font-size: 14.0pt"> <b>1 -</b> Non dovrà essere
|
||||
volgare, diffamatorio e pregiudizievole;</span></p>
|
||||
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
|
||||
<span style="font-size: 14.0pt">2 -</span></b><span style="font-size: 14.0pt">
|
||||
Non dovrà violare in alcun modo i diritti di terzi;</span></p>
|
||||
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
|
||||
<span style="font-size: 14.0pt">3 -</span></b><span style="font-size: 14.0pt">
|
||||
Non dovrà violare i diritti stabiliti dal
|
||||
<a href="http://www.sanpiero50037.it/spswall/Privacy.htm" style="color: blue; text-decoration: underline; text-underline: single">
|
||||
D.Lgs. 30.06.2003 n°196</a> e ogni altra </span></p>
|
||||
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm">
|
||||
<span style="font-size: 14.0pt"> normativa in materia di Privacy;</span></p>
|
||||
<p style="text-align: justify; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0; margin-bottom: 0">
|
||||
<b><span style="font-size: 14.0pt">4 -</span></b><span style="font-size: 14.0pt">
|
||||
Non dovrà violare la vigente normativa in materia di Pubblica Sicurezza e
|
||||
</span></p>
|
||||
<p style="text-align: justify; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0; margin-bottom: 0">
|
||||
<b><span style="font-size: 14.0pt"> </span></b>
|
||||
<span style="font-size: 14.0pt">Buon Costume e/o altre norme imperative;</span></p>
|
||||
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
|
||||
<span style="font-size: 14.0pt">5 -</span></b><span style="font-size: 14.0pt">
|
||||
Non dovrà inserire post per fini di "Spamming".</span></p>
|
||||
<p style="text-align: justify; margin: 0 0cm">
|
||||
<span style="font-size: 14.0pt">In caso di violazione di una delle regole
|
||||
descritte qui sopra il messaggio verrà cancellato quanto prima e, in caso
|
||||
di richiesta da parte del Soggetto interessato o dell’Autorità
|
||||
Giudiziaria, verranno comunicati i suoi dati oltre, naturalmente, al
|
||||
blocco dell’Utente che si renderà responsabile di tale messaggio. Per
|
||||
tutti gli altri messaggi la Privacy dei nostri Utenti sarà tutelata come
|
||||
descritto dal
|
||||
<a href="http://www.sanpiero50037.it/spswall/Privacy.htm" style="color: blue; text-decoration: underline; text-underline: single">
|
||||
D.Lgs. 30.06.2003 n°196</a>, tranne nei caso di violazione dei nostri Data
|
||||
Base da attacchi esterni.</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</div>
|
||||
|
||||
<p align="center"><a href="index.html" style="font: bold 14px Tahoma; color: #800000">« Torna al Muro</a></p></body>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 177 B |
|
After Width: | Height: | Size: 173 B |
|
After Width: | Height: | Size: 202 B |
|
After Width: | Height: | Size: 284 B |
|
After Width: | Height: | Size: 278 B |
|
After Width: | Height: | Size: 176 B |
|
After Width: | Height: | Size: 181 B |