Uno sparatutto survival a ondate per PC e Meta Quest, sviluppato in Unity 6 da un team di cinque persone.
Ambientato in una Seconda guerra mondiale alternativa travolta da un'infezione causata da gas, il giocatore è bloccato alla torretta di un carro armato immobilizzato da una mina anticarro e lo difende insieme ad Anatolij, un giovane meccanico mandato a recuperare rifornimenti tra un'ondata e l'altra.
Ogni partita è semplice: sopravvivere al maggior numero di ondate possibile e scalare la classifica locale per punteggio, uccisioni e round raggiunto.
Loop principale & combattimento con la torretta
Un unico controller della torretta gestisce il combattimento sia su PC sia in VR.
- Ho modellato e texturizzato la mitragliatrice della torretta: una MG34 con caricatore a doppio tamburo, scelta per giustificare la capacità storica di 75 colpi senza dover gestire in VR una ricarica a nastro.
- Ho realizzato le regole del punteggio, leggendo il punto d'impatto dall'hitbox di ogni nemico per premiare i colpi alla testa e la distanza rispetto ai colpi al corpo a bruciapelo.
Il ciclo principale passa da una sola interfaccia ITurretController, così le due piattaforme usano la stessa logica di combattimento senza bilanciamenti diversi. Ho implementato il lato VR.
Compagno NPC & IA
Anatolij, il meccanico, recupera risorse da solo e può essere salvato quando l'orda lo afferra.
- Rientra in automatico o su comando e consegna all'inventario del giocatore ciò che ha raccolto.
- Mentre è fuori può essere afferrato dall'orda, innescando un evento di salvataggio a tempo: il giocatore deve colpire l'aggressore senza colpire lui.
- Ho realizzato il suo ruolo difensivo dentro il carro (la mitragliatrice automatica che presidia sul davanti del veicolo) e ho scritto i cinque scambi di dialogo che i due personaggi si scambiano durante una partita, per portare avanti la narrazione senza filmati.
Crafting & economia di sopravvivenza
I materiali recuperati si combinano in potenziamenti tramite ricette basate su scriptable object.
- Due oggetti raccolti producono un potenziamento per il meccanico (bende, armatura a piastre, stimolanti) o per la torretta (munizioni, proiettili più potenti, ricariche più rapide), e solo quando il meccanico è dentro il carro.
- Il punteggio di una partita si converte anche in valuta per un negozio di progressione tra una partita e l'altra.
- Il mio contributo: il feedback FMOD per le azioni di crafting, mixato nello stesso sistema di bus del resto del gioco.
Menu, impostazioni & localizzazione
Un flusso di menu completo attorno al gioco: menu principale, negozio, classifiche per livello e impostazioni.
- Le impostazioni coprono display, comandi e audio, con slider separati per volume generale, effetti sonori, musica, ambiente, zombie e spari.
- L'interfaccia si può cambiare dal vivo tra italiano e inglese.
- Ogni livello ha la propria classifica, ordinata per punteggio.
Nemici & ondate infinite
Quattro tipi di nemico, ciascuno costruito attorno a un diverso modo di combatterlo.
- Contadino: lento, e il suo forcone punisce il meccanico.
- Strisciante: sale sul carro per rubare bottino prima di fuggire.
- Gonfio: le sue pustole esplodono in un attacco ad area.
- Spora: cura i nemici vicini.
Li ho modellati e texturizzati tutti e quattro, compresi gli oggetti di scena del Contadino (forcone e cappello), e mi sono occupato di buona parte della loro configurazione nel motore, mentre il team ha costruito sopra l'IA basata su NavMesh e la logica di crescita dell'orda.
Interazione VR & audio
L'implementazione VR e il sistema audio sono stati interamente opera mia.
- Ho realizzato il caricatore a tamburo con doppia presa, con una maniglia di ricarica guidata dalla fisica e un feedback di rinculo coerente, estendendo io stesso l'XR Interaction Toolkit per supportare prese con offset e regolazione dell'altezza di rilascio, due cose che non gestisce di serie.
- Ho progettato l'intero sistema FMOD: bus/VCA indipendenti per volume generale, ambiente ed effetti degli zombie, mixati in modo che decine di suoni spazializzati di nemici e ambiente restino leggibili all'interno dello stesso grafo di bus.
Direzione artistica: prima & dopo


Carro armato: rifatto da zero
Il carro armato originale era stato modellato da un collega. Quando ho preso in mano la direzione artistica e la modellazione, l'ho rifatto da zero.
- Numero di vertici ridotto da circa 15,5k a circa 6,3k (circa il 59% in meno)
- Dettagli aggiunti: cavi, tubi, botole e altro
- Texturizzato in linea con il resto della scena


Fattoria: mappa e grafica
La fattoria è un mio progetto, compreso il layout della mappa. L'ho portata da un greybox alla scena finale completa.
- Layout e level design miei
- Tutti i materiali condividono un unico atlante di texture per contenere il costo di rendering
- Illuminazione e cielo scelti per dare il tono del gioco


Anatolij: personaggio
Il modello base di Anatolij, il meccanico, era stato realizzato da un collega. L'ho rifatto aggiungendo tutti i dettagli e l'ho texturizzato.
- Ho aggiunto tutti i dettagli sopra la mesh di base
- Texturing completo


Zombie: dal modello base all'orda
Lo zombie è partito dallo stesso modello base bianco ed è diventato lo zombie verde che riempie tutto il progetto, dal gameplay alla grafica promozionale.
- Modellato e texturizzato da me
- Un unico asset riutilizzabile per l'intera orda
Modelli 3D di questo progetto
Galleria






