Gli sviluppatori segreti: la next-gen e l'importanza del bilanciamento
Il Digital Foundry lancia una nuova rubrica.
Vi siete mai chiesti che cosa pensano veramente gli sviluppatori a proposito delle polemiche e le notizie più controverse sui giochi di ultima uscita? In questa nuova serie di articoli Digital Foundry abbiamo deciso si dare la parola ai creatori dei videogiochi stessi, offrendo loro la possibilità di parlare di tutto quello che vogliono su temi tecnici o meno dello sviluppo dei videogiochi, garantendone l'anonimato. In pratica, apriremo una finestra sul mondo dello sviluppo senza alcun filtro da parte del marketing o dei PR di vari publisher.
In questo primo pezzo, uno sviluppatore multipiattaforma offre la sua visione sul concetto del bilanciamento delle prestazioni che in questi ultimi mesi ha tenuto banco nel confronto tra Xbox One e PlayStation 4, ma soprattutto di come la tecnologia di entrambe le console definirà i titoli che giocheremo nel corso dei prossimi. Se anche voi fate parte di questa categoria di professionisti dell'industria e volete contribuire con un vostro articolo non esitate a contattarci usando l'indirizzo di posta elettronica digitalfoundry@eurogamer.net: vi assicuriamo che eventuali discussioni in prima persona saranno trattate con la massima riservatezza.
Con l'arrivo di PlayStation 4 e Xbox One, sembra sia esplosa una vera e propria mania a proposito delle capacità tecniche di queste due console, peraltro molto simili. Le specifiche diffuse rivelano numeri distanti anni luce che favoriscono chiaramente una piattaforma rispetto all'altra. In generale, la sensazione è che le persone si soffermino sul dettaglio ma non arrivino a comprendere le potenzialità di un hardware di questo tipo nella sua interezza. Le differenze nelle specifiche sono sicuramente rilevanti ma l'aspetto di gran lunga più importante è sicuramente la progettazione di base e come questa definirà i limiti dei giochi "next-gen" che giocheremo nei prossimi otto/dieci anni.
A questo punto dovrei probabilmente presentarmi. Sono uno sviluppatore di giochi che ha lavorato nel corso degli anni a una moltitudine di titoli di vari generi, tra cui numerose produzioni tripla A che, ne sono sicuro, la maggior parte di voi ha giocato. Ho lavorato su PlayStation 2, Xbox, PlayStation 3, Xbox 360, PC, PS Vita, Nintendo DS, iPhone, Wii U, PlayStation 4 e Xbox One. Attualmente sto lavorando su un importante titolo next-gen. Durante la mia permanenza nell'industry ho lavorato su una grande varietà di motori grafici dallo sviluppo all'implementazione, per non parlare di briefing tecnici e faccia a faccia con produttori con lo scopo di capire quanto le nuove console cambieranno l'approccio degli sviluppatori e quindi la qualità dei titoli che ne deriverà. Sono stato spinto a scrivere questo articolo dopo aver letto un paio di affermazioni a proposito della progettazione delle nuove console che hanno catturato la mia attenzione:
"Per progettare una console ben bilanciata bisogna realmente considerare tutti gli aspetti del software e dell'hardware. È davvero importante combinare questi due elementi per raggiungere un buon equilibrio in termini di prestazioni. L'obiettivo di un sistema "bilanciato" per definizione è quello di non essere mai limitato da alcun collo di bottiglia in qualsiasi area della pipeline. In generale, in un sistema equilibrato non dovrebbe mai verificarsi alcuna limitazione nel corso della generazione di ogni singolo fotogramma". Trovate questa affermazione nell'intervista condotta da Eurogamer con il progettista di Microsoft Andrew Goosen.
Bollata da molti come una spiegazione degna del peggior PR per celare carenze tecniche importanti rispetto alla PlayStation 4, è in realtà un'affermazione piena di senso in quanto l'equilibrio è un elemento di fondamentale importanza nella progettazione di un hardware complesso come una console per il gioco. Anzi, quando si sviluppa un videogame, arrivare a ottenere un frame rate solido è proprio l'obiettivo finale. Non importa quanto bello sembri il gioco o quanti personaggi ci siano a schermo: se il frame rate non è stabile se ne rovina la fruizione, soprattutto se l'inconsistenza delle prestazioni è frequente e invasiva. Il raggiungimento di una performance ottimale è uno degli argomenti più dibattuti nei meeting tecnici all'inizio della fase di progettazione. Spesso molti elementi di gameplay vengono scartati non perché sono difficili da realizzare tecnicamente ma perché vanno a penalizzare eccessivamente le prestazioni del gioco nel suo complesso.
"Se il frame rate non è stabile se ne rovina la fruizione "
Nella maggior parte dei giochi, gli elementi decisivi nel condizionare il frame-rate sono:
- È possibile riprodurre tutta l'azione che appare a schermo come fisica, animazione, HUD, AI, gameplay?
- È possibile renderizzare tutta l'azione che appare a schermo come oggetti, persone, locazioni, effetti visivi, elaborazioni post processo?
La prima domanda si riferisce a tutti gli elementi che di solito vengono gestiti dalla CPU mentre il secondo punto riguarda i carichi di lavoro del processore grafico. Con il susseguirsi delle generazioni console, è continuamente cambiata la tecnologia sottostante e ogni generazione ha messo sul tavolo la sua selezione di problemi.
- Generazione 1:L'originale PlayStation era penalizzata da una CPU sottopotenziata e poteva disegnare a schermo un numero molto limitato di oggetti.
- Generazione 2:La PlayStation 2 soffriva di un problema simile, ma riusciva a visualizzare decine di migliaia di triangoli trasparenti.
- Generazione 3:Xbox 360 e PlayStation 3 sono in grado di generare diversi contenuti 3D ad alta definizione ma mentre le CPU (in particolare le SPU) sono molto veloci, le GPU non riescono a supportare in modo consistente le risoluzioni HD col tipo di effetti desiderato.
In tutte queste generazioni è stato difficile mantenere un frame rate stabile quando a schermo succedevano molte cose e l'origine del collo di bottiglia sono state sia la CPU, sia la GPU portando a una evidente perdita di prestazioni. Il modo in cui la maggior parte degli sviluppatori ha affrontato questi problemi è stato intervenire con vari sistemi sul design generale per compensare la mancanza di potenza di calcolo e riuscire a mantenere un frame rate il più stabile possibile.
Questo approccio è iniziato verso la fine della seconda generazione, quando gli sviluppatori si sono resi conto che non potevano simulare il mondo di gioco al livello di fedeltà che i loro progettisti avevano ideato; questo perché la CPU non era abbastanza veloce ma almeno era possibile dare al sistema la possibilità di renderizzarlo. Questo cambio nell'approccio allo sviluppo si nota chiaramente a partire dal 2005/2006, quando arrivano giochi come God of War, Fight Night Round 2 e Shadow of the Colossus. Tutti titoli graficamente ottimi, ma dal gameplay limitato nella portata e caratterizzati da inquadrature molto strette per risparmiare il più possibile nel rendering di texture e nei poligoni ad alta risoluzione.
Col proseguire del tempo la situazione è cambiata nuovamente: il passaggio all'alta definizione ha messo in crisi le GPU, che dovevano renderizzare un numero di pixel quattro volte maggiore. Poiché i chip grafici non erano quattro volte più potenti della generazione precedente, non era possibile vedere grossi miglioramenti, a parte un numero superiore di oggetti più definiti.
"Gli sviluppatori si resero conto che non era possibile simulare il mondo di gioco al livello di fedeltà che i loro progettisti avevano ideato"
Ancora una volta, gli sviluppatori avevano iniziato a capire come il passaggio a 1080p stesse cambiando il modo in cui i titoli più esigenti venivano sviluppati, e quindi iniziarono a tirare fuori il massimo dall'architettura delle console, aggiungendo ulteriori strati di simulazione per rendere i giochi più complessi, utilizzando la potenza della CPU. Il problema era che Xbox 360 e PS3 sono molto limitate nel rendering ultraveloce a 60 FPS, imponendo uno scambio tra prestazioni e qualità visiva alla base della maggioranza di titoli odierni.
Il ritorno a 30 FPS è stato spesso visto dal pubblico come un'ammissione di fallimento da parte di un sacco di sviluppatori. Non solo: se il gioco non poteva mantenere i 60 frame al secondo questo spesso si rifletteva negativamente sulla reputazione del team di sviluppo, per non parlare di quella del motore grafico, non all'altezza del compito. Nessuno al di fuori dell'industry ha capito veramente capito la portata di questo cambiamento e cosa significava per lo sviluppo dei giochi. Molti consideravano il frame rate limitato a 30 FPS una sconfitta. Ma è veramente così?
Un gioco che giri a 30 FPS non significa sia necessariamente molto più lento da giocare o che succedono meno cose a schermo. In realtà significa che mentre la simulazione di quello che accade in gioco potrebbe benissimo essere in esecuzione a 60 FPS, il frame rate inferiore consente d'investire i millisecondi risparmiati nel disegnare un'immagine di qualità superiore. Questo scambio ha permesso di spingere sulla qualità visiva di molti giochi che in realtà non avevano bisogno di girare a 60 FPS. E il livello della qualità grafica attuale è molto buono, se si pensa che la GPU che li fa girare è la stessa di sette anni fa. E infatti se si dice alla stampa specializzata, o anche agli hardcore gamer, che il gioco gira a 30 FPS, nessuno batte ciglio, perché tutti sono perfettamente consapevoli di come questo scambio sia indispensabile per godere di giochi di buon livello dal punto di vista della qualità dell'immagine.
Parlando della GPU, all'inizio del ciclo di vita delle console attuali Microsoft affermava che la tecnologia dietro alla grafica dell'Xbox 360 era superiore a quella di PS3 e le specifiche corroboravano questa tesi, più o meno come sta accadendo in questo momento, a parti invertite. Quest'affermazione fu poi ripresa e ripetuta in molti articoli e divenne parte della tesi comune accettata da tutti in quell'epoca, ovvero:
- "La PS3 è migliore di Xbox 360 a causa delle sue SPU."
- "L'Xbox 360 dispone di un migliore chip grafico."
- "La PS3 ha un controller d-pad migliore di quello dell'Xbox 360."
- "Il servizio Xbox Live è migliore per le chat di gruppo."
Il problema di queste affermazioni è che prese isolatamente sono vere, ma non dipingono un quadro preciso di quello che è lo sviluppo di giochi sull'attuale generazione.
"Come sviluppatori, non ci si può lasciar trasportare dall'entusiasmo della console più potente"
Uno dei primi argomenti da affrontare durante lo sviluppo di un gioco è quello della piattaforma di destinazione. Se la risposta a questa domanda è "multipla", lo sviluppo deve per forza imboccare una strada di compromesso per fare il modo che il gioco funzioni bene su tutte le piattaforme coinvolte: non è certo una bella situazione avere un gioco che si comporta bene su PS3 ma arranca su Xbox 360, e quindi, in ogni fase del design, occorre per forza tenere conto del bilanciamento complessivo di quello che il software chiederà all'hardware di fare. Come sviluppatori, non ci si può lasciar trasportare dall'entusiasmo della console più potente: occorre trovare una via di mezzo che permetta al gioco di essere eseguito senza problemi evidenti su più macchine.
Mentre una console potrebbe avere una migliore GPU, è probabile che questo incremento di prestazioni sarà compensato da colli di bottiglia in altre parti. Forse essi sono legati alla velocità di trasferimento della memoria, alla velocità della CPU o alla pura e semplice velocità di trasferimento del bus. In definitiva non importa dove si verificano i colli di bottiglia, ma basta che si verifichino per obbligare al compromesso in ogni fase del game design. Per rendersi conto di tutto questo, basta dare un'occhiata a una frase pronunciata dal membro di uno studio ben noto per il suo grande successo nel realizzare titoli multipiattaforma:
"La stragrande maggioranza del codice è praticamente identica (tra le due versioni). Si sceglie un punto di bilanciamento e si rifinisce il gioco su una o l'altra piattaforma in base a questo assunto. Alla fine si scopre che i pregi e i difetti dell'una o dell'altra piattaforma si bilanciano tra loro." - Alex Fry, Criterion Games
A questo, possiamo aggiungere un ulteriore commento da parte del guru della grafica PC da oltre un ventennio:
"Fa quasi specie notare quanto siano vicine le capacità hardware delle due prossime console di Sony e Microsoft, di quanto abbiano in comune dal punto di vista tecnico e di come le loro capacità siano essenzialmente le stesse." - John Carmack su Xbox One e PS4.
La parte fondamentale di queste affermazioni è che hanno capacità simili. Non le prestazioni, ma le funzionalità. Carmack riconosce che le differenze di potenza tra le due piattaforme sono trascurabili se si considera lo sviluppo cross-platform. Nessuna delle due è nettamente più avanti dell'altra ed entrambe offrono lo stesso tipo di esperienza per l'utente finale con il minimo compromesso.
"Sembra che le CPU next-gen obbligheranno a dei compromessi per mantenere il frame rate costante."
Con le nuove console appena uscite, l'ago della bilancia si è spostato di nuovo: avremo a disposizione GPU migliori visto il progresso tecnologico degli ultimi sette anni, mentre la risoluzione di riferimento si è spostata verso l'alto, da 720p a 1080p. Anche se sulla carta queste GPU non sono così veloci come le migliori schede video PC, probabilmente trarranno qualche beneficio dalla possibilità di dialogare con il processore centrale tramite connessioni ultraveloci. Il problema è rappresentato dalle CPU stesse, aumentate si di potenza ma non in un ordine di grandezza sufficiente a evitare la necessità di scendere nuovamente a compromessi nel design per mantenere il frame rate.
Entrambe le console dispongono di CPU basate sul chip AMD: parte della potenza di questi core è riservata al sistema operativo mentre il resto è a disposizione degli sviluppatori per l'utilizzo nei giochi. Questi core, sulla carta, sono più lenti rispetto a quelli delle precedenti generazioni di console ma hanno alcuni vantaggi importanti. Il più grande è che ora supportano l'Out of Order Execution (OOE), il che significa che il compilatore può assegnare un task da eseguire subito mentre la CPU è in attesa di eseguirne un altro, come un'operazione di recupero dati dalla memoria.
Rimuovere queste pause nel ciclo di elaborazione dati della CPU, insieme all'eliminazione di alcuni brutti problemi della generazione precedente come la gestione dell'aliasing, significa dare maggiore importanza all'efficienza della CPU nel mantenere un alto numero d'istruzioni per ciclo. Un valore IPC elevato significa che la CPU sta compiendo un maggior numero di operazioni per ogni singolo ciclo di clock, quindi può ottenere risultati superiori alla generazione precedente senza un'evoluzione sostanziale dell'hardware. Ma non prendiamoci in giro: entrambe le nuove console sono comunque caratterizzate da CPU a basso consumo con integrati dei processori grafici di fascia desktop.
Quindi, come impatterà tutto questo sulla prima ondata dei giochi next-gen? Beh, penso che i primi titoli cercheranno di essere graficamente impressionanti (si parla di "next-gen" dopotutto), ma in alcuni casi questo andrà a discapito della complessità del gameplay. La difficoltà iniziale risiederà nell'utilizzare la potenza della CPU in modo efficace per evitare perdita di fotogrammi nella fase di simulazione. Quindi, fino a che gli studi di sviluppo non capiranno come spremere al meglio le nuove console, difficilmente i loro titoli riusciranno ad eccellere. Tutti dovranno riuscire a trovare quel punto d'incontro tra prestazioni grafiche e complessità di design e gameplay che possa soddisfare i requisiti di entrambe le macchine. Ciò vale sia per l'Xbox One, sia per la PlayStation 4, anche se i punti d'incontro delle due piattaforme sono diversi, così come lo erano tra Xbox 360 e PS3.
"Fino a che gli studi di sviluppo non capiranno come spremere al meglio le nuove console, difficilmente i giochi riusciranno ad eccellere."
Una possibilità di crescita si avrà probabilmente nell'uso intensivo di tecniche di GPGPU, ovvero lo scarico efficace di task normalmente eseguiti dalla CPU sul processore grafico. Tutte le console della generazione attuale sono penalizzate da una GPU sottodimensionata rispetto a quella dei PC, così un sacco di tempo e sforzi sono stati profusi nel cercare di portare i task dal processore grafico a quello centrale per liberare preziosi millisecondi da dedicare al rendering, a tutto vantaggio della GPU di Xbox 360 sull'RSX di PS3. Alla fine, il saldo complessivo della potenza hardware delle due console era tutto sommato molto simile. Occlusione ambientale, backface culling, shader patching, effetti di post-processo: tutti avete sentito parlare della tecnica di spostamento dei carichi di lavoro dalla GPU alla CPU su PlayStation 3 ma la realtà è che, sì, lo abbiamo fatto anche su Xbox 360, nonostante il suo core grafico fosse più potente.
Quindi, tutte queste considerazioni dove ci portano nel breve termine? Per sintetizzare:
La bassa velocità complessiva dell'hardware condizionerà i titoli in fase di sviluppo sulle attuali console?
La maggior parte degli sviluppatori, in particolare gli studi di terze parti, non spingeranno le nuove console al loro limite al momento del lancio. Questo a causa di vari fattori: il poco tempo a disposizione per realizzare un titolo tecnicamente solido, il fatto che le console siano state messe a disposizione degli studi solo lo scorso febbraio e la necessità di apprenderne in profondità le caratteristiche tecniche per realizzare versioni multipiattaforma solide dal punto di vista della performance.
La parità di prestazioni conta, e parecchio. Guardando indietro ai primi giorni di Xbox 360 e PS3, uno dei vantaggi principali di Microsoft era il fatto di essere arrivata sul mercato un anno prima, quindi abbiamo avuto più tempo per prendere dimestichezza con l'ambiente di sviluppo. La parità tra le versioni era poi cresciuta non solo perché avevamo preso dimestichezza con l'hardware della PS3, ma anche perché l'avevamo attivamente preferita nella progettazione, esattamente lo stesso concetto cui Alex Fry di Criterion ha accennato in precedenza. L'arrivo simultaneo delle console next-gen, non farà che dar seguito a questa linea di pensiero.
Vedremo molti giochi usare un framebuffer di dimensioni inferiori?
Sì, probabilmente vedremo un sacco di giochi in sub-1080p (con upscale hardware) su una o entrambe le piattaforme next-gen, ma questo probabilmente perché non c'è stato abbastanza tempo per imparare a sfruttare la GPU quando l'ambiente di sviluppo e, talvolta, la velocità di clock, non erano ancora stati confermati da Sony e Microsoft prima del lancio definitivo della console. Se uno studio rilascia un gioco sub-1080p è perché non può farlo girare a 1080p? È perché non possiede le competenze o l'esperienza per farlo? O è una scelta di design per rendere il gioco eseguibile a un frame rate stabile in tempo per il lancio?
Questo dilemma ripropone la situazione che abbiamo citato poco fa nella scelta tra i 60 e 30 FPS sulle vecchie console. Potrebbe non essere quello che gli sviluppatori desiderano per pubblicizzare il gioco, ma è la decisione giusta da prendere mantenere un frame rate ideale su due piattaforme diverse. É molto facile additare questa come una presunta lacuna e da qui estrapolare le conclusioni sulla potenza percepita dal pubblico, ma questo non tiene conto di altri fattori, ovvero le scelte di design e il tempo a disposizione per lo sviluppo.
"Un framebuffer a 900p mostra il 30% in meno di pixel a schermo rispetto a un full-HD da 1080p."
La comprensione del perché viene presa questa decisione e quale impatto può avere sulla massa dei giocatori quando il gioco viene lanciato, non è ancora alla portata del grande pubblico. Le persone sono ancora concentrate sulle specifiche ma quando arriveranno altri titoli e la gente inizierà a giocarli, credo che le loro opinioni cambieranno. Le considerazioni sull'attuale risoluzione diventeranno meno importanti rispetto alla qualità dell'esperienza di gioco, com'è giusto che sia.
Perché stanno uscendo giochi non perfettamente rifiniti quando si sarebbe potuto fare meglio grazie a tempi di sviluppo più allungati?
Quando si tratta di scegliere una console, le persone prendono in considerazione l'acquisto in base a una serie di considerazioni: il possesso della versione precedente, le opinioni della stampa specializzata (fino a un certo punto), quali console compreranno i loro amici per giocare online e, in alcuni casi, quali esclusive sono pubblicate. Questo significa che gli sviluppatori subiscono parecchie pressioni per pubblicare nuovi giochi in tempo per il lancio, in quanto fanno aumentare considerevolmente le vendite dell'hardware. Del resto, occorre qualcosa da mostrare agli amici se si porta a casa una console fiammante, no?
Ma con poco tempo e un accesso limitato all'hardware prima del lancio, chi sviluppa deve prendere una decisione: il gioco deve sembrare bello, mantenere un solido frame rate e farsi giocare bene? In quel caso occorre scendere a compromessi e una diminuzione nella risoluzione del frame buffer è la più semplice implementazione di questa necessità, nonché la ragione principale per cui molti titoli di lancio non potranno essere considerati indicativi delle reali capacità tecniche di Xbox One e PS4. La risoluzione sub-HD di Project Gotham Racing 3 paragonata ai 1080p del suo seguito sono un ottimo esempio a riguardo.
Come sviluppatore spesso mi rendo conto di essere eccessivamente critico a proposito dei titoli realizzati da altri studi e questo in parte penalizza l'appeal dei nuovi giochi. Invece di divertirmi a provarli come i loro creatori intendevano, sono troppo occupato mentalmente a cercare problemi di rendering, simulazione della fisica o la presenza di oggetti clippati attraverso le ambientazioni. Una chiara deformazione professionale derivante dal fatto che di mestiere sono allenato a cercare questi difetti per eliminarli prima che il gioco venga pubblicato.
Tuttavia dubito che giocherò le prime uscite della next-gen dicendo a me stesso "qui si nota quanto la velocità del front-side bus condizioni l'esecuzione" o "se avessero avuto una memoria leggermente più performante sarebbe stato un grande gioco." Aspettiamo il lancio delle nuove console, godiamoci la prima ondata di titoli con la consapevolezza di essere solo all'inizio: potreste essere sorpresi di sapere dove potremo arrivare.
Traduzione a cura di Matteo "Elvin" Lorenzetti