Sì. E l'architettura che descrivi è adatta a
Medioevo Universale.
Il punto importante è non pensare l'app come un semplice "segnapunti", ma come un
motore dello stato della partita: registra pochi eventi decisi dai giocatori e ricalcola automaticamente tutto ciò che ne deriva.
Esempio
Il giocatore A comunica:
Conquisto Milano
L'app esegue automaticamente:
Codice: Seleziona tutto
Milano
Proprietario precedente: B
↓
Proprietario nuovo: A
↓
B perde Milano
↓
ricalcolo territori B
ricalcolo territori A
↓
tipo terreno di Milano
+
tecnologie di A
+
carte / imperi / bonus di A
↓
nuove TASSE
nuove ENTRATE
eventuali BONUS/MALUS
↓
aggiornamento di tutti i cellulari
Questo è esattamente il genere di logica che un'app può gestire molto bene.
Un cellulare come "server"
Anche questo è fattibile.
Immagino una modalità del tipo:
Codice: Seleziona tutto
CELLULARE HOST
Partita Medioevo Universale
│
Wi-Fi / hotspot
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
Giocatore A Giocatore B Giocatore C
Francia Impero Venezia
Uno dei telefoni crea la partita e diventa
HOST.
Gli altri vedono:
MEDIOEVO UNIVERSALE
Partita: MU-8472
[ ENTR A NELLA PARTITA ]
Potremmo anche usare un
QR code: l'host crea la partita, gli altri lo inquadrano e sono dentro.
Un aspetto che cambierei leggermente
Non farei però in modo che ogni giocatore possa modificare liberamente qualsiasi dato.
Meglio distinguere tra
azioni dichiarate e
stato calcolato.
Il giocatore può dichiarare:
- conquista territorio
- perde/cede territorio
- acquista tecnologia
- acquisisce carta Impero
- costruisce qualcosa
- modifica eserciti/risorse
- gioca una carta
- ecc.
Ma
TASSE, bonus, modificatori e valori derivati non sono modificabili manualmente.
Li calcola il sistema.
Questo evita una quantità enorme di errori.
[hr]
La parte interessante: il database
Per esempio avremmo oggetti separati:
Codice: Seleziona tutto
GIOCATORI
TERRITORI
TECNOLOGIE
CARTE IMPERO
EDIFICI
UNITÀ
RISORSE
EVENTI
REGOLE
Un territorio potrebbe contenere:
Codice: Seleziona tutto
ID: T023
Nome: Milano
Tipo: Pianura
Regione: Lombardia
Valore base tasse: 4
Produzione: 3
Commercio: 2
Proprietario: Player_A
Una tecnologia:
Codice: Seleziona tutto
Agricoltura avanzata
Effetto:
+1 tassa sui territori Pianura
+1 produzione agricola
A questo punto il sistema non memorizza necessariamente:
ma calcola:
Codice: Seleziona tutto
Tassa Milano =
valore base territorio
+ tecnologie proprietario
+ edifici
+ carte Impero
+ eventi
+ altri modificatori
Ed è qui che l'app diventerebbe molto potente.
[hr]
Ogni giocatore vede il proprio "cruscotto"
Per esempio sul mio telefono potrei vedere:
Codice: Seleziona tutto
══════════════════════════
REGNO DI FRANCIA
══════════════════════════
Territori 14
Popolazione 37
Tasse 62
Commercio 18
Entrate totali 80
TECNOLOGIE
✓ Agricoltura
✓ Moneta
✓ Fortificazioni
✓ Navigazione
CARTE IMPERO
Corona Imperiale
Via della Seta
TERRITORI
Parigi Pianura 7
Bordeaux Pianura 6
Normandia Costa 5
...
Mentre un altro giocatore vede
il proprio impero, non quello di A.
Possiamo decidere quali informazioni degli avversari siano pubbliche e quali private.
Questo è particolarmente interessante in un gioco strategico.
[hr]
E non serve necessariamente Internet
Per il tuo caso valuterei seriamente una
app locale-first.
Un telefono crea la rete/hotspot oppure tutti i telefoni sono collegati allo stesso Wi-Fi.
Codice: Seleziona tutto
HOST
192.168.x.x
│
├── Player A
├── Player B
├── Player C
├── Player D
├── Player E
└── Player F
Quindi potreste giocare anche:
- in una casa senza Internet;
- in una convention;
- in un locale;
- in una ludoteca.
Il telefono host conserva il
database principale della partita.
Gli altri dispositivi mantengono una copia sincronizzata dei dati che devono visualizzare.
[hr]
Ma aggiungerei una protezione importante
Ogni operazione dovrebbe diventare un
evento.
Per esempio:
Codice: Seleziona tutto
Turno 7 — 21:34
Player A
CONQUISTA
Milano
da Player B → Player A
Poi:
Codice: Seleziona tutto
21:35
Player A
ACQUISTA TECNOLOGIA
Agricoltura avanzata
Questo crea un registro:
Codice: Seleziona tutto
# | Giocatore | Azione | Oggetto
----+-----------+-------------+---------------------
151 | A | Conquista | Milano
152 | A | Tecnologia | Agricoltura avanzata
153 | C | Costruisce | Mercato
154 | B | Conquista | Genova
Con un vantaggio enorme:
UNDO
Se qualcuno sbaglia:
"No, Milano non l'avevo conquistata!"
l'host può annullare l'azione.
Il sistema ripristina automaticamente proprietario, tasse, produzione, bonus ecc.
Per un gioco complesso come Medioevo Universale, considero questa funzione quasi indispensabile.
[hr]
Io strutturerei il progetto in 4 livelli
Codice: Seleziona tutto
MEDIOEVO UNIVERSALE APP
1. DATABASE DEL GIOCO
territori
tecnologie
carte
edifici
unità
regole
↓
2. MOTORE DELLE REGOLE
tasse
produzione
bonus
modificatori
conquiste
tecnologie
ecc.
↓
3. MOTORE PARTITA
giocatori
turno
territori posseduti
tecnologie possedute
carte possedute
cronologia
↓
4. INTERFACCIA
smartphone
tablet
eventualmente PC
Questa separazione è importante perché in futuro puoi cambiare la grafica dell'app senza dover riscrivere le regole.
[hr]
E farei una scelta ancora più importante
Non partirei dall'app.
Partirei dalla
Bibbia digitale di Medioevo Universale.
Dobbiamo trasformare il regolamento in dati strutturati.
Per esempio:
Codice: Seleziona tutto
territori.csv
tecnologie.csv
carte_impero.csv
edifici.csv
unita.csv
risorse.csv
modificatori.csv
e soprattutto costruire una tabella delle
dipendenze:
Codice: Seleziona tutto
TECNOLOGIA
↓
modifica
↓
TIPO TERRENO
↓
modifica
↓
TASSE
oppure:
Codice: Seleziona tutto
Carta Impero
+
Tecnologia
+
Territorio
+
Edificio
+
Evento
↓
VALORE FINALE
Questa è probabilmente
la parte più impegnativa dell'intero progetto, più del codice dell'app.
Una volta formalizzate bene queste relazioni, costruire il software diventa molto più lineare.
[hr]
Primo prototipo
Non cercherei subito di informatizzare tutto Medioevo Universale.
Farei un MVP estremamente concreto:
4 giocatori + 20 territori + 5 tecnologie + tasse.
Deve già permettere di:
- creare una partita;
- collegare più telefoni;
- assegnare i giocatori;
- assegnare i territori iniziali;
- conquistare un territorio;
- trasferirlo automaticamente dal vecchio al nuovo proprietario;
- acquistare una tecnologia;
- ricalcolare automaticamente le tasse;
- sincronizzare i telefoni;
- salvare e riprendere la partita.
Se questo funziona, abbiamo dimostrato praticamente tutta l'architettura necessaria. Poi aggiungiamo progressivamente carte Impero, edifici, commercio, eserciti, eventi e gli altri sottosistemi.
Quindi sì: è assolutamente fattibile. E per un gioco complesso come Medioevo Universale può essere più interessante di una semplice trasposizione digitale, perché il tavolo e le miniature rimangono il gioco, mentre l'app elimina soprattutto la parte amministrativa.
Il passo successivo utile è prendere
un territorio reale di Medioevo Universale + 2-3 tecnologie che ne modificano le tasse e modellare insieme l'intera catena di calcolo. Da quel singolo esempio possiamo ricavare la struttura del database dell'app.