Titanfall - intervista tecnica
Digital Foundry parla coi Respawn di cloud, beta, patch del day one e molto altro.
La scorsa settimana, Electronic Arts ci ha contattato per chiederci se fossimo interessati a parlare con Respawn nelle vesti dell'ingegnere capo Richard Baker e discutere gli elementi più tecnici del suo nuovo gioco, Titanfall. Quel genere di opportunità che non è possibile ignorare visto che per ovvi motivi è necessario approfondire i maggiori problemi tecnici di un titolo che si propone come una killer application e capire cos'è accaduto dietro le quinte di uno degli eventi di maggiore importanza di quest'anno, la pubblicazione della beta di Titanfall. La nostra visione di un hub di rete in cui convergevano svariati gigabyte di dati sulle sessioni di gioco in tempo reale è stato solo uno degli aspetti ad averci colpito maggiormente degli uffici di Respawn.
"La maggior parte dei nostri ragazzi ha passato molto tempo osservando le sessioni di gameplay degli utenti su Twitch, osservando le espressioni delle varie persone in streaming e sentendo quello che dicevano mentre giocavano alla beta," ci spiega Richard Baker. "È un approccio molto utile per uno sviluppo intelligente, un po' come nascondersi alle spalle di chi sta giocando e capire dalle sue reazioni cosa va e cosa non va soprattutto quando la gente fa spesso cose che non ti aspetti."
Un'idea interessante quella di osservare un vasto numero di giocatori mentre giocano al proprio titolo, soprattutto se si può completare con il feedback in tempo reale di tester professionisti assunti per questo lavoro. Oltre alla reazione degli utenti, si è trattato di uno stress test tecnologico per mettere Azure, il sistema cloud di Microsoft, alle corde e vedere i suoi limiti. "Avevamo grafici di ogni genere su come molti utenti stessero giocando da varie regioni del globo" ricorda Baker. "È stato molto utile osservare i grafici delle statistiche del matchmaking su PC che ci hanno permesso di apportare dei bilanciamenti e rendere le partite il più possibile equilibrate. Ci stiamo ancora lavorando su e anche dopo il lancio continueremo a migliorare la qualità del monitoraggio."
Siamo entrati in una nuova era del videogioco. Il dogma della patch al Day One ha ormai fatto il suo tempo in relazione al problema di certificare un disco master. Nel caso di Titanfall - un gioco che può essere giocato esclusivamente online - qualcuno potrebbe anche chiedersi se il gioco è stato effettivamente concluso il suo sviluppo nel senso convenzionale del termine. Siamo rimasti piuttosto scettici circa il periodo di tempo molto breve intercorso tra il completamento della fase di beta e il rilascio del gioco. In che misura Titanfall è stato ottimizzato sulla base della grande quantità di feedback generati dalla beta? Baker riconosce che la beta è servita tanto quanto la pubblicazione di un demo: utile a far decollare l'interesse ma anche un valido stress test del codice al fine di indirizzare correttamente un vasto numero di modifiche a seconda del feedback.
"Durante la beta siamo riusciti a cambiare il netcode più volte al giorno man mano che i problemi si palesavano sui server. Potrebbe non sembrare un sacco di tempo, ma siamo stati in grado di individuare problemi degli utenti mentre questi stavano effettivamente ancora giocando," spiega Baker. “Anche la scalabilità e le anomalie di stabilità: ogni volta che c'era un problema su un server, partiva una mail automatica all'azienda per scoprire cos'era successo. Abbiamo risolto molto velocemente centinaia di problemi di questo tipo durante la beta in questo modo."
"La maggior parte dei nostri ragazzi ha passato molto tempo osservando le sessioni di gameplay degli utenti su Twitch TV"
Il beta test di Titanfall è interessante perché la piattaforma cloud di Microsoft Azure è stata sottoposta per la prima volta a uno stress test di gameplay. Respawn non si è spesa in affermazioni altisonanti sul Cloud come il grimaldello per il nirvana next-gen ("Alla fine è solo un sacco di potenza di calcolo dietro a numerosi server che si può ottenere anche con normali computer"), ma è un approccio altamente innovativo al problema delle infrastrutture multiplayer che potrebbe andare incontro alle esigenze di molti publisher e sviluppatori.
Invece di comprare un'intera linea di server dedicati, Titanfall accede alla rete cloud esistente di Microsoft che rende i server disponibili su richiesta. Quando non c'è domanda, quegli stessi server sono a servizio dei clienti esistenti di Azure. Client-side, Titanfall presenta un'esperienza molto simile a quella ottenibile con qualsiasi server dedicato ma dal punto di vista sviluppatore e publisher, i dati finanziari confermano un ambizioso cambiamento nell'approccio al gioco online.
"L'aspetto commerciale più importante di Azure è che permette ai publisher di prendere qualche rischio in più con il supporto multiplayer. In passato si poteva lanciare un gioco ed essere sicuri del fatto che il primo giorno avrebbe avuto 10 milioni di utenti online. Questo costringeva ad approntare un esercito di server per mantenere il multiplayer pena il suo oblio commerciale e perdite di milioni di dollari. Allo stesso modo, l'acquisto di un'infrastruttura di server molto vasta inutilizzata a causa dello scarso successo iniziale poteva rivelarsi un dramma, soprattutto dal punto di vista finanziario. Con Azure, nessuno deve comprare server preventivamente, a prescindere dalla diffusione."
Titanfall sarà probabilmente uno dei lanci più pubblicizzati e meglio finanziati di questo 2014, ma le implicazioni vanno oltre il gioco in sé. I piccoli sviluppatori possono sfruttare l'infrastruttura di Azure e non devono assumersi l'enorme onere finanziario di acquistare una rete di server con copertura mondiale. Il codice server creato dallo sviluppatore può girare su Azure e fare qualsiasi cosa: nel caso di Respawn si tratta di un server dedicato a cui è stato aggiunto del codice extra per gestire la carne da cannone dell'IA che popola i livelli. In questo senso, la più grande rivoluzione del cloud di Microsoft non è il cambiamento della qualità grafica ma l'accessibilità. L'unica domanda importante cui rispondere riguarda quante risorse della CPU vengono dedicate agli sviluppatori e quanto Respawn abbia dovuto spingere per avere a disposizione funzionalità non presenti nell'infrastruttura di base.
"Nella fase iniziale dello sviluppo, abbiamo lavorato su server locali mentre stavamo sviluppando il gioco. Ovviamente la potenza non è mai abbastanza e quindi c'è stato un po' di tira e molla con Microsoft cercando di ottenere più potenza di calcolo per migliorare i tempi di risposta una volta arrivati su Azure," spiega Baker.
Respawn ha costruito Titanfall sul Source, ma il motore è stato effettivamente riscritto quasi da zero. Nella nostra ultima intervista con Respawn, il produttore Drew McCoy ci aveva spiegato che odiava definirlo “Source Engine” perché era ormai diventato un'altra cosa e rispetto alla nostra esperienza con la beta, abbiamo visto una tecnologia notevolmente trasformata. Le modifiche si sono rese necessarie perché il Source non si è mai prestato bene al multithreading e non c'era alcun supporto DirectX 11. Il Source originario inoltre era incapace di arrivare a latenze molto basse che gli ex membri di Infinity Ward vogliono implementare in uno sparatutto di qualità.
"Ovviamente si tratta di un motore riarchitettato in versione 64-bit convertito alle funzionalità delle DX11 con una gestione migliorata della memoria," ha spiegato.
"Un sacco di lavoro è andato nella direzione di rendere l'engine effettivamente in grado di gestire il multi threading correttamente. Il Source originale gestiva un thread principale su cui si basava il buffer di comando per il rendering che lavorava con un frame di ritardo rispetto all'elaborazione in tempo reale. Abbiamo modificato questo comportamento per fare in modo che il rendering bufferasse le istruzioni non appena queste arrivavano migliorando sensibilmente la latenza del calcolo tridimensionale. Tutti gli altri sottosistemi del motore sono stati trattati allo stesso modo per gestire più task simultaneamente: il collegamento di rete, la simulazione di particelle, l'animazione, il culling, la gestione degli oggetti da renderizzare… potrei andare avanti all'infinito perché vengono utilizzati tutti i core disponibili in simultanea."
L'arrivo delle API di Mantle ha spostato l'attenzione di molti sviluppatori sulle DirectX 11, in particolare le risorse da dedicare ai driver. Anche i Respawn hanno affrontato questo argomento non mancando di notare che si tratta di un problema di cui anche altri sviluppatori console dovranno tenere conto.
"Attualmente abbiamo dedicato ai driver delle API un core della CPU di Xbox One. In origine il gioco usava tutti e otto i core della console ma continuavamo ad aver problemi con le API che consumano comunque risorse e così abbiamo utilizzato un core separato," aggiunge Baker.
In futuro la sfida sarà quella di parallelizzare altri elementi della gestione di un gioco così complesso e andrà nella direzione del multi-threading, così come anche la fisica per ottenere una migliore sincronizzazione su CPU multicore. Si tratta sfide tecnologiche già attualizzate dai diversi approcci di Intel e AMD nella concezione delle loro unità CPU. La brutale potenza di calcolo per ogni singolo core di Intel contro l'approccio multicore di AMD. Baker è convinto che i titoli sviluppati con in mente le console della prossima generazione porteranno a performance migliori delle versioni per home computer.
"Inizialmente non avevamo pianificato la versione Xbox One di Titanfall ma la sua inclusione ci ha permesso di ottimizzare al meglio la versione PC e ha giustificato lo sforzo di passare all'architettura a 64-Bit e le DX11,” spiega Baker. "Credo che in futuro questo trend continuerà: le schede video di fascia alta saranno sempre in grado di spingere il limite delle prestazioni in avanti mentre la CPU rappresenterà il collo di bottiglia del sistema. Grazie alle DX11, si può spostare molto del carico di lavoro del processore centrale sulla scheda video e aggirare questo problema."
Baker ha citato gli shader a questo punto della conversazione come uno dei migliori esempi di come le DX11 abbiano risolto molti problemi di ottimizzazione prima limitati all'abilità degli sviluppatori. Se teniamo in considerazione che prima dell'arrivo delle nuove console, non esisteva un motore grafico pensato esclusivamente per le DX11, la transizione sulle nuove API è più che benvenuta e anche schede video DX9 potrebbero beneficiare di questa evoluzione. Titanfall è un banco di prova importante per un'altra questione, quella della memoria unificata delle nuove console. Su qualsiasi scheda grafica il livello qualitativo delle texture impostato a “folle” ha letteralmente messo a sedere tutte le GPU dotate di meno di 3GB di RAM. Ha senso scegliere un'opzione grafica che fa girare il gioco con asset non compressi?
"No, abbiamo un sacco di texture ad alta risoluzione nel gioco. Abbiamo parlato molto della possibilità di adottare una soluzione come le megatexture o lo streaming ma Titanfall è un gioco multiplayer in cui il giocatore può apparire in ogni momento in ogni area del livello e si muove molto in fretta", spiega Baker. "Se avessimo usato lo streaming, avremmo potuto consumare molta meno RAM e ottenere la stessa qualità visiva, ma si tratta di una soluzione adatta ad un gioco che carica porzioni di livello progressivamente, e non si presta ad un gioco come il nostro in cui si corre, salta, riappare da una parte all'altra della mappa in tempi rapidissimi. Abbiamo preferito evitare questa soluzione anche perché non siamo molto pratici nella sua implementazione senza causare fenomeni di pop-up. Per la versione definitiva del gioco abbiamo apportato alcune modifiche con le texture e le loro risoluzioni," spiega Baker. "Nella beta già ridurre il livello qualitativo a molto alto riduceva le dimensioni delle texture a un quarto."
Durante la beta, l'aumento della qualità delle texture al livello folle usando una scheda video da 2GB ha infatti generato enormi problemi di swap della memoria tra RAM della scheda video e quella della GPU. La necessità di ottenere la massima performance possibile ha causato un effetto collaterale non da poco: l'installazione completa della versione PC è di quasi 50 gigabyte di cui 35 sono praticamente tutti file audio non compressi.
"Si tratta di una scelta dettata dalla volontà precisa di dedicare quante più risorse possibili all'elaborazione grafica senza che la CPU perda tempo a decomprimere file audio e riprodurli al volo. Un PC di fascia alta, un'Xbox One o una PS4 non avrebbero problemi nel farlo, ma i PC dual core, il nostro riferimento per i requisiti minimi del gioco, erano spesso messi in difficoltà e abbiamo preferito imboccare questa strada," è il commento di Baker. Un download opzionale sarebbe stata la scelta ideale, ma la filosofia di Respawn di mantenere la maggiore leggerezza possibile di tutto il sistema per ottenere controlli con latenze bassissime continua ad essere il punto focale del loro modus operandi.
"In genere gli sviluppatori sono più propensi a ottenere una maggiore qualità grafica penalizzando la latenza. Questo è particolarmente evidente su PS3 in virtù di una catena di rendering molto lunga," ha chiosato Baker.
Non è sicuramente il nostro approccio che va invece nella direzione di far apparire il frame il più presto possibile. Abbiamo anche modificato il netcode per far sì che i controlli avessero meno latenza, così come il thread principale del rendering. Quando si riescono a raggiungere in modo stabile i 60Hz, l'esperienza di gioco è veramente reattiva e divertente. Speriamo che anche altri studi abbraccino questa filosofia, perché alla fine il divertimento complessivo ne guadagna."
"Avremmo voluto ottenere un frame rate costante a 60 fotogrammi al secondo già il giorno del lancio"
Titanfall è già uscito, ma da quello che Respawn ci ha spiegato, il gioco è ancora in fase ottimizzazione. Tutti i sottosistemi di grafica, sistema di controllo, codice di rete e impianto audio continueranno ad essere migliorati per aumentare le prestazioni complessive. Probabilmente verranno rese disponibili nuove opzioni per i possessori di PC: al momento solo l'anti-aliasing hardware è supportato in questo momento, ma l'FXAA potrebbe presto essere incluso per andare incontro alle esigenze dei PC di fascia bassa. Anche le GPU più potenti potrebbero beneficiare di un'implementazione di questo genere per chi decide di far girare Titanfall a risoluzioni superiori come i 4K.
Respawn ci ha anche accennato a una serie di ottimizzazioni diffuse su Xbox One come la revisione della risoluzione di rendering ora ferma a 1408x792.
"Stiamo sperimentando con risoluzioni più alte e più basse. Uno dei trucchi riguarda l'utilizzo della ESRAM, quindi stiamo pensando di scartare correzioni antialias hardware pesanti come il multisample, spostandoci sull'FXAA per fare in modo che il rendering target sia facilmente raggiungibile," ha spiegato Baker. "Stiamo ancora sperimentando molto: l'obiettivo è quello di raggiungere i 1080p senza anti-aliasing o i 900p con l'FXAA attivato. Cerchiamo di ottimizzare il più possibile ma non vogliamo perdere nulla in termini di prestazioni per arrivare a risoluzioni superiori. Finora non siamo al 100% soddisfatti del bilanciamento raggiunto e stiamo lavorando per ottenere un incremento della qualità visiva aumentando la risoluzione."
L'uso del multi-sampling anti-aliasing a 2x è quindi fuori dalla portata del codice Xbox One, per quanto una serie di ottimizzazioni della GPU siano una promessa concreta per migliorare la performance del gioco sulla console di Microsoft. Come abbiamo spiegato durante la nostra analisi della beta c'è ancora molto lavoro da fare in questo senso. Il frame rate della versione console di Titanfall ha il fiato corto nelle situazioni di più frenetiche ed è proprio in questi frangenti che il framerate dovrebbe essere stabile ed elevato.
"Buona parte della performance dipende dalla GPU. C'è sicuramente ancora spazio per ottimizzare e ci stiamo lavorando. Avremmo voluto arrivare a 60 frame fissi in ogni momento del gioco ma chiaramente, quando gli scontri sono molto frenetici con effetti alfa in movimento, fisica da gestire e oggetti da renderizzare, la performance diminuisce nettamente. Ci stiamo comunque dando molto da fare per mantenere il più a lungo possibile i 60FPS."
La scelta di limitare la risoluzione di Titanfall a 792p e le difficoltà del frame rate chiamano in causa ancora una volta la potenza dell'architettura di Xbox One. La GPU basata sul chip Bonaire di AMD non pare avere sufficiente spunto per arrivare alla perfomance desiderata dai Respawn. Questo fa sorgere dubbi sulle capacità della ESRAM installata e se la sua gestione sia effettivamente un problema più che un vantaggio. Ovviamente, abbiamo girato le nostre perplessità a Baker.
"Stiamo cercando di dare quanta più fiducia possibile a questa soluzione tecnica: anche se è un aspetto in più da gestire, se si fa girare il gioco più efficacemente, è meglio averla che non averla," commenta Baker. "Abbiamo eseguito molti test sull'ESRAM, sull'effettivo utilizzo di shadow map, target di rendering e texture particolari. Abbiamo smanettato un sacco con la ESRAM e possiamo dire senza remore che la sua presenza giova alle prestazioni complessive del gioco. Se non ci fosse, sarebbe un problema! [risate]."
È risaputo come Microsoft stia cercando di liberare risorse di sistema da dedicare alla gestione del rendering grafico. L'anno scorso, uno degli architetti di Xbox One ci spiegò che un certo ammontare di risorse riservate alla gestione del sistema operativo ed elementi esterni come Kinect si sarebbe potuta rendere disponibile agli sviluppatori per migliorare la qualità dei giochi. Respawn ha confermato che questo non è ancora accaduto.
"Microsoft sta spingendo parecchio su Titanfall: il sistema operativo è stato aggiornato due volte proprio in previsione di questo gioco"
"Ci era stato detto che avrebbero provato a renderlo disponibile per il lancio, ma credo abbiano avuto qualche problema d'implementazione. Al momento questa potenza in più non è disponibile ma sicuramente ne approfitteremo se ci verrà data la possibilità di farlo aumentando la risoluzione del gioco in proporzione alle risorse a disposizione."
Il gioco è uscito ieri e subito una patch è stata messa in campo: la versione Xbox One è rimasta pressoché immutata ma quella PC è stata fatta oggetto di alcune interessanti migliorie.
"Abbiamo riallocato parecchia RAM video, quindi nelle schede video con meno memoria la qualità apparente delle texture è superiore. Per le armi abbiamo usato le normal map a risoluzione normale quindi per la geometria dei livelli ci siamo spinti a mappature di colore di qualità superiore che tendono a raggiungere un migliore equilibrio. Abbiamo ottimizzato alcune delle impostazioni automatiche in modo che il gioco venga meglio gestito da un'ampia gamma di schede video". Baker ci ha anche anticipato che una modalità di gioco assente al lancio è in lavorazione e arriverà presto.
"Per il momento siamo concentrati sui problemi dell'infrastruttura di rete, in particolare crash di server, client e altre problematiche del netcode. Dopo la patch di ieri, entrambe le versioni del gioco continueranno ad essere aggiornate con correzioni e nuove feature. Manca ad esempio la possibilità di organizzare scontri privati che presto verrà implementata insieme ad altre richieste della community."
Quando la nostra intervista stava per finire, abbiamo rivolto a Baker le domande più scomode, ovvero quelle su risoluzione, frame rate e parità di feature della versione Xbox 360. Mancano solo due settimane e nessuno sa ancora nulla di questa build.
"La stiamo giocando praticamente tutti i giorni: la stanno sviluppando i nostri colleghi di Bluepoint a cui abbiamo dato carta bianca in relazione a tutte le decisioni tecniche da prendere. È molto vicina a quella Xbox One in termini di feature e stanno ancora lavorando per migliorare le prestazioni. Non ho invece dati certi per quanto riguarda il frame rate…"
A questo punto, il nostro silenzioso ospite di EA è intervenuto con un laconico quanto eloquente: "Non possiamo aggiungere molto di più."
Nonostante l'interruzione, Baker ha chiosato un commento finale prima dei saluti: "Sta migliorando giorno dopo giorno."
Traduzione a cura di Enrico Sartini.