Panoramica

🧪 Prototipo concept (2026) — sviluppato come demo di pitch per una selezione di un publisher di videogiochi.

Un prototipo completo di wargame a turni realizzato in Unity 6: battaglie tattiche su griglia esagonale, un layer campagna con regioni e rinforzi, avversari guidati dall’AI e un map editor integrato. Sviluppato da un team di tre persone — due game designer e io come unico programmatore — per dimostrare il core gameplay loop e la fattibilità tecnica del concept.

Video Demo


Tecnologie Utilizzate

  • Unity 6 (URP)
  • C# Scripting
  • Unity Input System
  • AI a Behavior Tree custom (scritta da zero)
  • Rendering GPU instanced / indirect per grandi quantità di unità
  • Shader custom

Caratteristiche

Sistema di Battaglia Tattica

  • Campo di battaglia a griglia esagonale con tipi di terreno ed effetti delle tile
  • Combattimento a turni tra reggimenti con abilità passive e log di combattimento
  • Condizioni di vittoria modulari (annientamento, soglie di ritirata)

Layer Campagna

  • Campagna a regioni con fasi del turno, rinforzi e stato persistente dei battaglioni
  • AI avversaria di campagna e salvataggio/caricamento dell’intero stato di gioco

Map Editor Integrato

  • Map editor in-game con supporto save/load, per creare e iterare scenari rapidamente

Performance

  • Rendering GPU instanced di tile e unità (indirect rendering) per supportare mappe grandi e molte unità a frame rate elevati

Architettura e Dettagli Tecnici

  • Architettura disaccoppiata: service locator leggero e manager event-driven, per mantenere indipendenti e testabili i layer di battaglia, campagna e UI.
  • Design data-driven: scenari, reggimenti, regioni e set di rinforzi sono configurati tramite ScriptableObject — nuovi contenuti si aggiungono senza toccare il codice.
  • AI a Behavior Tree custom, scritta da zero: un core BT riutilizzabile con librerie separate di azioni e condizioni, che guida sia l’AI tattica in battaglia (selezione dei bersagli, posizionamento) sia l’avversario a livello di campagna.
  • Pipeline dei turni deterministica con fasi esplicite (schieramento, movimento, combattimento, rinforzi) — la base per la coerenza dei salvataggi e per la pianificazione dell’AI.
  • Rendering pensato per la scala: tile e reggimenti disegnati via GPU instancing con draw call indirette, shader variant e mesh ottimizzate — i campi di battaglia restano fluidi anche con molte unità.
  • Serializzazione: stato di gioco completo e dati mappa salvati in JSON, con un file browser in-game per caricare scenari personalizzati.
  • Testabilità: scene di test dedicate per ogni fase di sviluppo del layer campagna, per validare le funzionalità in isolamento.

Ruolo e contributi

Il team era composto da due game designer e da me come unico programmatore. Ho sviluppato l’intero codice: architettura di gioco (service locator, ScriptableObject data-driven), sistema a griglia esagonale, AI a behavior tree, logica di campagna, UI (menu radiali, pannelli informativi), ottimizzazione del rendering e map editor — lavorando a stretto contatto con i designer per iterare su regole, bilanciamento e design degli scenari, e costruendo il setup data-driven e il map editor che permettevano loro di lavorare in autonomia sui contenuti.