Metro 2033 Vs Digital Foundry
Shishkovtsov ci spiega la tecnologia dietro al gioco di THQ.
L’Unreal Engine ha ridefinito gli standard degli shooter sulle console ad alta definizione, eppure gran parte dei bestseller tutt’ora in commercio e acclamati da critica e pubblico continuano a preferire motori grafici proprietari.
Sviluppato dalle stesse menti dietro a S.T.A.L.K.E.R., il 4A engine di Metro 2033 è l’ennesimo motore grafico sviluppato internamente, e sembra già capace di fornire prestazioni fantastiche. Il team di Digital Foundry ha potuto mettere le mani su una build per Xbox 360 e i risultati sono decisamente ottimi.
Ecco di seguito un primo assaggio del gioco in azione sulla console Microsoft, tutto in presa diretta, per fornirvi al meglio un’idea sugli aspetti tecnologici e di come questi andranno ad influire sul gameplay.
DF ha pensato di indagare a fondo e ha avuto modo di discutere con Oles Shishkovtsov, responsabile tecnico del progetto. Avendo contribuito in passato alla creazione del motore grafico di S.T.A.L.K.E.R., si potrebbe quasi pensare che il nuovo engine sia qualcosa di derivativo, cosa che Shishkovtsov smentisce in maniera categorica, parlando proprio di un progetto collaterale capace di superare i limiti imposti dal vecchio engine.
“I maggiori ostacoli dell’engine di S.T.A.L.K.E.R. erano la sua intrinseca incapacità di essere multi-threaded e i problemi relativi alla terribile gestione delle risorse e della memoria che impediva qualsiasi tipo di streaming, rendendolo inadatto per le console next gen”.
“Un’altra cosa che mi aveva preoccupato era tutto lo scripting basato sui testi. S.T.A.L.K.E.R. è stato scritto interamente in LUA (particolare linguaggio di programmazione). Lavorando su gioco fu chiaro che designers e sceneggiatori cercavano di avere il maggior controllo possibile, dovevano pensare come programmatori, ma non erano programmatori! Ciò ha contribuito parecchio ai ritardi di S.T.A.L.K.E.R.”
Problemi di questo genere hanno poi spinto Shishkovtsov a intraprendere una nuova direzione per lo sviluppo del successivo engine.
“Ho cominciato un progetto personale per stabilire la futura architettura ed esplorarne le possibilità di design. Il progetto si è evoluto abbastanza bene e, anche se non era funzionale come un gioco (e nemmeno come demo: non avevo infatti alcun engine per il rendering) mi è comunque servito per cosa bisognava fare con il nuovo engine”.
Shishkovstov e il suo collega Aleksandr Maksimchuk lasciarono GSC ben un anno prima che S.T.A.L.K.E.R. uscisse nei negozi, e il 4A engine, ideato per operare ottimamente in multi-threading sia su PC che sulle nuove console, cominciò a prendere forma. Shishkovtsov dichiara che l’engine 4A non ha nulla a che vedere con l’X-Ray di S.T.A.L.K.E.R. perché un porting si sarebbe rivelato estremamente difficile.
“Un porting diretto non avrebbe potuto usufruire della memoria nemmeno togliendo tutte le texture, tutto il sonoro e la geometria. E anche allora avrebbe lavorato a 1-3 frame al secondo. Ma questo non ha importanza perché senza texture e poligoni quei frame non li avresti nemmeno visti! È una mia opinione personale, ma credo che GSC avrebbe probabilmente fatto meglio ad attendere una nuova generazione di console.”
Secondo Shishkovtsov, la filosofia di “parallellizzare” il codice è differente per molti giochi, ma affine alle tecniche impiegate da Criterion Games per Burnout Paradise: le operazioni di elaborazione vengono assegnate a prescindere dai processori disponibili al momento.
“Non abbiamo thread dedicati per l'elaborazione di specifici compiti in-game con l'eccezione di un thread PhysX”, spiega Shishkovtsov. “Noi usiamo un task-model ma senza alcun pre-condizionamento o pre/post-sincronizzazione. Essenzialmente, tutti i compiti possono essere eseguiti in parallelo senza alcun blocco dal punto in cui sono generati. Non vi sono inter-dipendenze.”
È come una struttura ad albero, che comincia dalle istruzioni più pesanti all’inizio del frame (per rendere il sistema bilanciato). L’ultima volta che ho controllato le statistiche, giravamo con 3000 istruzioni a 30ms su Xbox 360, al 100% del carico.”.
Alla stregua del lavoro sul multi-threading attuato da Criterion, 4A Games ha trovato un’implementazione simile anche sulla console Sony. Sostanzialmente si tratta di emulare una comune CPU e di distribuire il carico di lavoro in maniera adeguata tra le SPU del Cell. Stando alle sue parole, questo è un metodo ideale per superare di slancio eventuali limiti della macchina legati alla particolare struttura hardware.
Ricordiamo che Metro 2033 uscirà esclusivamente su PC e Xbox 360, eppure la console Sony ha avuto un discreto peso nello sviluppo della tecnologia.
“Sin dall’inizio abbiamo scelto la piattaforma più difficile. Molte delle decisioni che abbiamo preso sono state fatte proprio conoscendo i limiti e i problemi che potremo incontrare in futuro.”
“Personalmente, scegliere il processore grafico di PS3 è stata la scelta ottimale, poiché sono stato coinvolto ai tempi nel design della GPU NV40, architettura dalla quale deriva proprio l’RSX di PS3. È stato come sentirsi a casa.”.