No Man's Sky - analisi tecnica
La disamina completa del lavoro di Hello Games tra voxel, generazione procedurale e molto altro.
Frutto di cinque anni di lavoro dello sviluppatore indipendente Hello Games, No Man's Sky è un gioco di proporzioni incredibili per uno studio relativamente piccolo. Realizzato con un motore sviluppato internamente, il gioco finale occupa appena 5GB su hard disk, una quantità di dati minuscola in confronto ai titoli AAA. È una situazione particolare, dovuta al fatto che il gioco fa ampio uso di generazione procedurale piuttosto che basarsi su texture o elementi preconfezionati. Il cuore pulsante del gioco sono i suoi algoritmi, linee di codice capaci di generare in tempo reale terreno, vegetazione e anche fauna.
Milioni di pianeti della galassia virtuale sono dotati di dettagli unici e questo non dipende da budget corposi o dal lavoro di tantissime persone, ma da un uso intelligente della tecnologia. Graficamente, siamo di fronte a un approccio di rendering molto sottovalutato che permette una varietà di questo tipo, basato sui voxel.
Invece di concentrarsi sui poligoni, come il 99% dei giochi sul mercato, No Man's Sky fa uso dei voxel per rendere la generazione (e la distruzione) procedurale molto più facile. La differenza tra un poligono e un voxel è fondamentalmente molto semplice: un poligono è composto da tre o più punti, chiamati vertici, disposti in uno spazio tridimensionale. Un triangolo è composto da tre vertici e un quadrato, ovviamente, da quattro. Un voxel è invece un singolo punto in uno spazio tridimensionale, dotato di dimensioni, colori e opacità, come una specie di pixel gigante.
Un vantaggio di quest'approccio è la sua facilità di gestione da parte dell'hardware grafico. I precedenti utilizzi di questa tecnologia hanno anche spostato il grosso del lavoro sulla CPU. I titoli del passato come Outcast hanno utilizzato lo stesso approccio e Resogun, titolo di lancio PS4 creato da Housemarque, lo ha fatto con una completa implementazione tramite GPU, più adatta al bilanciamento dell'hardware grafico della console. Visto che sono dei singoli punti, i voxel hanno anche il vantaggio di richiedere meno dati e possono avere un volume tridimensionale senza impegnare molta potenza di calcolo supplementare.
D'altro canto, i poligoni si sono dimostrati più adatti al rendering nei giochi moderni perché danno agli sviluppatori più possibilità per animarli. Personaggi e terreno composti da centinaia o milioni di triangoli danno una flessibilità difficile da ottenere con i voxel. Lo svantaggio principale è che per calcolare tutti quei vertici serve una scheda grafica potente. Ovviamente, più poligoni ci sono, maggiore è la potenza grafica richiesta.
I voxel sono una base fondamentale per la generazione degli enormi pianeti di No Man's Sky. La loro semplicità semplifica la generazione procedurale di miglia di territorio da parte del motore e permette anche di manipolarle a piacere. È la stessa tecnologia che abbiamo visto in Minecraft, solo in forma molto più evoluta. Inoltre, sospettiamo che Hello Games renderizzi elementi aggiuntivi tramite i soliti poligoni; stazioni spaziali e astronavi sono due di essi.
Nonostante i risultati della sua applicazione in No Man's Sky, la tecnologia voxel non è nuova, quindi perché non viene utilizzata più spesso? Dopotutto l'abbiamo già vista in molti titoli PS4 incluso Dreams, in sviluppo presso Media Molecule (e anche il CryEngine possiede uno strumento per creare terreni di voxel). Detta semplicemente, per andare al di là dei semplice blocchi e creare oggetti e scenari attraenti, sono necessarie molte rifiniture. Per ottenere l'effetto di No Man's Sky sono necessarie grandi quantità di voxel, che consumano più risorse di sistema. Nonostante questo, ci sono anche dei limiti ben visibili. Uno svantaggio notevole è che le animazioni sono limitate in confronto a quelle dei tipici giochi basati su poligoni: prendendo come esempio un effetto, l'acqua in No Man's Sky si estende in lontananza senza muoversi, con un motivo fisso.
Lo stesso vale per le geometrie nel complesso. Gran parte del terreno deformabile non reagisce alla gravità, e distuggere alcuni oggetti impilati non provoca la caduta di quelli in alto. Non è un problema di un pianeta in particolare, ma una caratteristica dei materiali usati nel gioco, che danno la sensazione di assenza di peso del terreno. Anche le texture vengono generate in tempo reale: questo contribuisce ad aumentare la varietà generale, ma i risultati sembrano spesso in bassa risoluzione e confusi quando si guarda in basso. Il filtraggio di basso livello delle texture su PS4 sfoca le texture ad angolazioni oblique e non migliora la situazione. Sarà interessante vedere cosa offrirà la versione PC da questo punto di vista.
Visti da lontano, però, i risultati parlano da soli. Tutto quanto è creato utilizzando un algoritmo che agisce secondo una serie di regole determinate da Hello Games. Entro alcuni limiti, necessari per mantenere l'azione giocabile, ciò che vediamo nel gioco è sempre unico: un enorme scenario che gira a 30 fotogrammi al secondo su PS4. Inoltre, non è che le animazioni siano del tutto assenti: l'erba ondeggia sui pianeti dalla giungla lussureggiante e il sistema fisico Havok gestisce bandiere e corpi ragdoll; inoltre, le creature possiedono degli arti mobili. Il loro movimento è gestito logicamente, sia che si tratti di bipedi o quadrupedi, come nello strumento di creazione di Spore.
Tutto questo contribuisce a creare la sensazione che ogni pianeta sia vivo. Purtroppo, terreno e vegetazione sono quasi sempre statici e c'è un visibile pop-in quando si viaggia velocemente con una navicella. È una distrazione, ma la varietà grafica è comunque notevole. L'algoritmo di Hello Games prevede montagne, fiumi, laghi, grotte piene di stalattiti e perfino caverne sotterranee. Molti pianeti sono brulli, distese desertiche totalmente vuote, ma grazie agli effetti atmosferici come nuvole, nebbia, polvere e pioggia, ciascuno di essi risulta decisamente diverso dagli altri.
Ad amplificare la varietà troviamo altri effetti post-processing come lens flare e bloom. Un altreo elemento degno di nota è il modo in cui le ombre si spostano per lo scenario in base alla rotazione del pianeta e alla posizione del sole, creando un ciclo giorno-notte plausibile. Purtroppo le lune vicine rimangono in posizione fissa a prescindere da questo ciclo: una sorta di trucchetto, considerando la precisione e la correttezza matematica che pervadono il gioco, ma è una circostanza particolare in un gioco che simula i corpi planetari per l'illuminazione.
Altre parti della presentazione ci hanno lasciati meno soddisfatti. La resoluzione è di 1080p nativi su PS4, ma il campo visivo è ristretto e limita la visuale a uno stretto rettangolo. Speriamo che la versione PC offra uno slider per allargare la visuale periferica. L'effetto di vignettatura, che scurisce i bordi dell'immagine, non aiuta. Tra gli effetti utilizzati figura anche una grana pellicolare che conferisce al gioco un'atmosfera fantascientifica in stile anni 60 e un pizzico di aberrazione cromatica. Si tratta di effetti divisivi che vorremmo poter attivare e disattivare a piacimento.
Uno degli aspetti a noi più sgraditi è che su PS4, nonostante la risoluzione 1080p, il metodo di anti-aliasing non corregge tutte le scalettature. Le linee nette al suolo, specialmente nelle stazioni spaziali, esibiscono molto pixel crawl . È un problema nella patch 1.03, ma il lead programmer Sean Murray ha dichiarato che una soluzione di AA temporale più efficace, che potrebbe correggere questi problemi, è in fase di sviluppo.
No Man's Sky ha avuto molti contrattempi ed è chiaro che l'esperienza verrà ulteriormente rifinita con degli aggiornamenti. Va detto che il gioco non è completamente stabile e che durante la stesura di quest'analisi abbiamo sperimentato tre crash che ci hanno riportato alla schermata iniziale di PS4, spesso dopo aver iniziato una nuova partita. È comprensibile che in un gioco dal design così particolare sia difficile scovare i bug, ma è chiaro che c'è del lavoro da fare da questo punto di vista. Il potenziale per l'aggiunta di nuove variabili alla formula, comunque, è enorme.
No Man's Sky appartiene a una categoria di giochi rari: è un esperimento che tenta di cancellare la divisione tra sviluppo indie e AAA, basandosi su tecnologie di rendering meno utilizzate. Il risultato è spesso affascinante, anche se le cuciture che tengono insieme il tutto sono evidenti. Ignorando le limitazioni del suo motore basato su voxel, Hello Games ha realizzato un sandbox che trasmette l'immensità dello scenario come pochi altri titoli. Il gioco tira fuori una curiosità quasi infantile di scoprire cose nuove: se dovesse diventare un successo, è probabile che in futuro molti altri titoli si baseranno sulle stesse scelte tecniche.