Documentazione
Panoramica
Architettura
Aggiornata 2026-11-03
Architettura
Il kit separa la logica pura di gioco da HTTP, persistenza, autenticazione e presentazione. Questo confine permette allo stesso motore di servire giochi molto diversi.
Livelli
| Livello | Posizione | Responsabilità |
|---|---|---|
| Dominio | app/Domain/Engine |
Calcoli puri e deterministici: gare, punteggio, fusione, allevamento, ciclo di vita, requisiti, simulatori |
| Persistenza | app/Models, database/migrations |
Modelli Eloquent, migrazioni additive, seeder |
| Applicazione | app/Services |
Orchestrazione, transazioni, operazioni consapevoli dell'autorizzazione |
| HTTP | app/Http |
Controller, request, resource, policy, middleware |
| Admin | app/Filament |
Control plane dell'operatore |
| Web | resources/views, routes/web.php |
Pagine pubbliche, web di gioco, documentazione prodotto |
| Client | flutter/ |
Client Android e web |
| API | routes/api.php |
Contratto versionato /api/v1 |
Autorità del server
Il client non sceglie mai il seed autoritativo, l'esito della lineup o il risultato. Il server:
- valida proprietà, lineup e regole;
- seleziona o salva la combinazione dei task;
- calcola il risultato in modo deterministico;
- salva un replay con la traccia;
- concede ricompense in modo idempotente.
Contratto del tema
theme.yaml è l'unica fonte di vocabolario e forma del gioco. Un theme pack dichiara anche pack.yaml, i file di etichetta e i seeder di contenuto.
Versionamento
- I profili meccaniche sono versionati e attivati atomicamente.
- Collezionabili, tratti, prove, risultati e regole di contenuto hanno versioni.
- Le definizioni e le attivazioni delle abilità sono versionate.
- L'API è versionata sotto
/api/v1e verificata da un test di parità OpenAPI.
Modalità di deployment
- Gioco (default): il web di gioco è alla radice.
- Sito prodotto (
PRODUCT_SITE_ENABLED=true): il sito marketing è alla radice e le pagine di gioco del giocatore vivono sotto/demo.