Rapporto sviluppo console #3

Questa settimana, ci dedicheremo all'analisi di varie tipologie di LOD alla scoperta di ciò che rende questo elemento così importante per le prestazioni di un gioco.

Ciao a tutti!

Rieccoci con un nuovo episodio della serie Rapporto sviluppo console! Questa settimana, ci dedicheremo all’analisi di varie tipologie di LOD, alla comprensione di che cosa effettivamente sia un LOD e alla scoperta di ciò che rende questo elemento così importante per le prestazioni di un gioco.

LOD sta per “Level of Detail”, ovvero livello di dettaglio. In PUBG, ci sono diversi LOD, ognuno dedicato a determinati oggetti. A seconda delle circostanze, viene utilizzato un LOD più o meno dettagliato al fine di garantire il bilanciamento ottimale tra performance e prestazioni grafiche e ottenere così la miglior esperienza di gioco possibile. In base alle diverse situazioni, PUBG si serve generalmente di tre diversi LOD: LOD 2, LOD 1 e LOD 0, che è quello più dettagliato tra i tre. Maggiore è il livello di dettaglio utilizzato, maggiore sarà il costo in termini di prestazioni. Per quanto importante possa essere l’aspetto delle performance, dobbiamo anche darci da fare per assicurarci che il gameplay non venga in alcun modo pregiudicato, ed è per questo che ci serviamo anche di LOD meno dettagliati.

Ad esempio, vi sarà capitato di osservare il meccanismo dei LOD nell’effetto “plastilina” di alcuni edifici visualizzati in lontananza nel corso dei lanci con il paracadute. In questi casi, avrete visto in azione il primo LOD, quello meno dettagliato. All’inizio di una partita, è possibile che anche gli edifici più vicini abbiano un aspetto simile, in quanto vi sono moltissimi oggetti da elaborare in maniera simultanea. Tali elementi verranno renderizzati tramite LOD 0 (il più dettagliato) appena possibile, ma le tempistiche di questa transizione dipenderanno in maniera significativa dal tuo hardware.

Anche i personaggi possono venire rappresentati tramite tre diversi LOD: Mesh LOD, Bone LOD e AnimNode LOD. Per prima cosa, forniremo una rapida carrellata di informazioni concernenti il Mesh LOD e il Bone LOD; dopodiché, analizzeremo nel dettaglio l’AnimNode LOD, che costituisce il punto focale di questo Rapporto sviluppo console.

Mesh LOD e Bone LOD

Il Mesh LOD determina il livello di dettaglio del modello dei personaggi. Quando un personaggio si trova vicino a voi, viene renderizzato tramite LOD 0 (il più dettagliato); man mano che esso si allontana, verrà rappresentato tramite un livello di dettaglio sempre più basso. Ciò avviene in maniera graduale, dal LOD 0 al LOD 2 (o viceversa), passando dal LOD 1. Generalmente, non dovreste notare questa transizione, poiché essa si verifica nel momento in cui i personaggi sono distanti e appaiono quindi molto piccoli sullo schermo.

Il Bone LOD funziona in maniera analoga, ma determina il numero di ossa che vengono attivate nel corso delle animazioni dei personaggi. Ciò significa che il gioco non deve necessariamente mettere in atto animazioni particolarmente dettagliate per gli elementi in lontananza, che rischierebbero di inficiare le prestazioni. Un LOD inferiore fa sì che ci siano meno dettagli e meno dati relativi alle ossa da elaborare. Tale sistema consente di migliorare in maniera significativa le performance del gioco.

L’utilizzo di livelli di dettaglio aggiuntivi (LOD 3, 4, ecc.) incrementerebbe ulteriormente le prestazioni riducendo il costo in termini di performance che la CPU è chiamata a sostenere, ma gli sforzi che le console dovrebbero compiere in termini di memoria, I/O, ecc. sarebbero troppo considerevoli perché una soluzione simile possa, almeno attualmente, essere presa in considerazione.

AnimNode LOD

Anche le animazioni sono caratterizzate da livelli di dettaglio: si tratta degli AnimNode LOD, di cui però non possiamo servirci in maniera estensiva come facciamo con Mesh LOD e Bone LOD in quanto provocano modifiche grafiche estremamente evidenti.

Le animazioni generate quando correte, vi guardate intorno o sparate attraverso il mirino costituiscono il controllo scheletrico del vostro personaggio. Le animazioni relative allo scheletro del personaggio vengono calcolate arto per arto, il che richiede l’esecuzione di calcoli e movenze indipendenti per braccia, gambe, collo, ecc. 

Abbiamo sviluppato un sistema di LOD aggiuntivo basato sulle dimensioni dei modelli dei personaggi in relazione a quelle dello schermo. Abbiamo impostato parametri in grado di selezionare in maniera automatica e dinamica un AnimNode LOD meno dettagliato per i modelli dei personaggi che si trovano in lontananza, e cioè quando tale cambiamento grafico non risulta evidente. Ciò comporta l’incremento delle performance senza che ciò abbia un impatto particolarmente negativo sul gameplay o sul comparto grafico.

Attenzione: tenete in considerazione il fatto che, negli esempi grafici riportati di seguito, le modifiche dell’AnimNode LOD avvengono a distanza ravvicinata solamente al fine di farvi comprendere meglio come funzionano i meccanismi descritti in questo Rapporto sviluppo console. Quando giocate a PUBG, l’AnimNode LOD agisce unicamente in lontananza.

Ecco il primo esempio teso a illustrare il funzionamento dell’AnimNode LOD durante il gioco:

ConsoleReport-LevelOfDetail-1_PUBG_Forum_EN_516x527.png.41148430ffb4a15729d06d9f4f2672d3.png

AnimNode LOD attivato e disattivato

Nell’immagine proposta qui sopra, potete vedere quali differenze sussistono tra l’impiego dell’AnimNode LOD e il suo mancato utilizzo. 

Quando l’AnimNode LOD è completamente disattivato, le animazioni solitamente messe in atto dai personaggi non vengono eseguite e non si riflettono sui loro modelli, il che comporta un miglioramento delle performance. Tuttavia, quando un giocatore è accovacciato, la parte inferiore del suo corpo deve essere controllata tramite AnimNode LOD, altrimenti il personaggio in questione apparirebbe in piedi.

Per quanto riguarda il prossimo esempio, abbiamo disattivato l’AnimNode LOD nell’ambientazione che usiamo in fase di sviluppo quando il modello del personaggio occupa il 10% dello schermo, così da aiutarvi a comprendere meglio ciò che accade quando l’AnimNode LOD non è in funzione.

Durante il gioco, l’AnimNode LOD viene disattivato solamente quando i modelli dei personaggi appaiono troppo piccoli perché possiate notare questi cambiamenti.

ConsoleReport-LevelOfDetail-2_PUBG_Forum_EN_896x504.gif.4f35b98a0829cff059e49decb7e27020.gif

Allontanamento dal modello di un personaggio con AnimNode LOD disattivato

ConsoleReport-LevelOfDetail-3_PUBG_Forum_EN_896x504.gif.7deabc635e9860da8860548ba21f536e.gif

Avvicinamento al modello di un personaggio con AnimNode LOD disattivato

Forse vi starete chiedendo: “E che succede se osservo un nemico lontano utilizzando un mirino?”.

Quando ciò avviene, il modello del personaggio in questione occuperà una porzione più significativa dello schermo, e l’AnimNode LOD verrà quindi azionato in maniera dinamica sulla base delle dimensioni del modello del personaggio in relazione a quelle dello schermo intero, facendo sì che il gameplay non venga in alcun modo pregiudicato.

Di seguito, viene riportato un esempio grafico di AnimNode LOD utilizzato nella nostra ambientazione di sviluppo che è programmato per essere disattivato quando il modello del personaggio occupa il 10% dello schermo. Ciò vi aiuterà a capire meglio ciò che accade.

ConsoleReport-LevelOfDetail-4_PUBG_Forum_EN_896x504.gif.f3be0f3040081384f95e64fb7e7d8f6d.gif

Utilizzo del mirino con AnimNode LOD disattivato

Ci teniamo a ribadire che, quando si gioca a PUBG, queste modifiche divengono effettive solamente nei casi in cui i modelli dei personaggi si trovano in lontananza e occupano una porzione molto ridotta dello schermo, in modo che tali cambiamenti non risultino evidenti.

Prestazioni dell’AnimNode LOD

Il grafico sottostante mostra la differenza tra AnimNode LOD attivo (in blu) e non attivo (in rosso) quando ci sono dieci personaggi sullo schermo. Quando l’AnimNode LOD non è attivo, si ottiene un miglioramento pari a circa il 10%.

ConsoleReport-LevelOfDetail-5_PUBG_Forum_EN_1000x618.png.ff448a40e8412e00961d8fc1fff9ae6e.png

I risultati mostrati dal grafico sono stati misurati tramite Xbox One X

Maggiore è il numero di modelli dei personaggi di cui è possibile disattivare l’AnimNode LOD, maggiore è l’incremento delle performance rispetto a quando l’AnimNode LOD è costantemente attivo.

Ricapitolando, alcuni effetti delle animazioni vengono disattivati o semplificati quando i personaggi si trovano a una distanza tale da rendere impercettibili le modifiche apportate. Tale meccanismo riduce la quantità di risorse utilizzate e permette di migliorare le prestazioni.

Ci vediamo nella prossima edizione del Rapporto sviluppo console.

Grazie dell’attenzione!
Il team console di PUBG

Discuti questo articolo
Condividi questo articolo