editor-skeleton-unreal

Unreal Engine, gestione input, grafica e audio

Unreal Engine, gestione input, grafica e audio: in questo post analizzeremo sempre il Livello 4, quindi le parti che compongono il motore grafico, come gli input, la grafica 2D/3D e la gestione degli audio.

Unreal Engine: gestione degli Input 

L’utente interagisce con il gioco in modo intenso, tramite i dispositivi di input: tastiera, mouse, joysticks, touch, ecc. Il motore deve riconoscere i comandi inviati dall’utente ed effettuare i necessari aggiornamenti sui dati e le proprietà degli oggetti interessati. L’input viene gestito in due modalità fondamentali: gestione ad eventi o gestione del polling. La prima modalità prevede la possibilità di intercettare in tempo reale i vari eventi (es. la pressione di una tasto della tastiera) ed eseguire l’azione appropriata. La tecnica del polling consiste nell’interrogazione periodica dello stato degli oggetti (es. la posizione sullo schermo del mouse) e mettere a disposizione del programmatore i valori per le opportune elaborazioni.

Unreal Engine:: gestione della grafica 2D/3D

Unreal Engine, gestione input, grafica e audio: Il motore grafico deve preparare e visualizzare sullo schermo le immagini dei vari oggetti e degli ambienti nei quali si svolge il gioco. Nella grafica 2D vengono utilizzate le textures per formare le immagini della scena. In ambiente 3D le textures vengono utilizzate per rivestire gli oggetti 3D (le mesh).  Le mesh sono calcolate dal motore per definire l’aspetto dell’oggetto; ogni mesh è composta di vertici, triangoli, normali.  Le facce di qualsiasi forma geometrica vengono suddivise  in triangoli
Per avere una simulazione verosimile della realtà è necessaria un’alta frequenza di aggiornamento delle frame, in modo che l’azione sia svolta in modo continuo, senza effetti di sfarfallio.
I motori grafici utilizzano delle API che richiamano prodotti software diffusi come OpenGL e Direct3D, i quali si interfacciano con l’hardware della varie schede grafiche. Durante ogni ciclo del Game Loop gli oggetti vengono preparati e ridisegnati sullo schermo.

I giochi 3D utilizzano in genere degli asset creati con prodotti specifici come Blender, Maya, 3ds Max, mentre per la grafica 2D si usano in genere prodotti come PhotoShop. Gli asset realizzati vengono poi importati nel game engine, con gli opportuni adattamenti e conversioni di formato. Una volta importati, gli oggetti possono essere aggiunti al gioco e modificati creando ambienti e attori realistici. Unreal Engine mette a disposizione strumenti per modifiche sia delle mesh statiche importate, degli scheletri, delle animazioni e dei materiali.

Il valore utilizzato in genere per la frequenza di aggiornamento delle frame (frame rate) è di 30 fps (frame per secondo). Questo comporta che ogni fotogramma rimane sullo schermo per circa 0,0333 secondi prima di essere aggiornato con il successivo frame, e quindi un comando di input impiega questo tempo prima di esser eseguito e mostrare suoi effetti. In alcune situazioni il frame rate può essere anche superiore (ad esempio 60 fps) per gli oggetti che si muovono velocemente; questo permette di avere una migliore responsività. Naturalmente lo schermo video sul quale viene visualizzata la scena deve essere predisposto per gestire il frame rate, altrimenti non si noterà una differenza utilizzando frame rate più alti.

Unreal Engine: gestione audio (audio engine)

Unreal Engine, gestione input, grafica e audio: Il suono e la musica sono parte integrale di ogni gioco. Il sottosistema audio genera la musica di sottofondo e gli effetti sonori del gioco. I programmi del sottosistema possono utilizzare la CPU oppure processori dedicati e si possono appoggiare ad un livello di astrazione tramite API, come Open-AL, Direct3D, ecc. Gli effetti sonori vengono inseriti nell’ambiente 3D del gioco e il volume può essere regolato in funzione della distanza del proprio carattere relativa al suono.

editor-audio-unreal

La gestione del suono è una procedura complessa; per avere maggiore realismo si possono aggiungere effetti di modulazione della frequenza e di riverbero per simulare il suono prodotto dalle riflessioni sulle pareti. Anche per il gli audio, Unreal mette a disposizione un editor audio.
La produzione del suono non deve interferire con la altre funzioni del gioco o creare ritardi nelle operazioni di aggiornamento e rendering grafico.

Per questo il suono dovrebbe essere sempre caricato nella memoria RAM che è molto veloce e non caricato dal disco, poiché comporterebbe dei ritardi. Tuttavia la memoria RAM è limitata e questo aumenta la complessità della gestione. Gli algoritmi dovrebbero essere in grado di mantenere in memoria solo le parti di suono necessari in una data situazione del gioco, rilasciando quelle non necessarie. Sicuramente Unreal Engine è completo e avanzato come nessun’altro ambiente grafico. Per il suono, soltanto

Unreal Engine, gestione input, grafica e audio: l’ambiente Unity  si avvicina all’ ambiente Unreal, infatti, ci sono due componenti per gestire il suono: un AudioListener che ha la funzione di ascolto e un AudioSource che genera il suono. Si può collegare un AudioSource ad ogni oggetto del gioco, assegnare un suono specifico e tramite uno script associato generare il suono tramite la funzione Play(). Per generare il suono sono naturalmente necessari degli asset audio nei vari formati: .mp3, .wav ecc.
Un altro aspetto importante da considerare è la distinzione fra suoni in ambiente 2D o 3D. Il suono 2D il volume è indipendente dalla distanza dell’AudioListener. Nell’ambiente 3D il volume del suono può variare in funzione della distanza fra la sorgente audio e la video camera alla quale è attaccato l’AudioListener.

Views: 178