Unreal Engine 4: come costruirsi il proprio videogioco
Con questo articolo vogliamo capire insieme a voi come funziona una tecnologia grafica evoluta come Unreal Engine 4. Andiamo a vedere tutti gli strumenti, le modalità di funzionamento e i risultati che è possibile ottenere con un SDK sempre più alla portata dell'utente comune. L'articolo è diviso in due parti: ci occuperemo prossimamente, infatti, di Matinee, Blueprint Visual Script, SpeedTree, PhysX e molto altro ancora.
di Rosario Grasso pubblicato il 24 Luglio 2015 nel canale VideogamesEpic
Oggetti geometrici
Basilarmente, creare livelli si traduce nel collocare elementi all'interno di una mappa gestita tramite Unreal Editor. Questi elementi possono essere oggetti geometrici, decorazioni sotto forma di mesh, luci, personaggi, armi, veicoli e così via. Le modalità di introduzione e di personalizzazione di questi elementi ovviamente dipendono dall'organizzazione del team di sviluppo e dalla ripartizione degli incarichi.
Come abbiamo visto in precedenza, in ambito Unreal Engine con il termine Actor si individua qualsiasi oggetto sia posizionabile all'interno di uno scenario di gioco. Quando si avvia un nuovo progetto, di default si ha all'inizio a che fare con uno spazio completamente vuoto che va popolato, dunque, con i cosiddetti Actor. Questa operazione può essere espletata in due modi diversi: entrambi richiedono l'uso del Content Browser e prevedono la creazione di un'istanza che comporta una modifica dell'Actor rispetto alla versione originale. Ciascuna istanza può essere spostata a piacimento all'interno dello scenario e le sue proprietà possono essere modificate.
Gli Actor si inseriscono tramite la Place Mode di cui abbiamo parlato in precedenza. Ogni Actor presente in una delle sezioni della Place Mode può essere trascinato all'interno del livello. L'altro metodo prima citato invece prevede il ricorso diretto al Content Browser, che si trova nell'angolo in basso a sinistra della schermata di lavoro. In questo si trovano varie sezioni, ciascuna associata al tipo di oggetto da inserie, come Blueprints, Static Meshes, Particle Effects, Sound Cues, Skeletal Meshes, ecc.
Un metodo avanzato per posizionare gli Actor è poi quello gestibile tramite il Class Viewer, che è una lista gerarchica di classi accessibile tramite l'Editor. Per accedervi bisogna premere su Window, poi Developer Tools e poi su Class Viewer nella parte del menù contrassegnata dalla voce Miscellaneous. Nella finestra che si aprirà risultano evidenziati in blu tutti gli oggetti che è possibile piazzare nella scena.
Alla base della collocazione degli oggetti all'interno della scena di gioco troviamo lo strumento Geometry Brushes. Questo permette di creare forme poligonali di base in forma rudimentale, che ad esempio consentano di iniziare a lavorare sui livelli e di fare esperimenti, mentre gli artisti sono ancora al lavoro sulle mesh. Sebbene le mesh statiche siano ormai più efficienti, Geometry Brushes può quindi venire in soccorso di coloro che hanno l'esigenza di iniziare a lavorare senza avere l'accesso agli strumenti di modellazione tridimensionale.
La prima cosa che un level designer deve considerare è la conformazione del livello di gioco. È sufficientemente grande e ben strutturato per accogliere le forme di gameplay necessarie per il gioco che si sta sviluppando? Di solito Geometry Brushes viene utilizzato proprio per creare la struttura di base del livello, per poi usare i contenuti già presenti nell'Unreal Editor per fare delle prove di gameplay. In questo modo il level designer non va a disturbare gli artisti, per esempio richiedendo delle mesh per le prove. Può modificare i livelli tramite Geometry Brushes fin quando non è contento e una forma pressoché definitiva può essere presentata agli occhi degli artisti.
Dopo questa fase di test tutti gli oggetti creati con Geometry Brushes vengono proressivamente rimpiazzati con le mesh statiche. Per iniziare a inserire questo tipo di oggetti bisogna andare nel menù Place Mode e poi nello spazio riservato alle geometrie. A quel punto scegliere il tipo di Brush tra additivo e sottrattivo. La differenza è semplice: nel primo caso si tratta di oggetti che occupano uno spazio fisico nel livello di gioco, nel secondo di rimuovere parti di spazio solido. Parliamo, quindi, dell'installazione di porte, finestre e quant'altro all'interno di strutture poligonali precedentemente create. Gli spazi di natura sottrattiva sono quegli spazi all'interno dei quali i giocatori si potranno muovere liberamente durante l'esperienza di gioco.
All'interno di Unreal Engine 4 si trovano varie forme di Brush primitive, come cubo, cono, cilindro, scala curva, a spirale o lineare, sfera. Il modo migliore per modificare la forma primitiva di questi oggetti è Geometry Editing Mode. Questa modalità dell'editor, infatti, consente di manipolare direttamente vertici, bordi e superfici delle forme geometriche. Sembra di lavorare a un'applicazione di modellazione 3D molto semplificata. L'editor permette anche di unire due forme originariamente separate e di stabilire la loro consistenza tra solida, semi-solida e non solida.
Quando si collocano i Brush bisogna tenere in considerazione la griglia di trascinamento, usata per agganciare gli oggetti al mondo reale. Se i bordi dei Brush non coincidono con i quadrati in cui è suddivisa la griglia, infatti, possono verificarsi errori di rendering che generano artefatti. È importante anche l'ordine in cui si piazzano i Brush sulla griglia, perché ad esempio applicare un oggetto di tipo sottrattivo prima di qualunque altro oggetto di tipo additivo potrebbe generare confusione nell'elaborazione. Detto questo, gli sviluppatori in certi casi operano in questo modo perché hanno la necessità che un Actor venga processato dal sistema video prima di ogni altro.
Tra le proprietà della superficie degli oggetti geometrici è possibile determinare come le texture sono collocate su queste superfici, oltre che la risoluzione delle lightmap. La sezione illuminazione, invece, permette di configurare il modo in cui gli effetti di illuminazione sono gestiti sulla superficie.