Matteo Fardin Portfolio

Programmatore libero professionista locato a Vicenza, specializzato in C++, Librerie Qt e Unreal Engine 5

MacBook Pro showing programming language
MacBook Pro showing programming language

Unreal Engine e Sviluppo Videogiochi

Unreal Engine non necessita di presentazioni; amato da molti per le sue incredibili funzionalità è uno strumento dalle potenzialità illimitate.

Quando ho iniziato a interessarmi attivamente allo sviluppo di videogiochi, Unreal Engine 4 era appena stato rilasciato.

Ho iniziato a sperimentare con l'editor, inizialmente senza una metà precisa. Nel corso degli anni, ho studiato come usarlo, esplorando la documentazione e gli esempi, fino a seguire svariati corsi a pagamento su Udemy.

Ho iniziato con C++, un linguaggio con cui avevo già familiarità, per poi passare a sistemi a me nuovi, come l'editor stesso, la modellazione 3D, l'animazione, la texturizzazione e tutte le altre competenze necessarie per lo sviluppo di un videogioco.

Ho praticato con numerosi piccoli progetti e implementato i miei sistemi da usare tra questi. Anche se la maggior parte di questi non ha mai superato la bozza, hanno gettato le basi per il mio primo grande progetto, GOTU.

GOTU

GOTU (titolo provvisorio) è uno sparatutto in prima persona basato sull'uso di magie, dove tutto l'ambiente è composto da voxel ed è completamente distruttibile. Il focus del gioco è ingaggiare combattimenti intensi, utilizzando potenti incantesimi che scatenano distruzione su larga scala.

Come sviluppatore indipendente, ho fatto largo affidamento su plugin per supportare il mio progetto. Ho selezionato con cura gli strumenti che meglio si adattavano alla mia visione e li ho modificati per soddisfare le mie esigenze.

Di seguito elencherò i sistemi fondamentali del mio gioco.

Trailer di GOTU dal mio canale YouTube

Sistema di Distruzione

Il sistema di distruzione in GOTU si basa sul Voxel Plugin per Unreal Engine 5, in particolare la versione 1.2. Sebbene il plugin sia originariamente progettato per modellare paesaggi e generare terreni automaticamente, ho sfruttato la sue funzioni in tempo reale per concentrarmi sulla distruzione in gioco. Manipolare il terreno e generare effetti con Niagara di Unreal permette di simulare potenti impatti, evitando così il calo di prestazioni che comporterebbe un mondo interamente simulato con il sistema Chaos per la distuzioni in Unreal.

L'utilizzo del plugin in questo modo inconvenzionale ha presentato alcune sfide. La prima è stata la navigazione con NavMesh. Sebbene il plugin supporti la generazione di NavMesh in tempo reale, non era pratico a causa della distruzione continua e irregolare durante il gameplay. Di conseguenza, non potevo fare affidamento sul sistema di movimento integrato di Unreal ed ho dovuto programmare un IA personalizzata in grado di reagire dinamicamente agli ambienti imprevedibili, permettendo ai nemici di navigare nel mondo senza problemi; Che sia saltando ostacoli, accovacciandosi, arrampicandosi o persino scavando verso il giocatore se altre vie non sono disponibili.

Un'altra sfida è stata rendere l'intero ambiente distruttibile, non solo il terreno. Volevo che i giocatori fossero in grado di distruggere tutto ciò che vedono, inclusi gli edifici. Per raggiungere questo obiettivo, ho sviluppato uno strumento per scolpire dinamicamente il livello che mi consente di modellare la mappa con diversi tipi di edifici, utilizzando generazione casuale basata su parametri per velocizzare la costruzione della mappa.

IA personalizzata

Strumento per scolpire il terreno

Sistema di Smembramento

In un gioco dove puoi distruggere persino il terreno su cui cammini, sembrerebbe incompleto non poter fare lo stesso con i nemici. Questa è stata una delle funzionalità più ostiche da implementare, ma dopo aver provato diverse iterazioni, sono finalmente arrivato a una soluzione soddisfacente.

Sfruttando il plugin di Gore di Killian e il Skinned Decal Component, questo sistema consente ai nemici di mostrare diversi gradi di ferite sui loro corpi. I materiali sulla mesh possono deformarsi per rivelare la carne sottostante, e nello scheletro si possono separare gli arti dal corpo principale, mantenendo comunque la funzionalità con le animation blueprint.

Ogni colpo applica un'animazione fisica al corpo per un breve periodo, il che aiuta a visualizzare la forza dell'impatto risparmiando sulle prestazioni rispetto a un corpo sempre completamente simulato. Inoltre, alcuni incantesimi possono costringere i nemici in uno stato temporaneo di ragdoll, facendoli crollare per alcuni secondi prima di rialzarsi.

Ogni colpo fisico è accompagnato da effetti Niagara e decalcomanie sull'ambiente per migliorare il feedback visivo del combattimento.

Sistema di smembramento nell'editor

Visione generale del sistema di smembramento

Sistema di Incantesimi

Il sistema di incantesimi è la chiave che lega insieme gli altri due sistemi. Sebbene tutti gli incantesimi derivino dalla stessa classe, ognuno funziona in modo diverso, spaziando da proiettili e raggi a effetti punta e clicca. Questi incantesimi interagiscono sia con l'ambiente che con i nemici, distruggendo e ridipingendo l'area circostante in tempo reale.

Ogni incantesimo è accompagnato dai propri effetti Niagara. Anche se alcuni asset sono stati acquistati, la maggior parte è stata creata da me.

Piuttosto che entrare nei dettagli di ogni singolo incantesimo, lascerò che il video dimostrativo degli incantesimi mostri ciò che intendo.

Dimostrazione del sistema di incantesimi

Riassunto

Lavorare su questo gioco è stata un'esperienza lunga ma meravigliosa. So che è lontano dall'essere perfetto, ma sono comunque estremamente entusiasta dei risultati. Sono orgoglioso nel dire che ho raggiunto tutti gli obiettivi di programmazione che mi ero prefissato, sono rimasto purtroppo deluso dalla qualità la modellazione 3D.
Il processo in sé è piacevole, ma non sono sufficientemente competente in questo aspetto.
Trovo in parte sconfortante che questa limitazione artistica influisca sulla qualità tecnica, che altrimenti sarebbe più che soddisfacente.
Tuttavia, spero in futuro di collaborare con artisti 3D professionisti, se se ne presenterà l'opportunità così da colmare le lacune di questo progetto.

Una volta pronto, rilascerò una demo gratuita su Steam.

Mesh modellata in Blender e Texture con QuixelMixer