Analisi delle caratteristiche di Unreal Engine 5.2 è questa la risposta alla #StutterStruggle?

Unreal Engine 5.2 la risposta alla #StutterStruggle?

Quasi tre anni dopo che Unreal Engine 5 è stato rivelato per la prima volta, siamo sull’orlo dei primi grandi giochi basati su UE5, tra cui Immortals of Aveum, The Lords of the Fallen e Stalker 2: Heart of Chernobyl. Con il rilascio di Unreal Engine 5.2, sembra giusto dare un’occhiata a quali nuove funzionalità sono state aggiunte nell’ultima revisione e come queste aggiunte coloreranno i giochi del futuro, inclusi titoli di sviluppatori che in precedenza avevano costruito i loro motori come CD Projekt Red e Crystal Dynamics.

La generazione procedurale è l’aggiunta principale di UE5.2, come mostrato attraverso la demo Electric Dreams nel mese di marzo. Se ricordate, gli spazi presentati nella presentazione originale di Unreal Engine 5 con Lumen in the Land of Nanite e Valley of the Ancient sono stati costruiti in modo molto particolare. Gli artisti hanno posizionato manualmente e organizzato ogni singolo elemento dell’ambiente utilizzando asset prefabbricati, spesso dedicando tempo a copiare e incollare questi asset con cambi di rotazione e scala per creare gli ambienti rocciosi scarsamente popolati presenti in queste demo. Sebbene questa tecnica possa essere un modo efficace per costruire progetti su piccola scala come queste presentazioni, questo tipo di “kit bashing”, come viene chiamato, è forse impraticabile per una vera produzione di videogiochi. Richiede molto lavoro manuale e limita anche il motore, poiché la sovrapposizione sprecona di molti mesh influisce sulle prestazioni del ray tracing Lumen accelerato dall’hardware.

Nella successiva demo di Matrix Awakens, Epic ha mostrato uno strumento procedurale per popolare ambienti urbani, ma con la versione 5.2 hanno rilasciato un altro sistema per gli ambienti naturali all’aperto, come quello visto nella demo Electric Dreams. Qui, Nanite viene utilizzato non solo per oggetti opachi come rocce, ma anche per oggetti come foglie e arbusti che utilizzano trasparenze alpha-masked. Sulla base del mio primo contatto con la demo e con l’editor stesso, questa tecnica sembra efficace nel generare ambienti convincenti di alta qualità a partire da un numero limitato di asset e con poca interferenza degli artisti. Questo dovrebbe facilitare il popolamento di grandi mondi con una quantità convincente di dettagli, con Nanite che fornisce il dettaglio richiesto.

Alcune differenze vengono meglio mostrate visivamente – quindi abbiamo creato questa presentazione video solo per voi. Guarda su YouTube

Un altro effetto positivo di questo metodo di posizionamento più sistematico si riflette sulle prestazioni, dove Lumen hardware può ora funzionare in modo misurabilmente migliore con le impostazioni predefinite. In un esempio, ho misurato un miglioramento del frame rate del 14 percento rispetto a Lumen software alla stessa risoluzione, offrendo un aumento evidente dei dettagli delle riflessioni – consentendo di mostrare le singole foglie invece di masse più amorfe nella versione software. La qualità dell’illuminazione diffusa è anche migliorata nell’implementazione hardware, poiché la soluzione software tendeva a scurire eccessivamente le regioni in ombra. Questo è un miglioramento significativo rispetto agli ambienti basati su kit come Valley of the Ancient, dove Lumen hardware funzionava significativamente peggio, rendendolo essenzialmente inutilizzabile nonostante la sua maggiore qualità.

Anche se questo è impressionante, è importante notare che queste generalizzazioni tendono a essere vere quando si è limitati dalla GPU, ma scenari limitati dalla CPU possono mostrare risultati diversi. Ad esempio, eseguendo la demo di UE5.2 a una risoluzione inferiore, Lumen software fornisce un aumento delle prestazioni non insignificante del 10 percento rispetto a Lumen hardware. Anche i requisiti della CPU sono probabilmente elevati, poiché anche con un Core i9 12900K e RAM DDR5 a 6400MT/s, la demo viene eseguita a poco più di 60fps in media. Quando si attraversa il mondo a una velocità maggiore, la demo diventa sempre più limitata dalla CPU e le prestazioni ne risentono, causando scatti.

Curiosamente, nonostante sia un motore moderno, UE5 sembra ancora non sfruttare appieno le CPU con un numero maggiore di core e thread, confermando i risultati dell’anno scorso. Ad esempio, passare da sei a otto core sul 12900K aumenta le prestazioni limitate dalla CPU solo del 6 percento, mentre l’attivazione dell’hyper-threading aumenta le prestazioni di un ulteriore 4 percento in questa sequenza di test. L’attivazione di altri otto core Efficient non migliora neanche i frame rate.

Dopo sei core/thread, UE5 non mostra una scalabilità significativa delle prestazioni, quindi i processori moderni rimangono inutilizzati.

Dato quanto Unreal Engine 5 sembra destinato a diventare comune nei prossimi anni, questo è un po’ deludente, soprattutto considerando che il numero medio di core della CPU continua a salire. Per fare un confronto, in Cyberpunk 2077 vediamo un aumento del 88 percento del frame rate passando da quattro a sedici core sul 12900K, mentre nella demo Electric Dreams vediamo solo un miglioramento del 30 percento. Sulla base di questo, UE5 ha ancora molto margine di crescita per sfruttare i processori moderni multi-threaded.

Se stai utilizzando una GPU Ada Lovelace (serie Nvidia RTX 40), DLSS 3 Frame Generation può essere un contromisura efficace ed è facile da implementare per gli sviluppatori, richiedendo solo 11 clic dopo aver trovato il plugin su Unreal Engine Marketplace. Con questa opzione attivata, ho misurato un miglioramento del 97% dei frame in uno scenario limitato dalla CPU. Penso che questo renda DLSS3 (e future equivalenti di AMD e Intel) una scelta ovvia per gli sviluppatori di giochi UE5.

Un’altra importante aggiornamento delle performance in UE5.2 riguarda il comportamento della compilazione degli shader, qualcosa che i lettori abituali sanno essere una costante seccatura per me. L’unico modo per gli sviluppatori di evitare scatti nella compilazione degli shader in UE4 e UE5.0 è fornire una fase di pre-compilazione prima dell’avvio del gioco. Questa opzione è disponibile in alcuni titoli UE4, ma richiede agli sviluppatori di giocare metodicamente per creare una libreria completa di tutti gli shader incontrati dai giocatori, e se dovesse essere omesso qualcosa, gli scatti si verificheranno comunque.

Il software Lumen può essere troppo scuro a volte rispetto alla versione hardware, come puoi vedere in questa immagine.

Con UE 5.1 e un aggiornamento corrispondente di Fortnite, Epic ha introdotto uno schema di compilazione asincrona degli shader che funzionava in tempo reale, pre-compilando gli shader in background sulla CPU durante il gioco per evitare gli scatti. Questa tecnica non è perfetta, perché se uno shader doveva essere disegnato ma non era pronto, il gioco si bloccava. In UE5.2, questo sistema asincrono è più accurato e permette allo sviluppatore di ritardare l’effetto visivo dello shader fino a quando non viene completamente compilato, eliminando così completamente gli scatti legati agli shader, ma con la possibilità che un effetto visivo o un materiale possano essere visualizzati un po’ più tardi rispetto a come farebbero altrimenti.

Questo migliorato sistema asincrono di precaricamento degli shader e la nuova funzionalità skipdraw di UE5.2 hanno un effetto trasformativo, eliminando gli scatti più grandi (~500ms) e migliorando notevolmente la fluidità. Tuttavia, questo non elimina completamente gli scatti, con alcuni esempi di 30-50ms che persistono e che non si trovano in una cache completamente “calda”. Alcuni di questi possono essere attribuiti agli scatti di attraversamento, che UE5 ha ereditato da UE4 e che si possono ancora trovare nell’ultima versione di Fortnite che utilizza Unreal Engine 5.2.

Per quanto riguarda gli scatti, Unreal Engine 5.2 rappresenta sicuramente un miglioramento – ma gli scatti di attraversamento necessitano di ulteriori miglioramenti e anche il nuovo sistema asincrono di caching degli shader non è una soluzione miracolosa su cui gli sviluppatori possono fare affidamento per un’esperienza di gioco fluida. Prima di tutto, non sembra essere attivato di default, cosa che alcuni sviluppatori potrebbero non notare, e in secondo luogo produce degli scatti che vengono risolti tramite il metodo più tradizionale di caching degli shader. Pertanto, probabilmente ha senso combinare questo nuovo sistema asincrono con il vecchio sistema di precaricamento offline per ottenere l’esperienza più fluida su PC.

Sarà affascinante vedere come queste due nuove funzionalità di Unreal Engine 5.2 verranno implementate nei giochi di terze parti, da Immortals of Aveum in agosto a The Lords of the Fallen in ottobre e Stalker 2 in dicembre. Il 2023 non si è ancora delineato come l’anno che speravo per il gaming su PC, ma c’è ancora tempo per cambiare e UE5.2 potrebbe svolgere un ruolo chiave.