La teoria del cloud: Xbox One potrà trasformare i videogiochi? - articolo
Il Digital Foundry analizza le potenzialità di Microsoft.
Xbox One troneggerà nel vostro salotto e macinerà dati non alla velocità di 1,2 teraflops rumoreggiata in precedenza ma di ben 5 TF, quasi quanto una scheda video Titan di Nvidia. E diventerà sempre più veloce nel tempo, almeno secondo le ultime dichiarazioni di Microsoft. Ma quanto sono realistici lo spostamento dei calcoli di un videogioco “nel cloud” e la continua aggiunta di risorse? Le dichiarazioni di Microsoft hanno un fondamento veritiero o si tratta di una strategia per competere contro le specifiche innegabilmente superiori di PlayStation 4, o ancora di semplici speranze?
Prima della presentazione di Xbox One, il pubblico era già informato sulle specifiche hardware della console grazie soprattutto alla documentazione diffusa da VGLeaks. Durango, com'era conosciuta la console prima della rivelazione del nome ufficiale, sembrava una console molto meno potente in confronto a PS4: stessa CPU con banda di memoria inferiore e un processore grafico meno prestante. Le dichiarazioni di Larry Hryb hanno in seguito evidenziato la volontà di risolvere il problema grazie a numerosi riferimenti alla “potenza del cloud”.
Marc Whitten, Chief Product Officer, ha descritto l'upgrade di Xbox Live fino a 300.000 server e ha spiegato che la potenza di calcolo del sistema è superiore a quella di tutti i computer esistenti nel 1999. Matt Booty, General Manager di Redmond Game Studios and Platforms, ha recentemente dichiarato ad Ars Technica: “Nel cloud avremo approssimativamente l'equivalente di tre Xbox One per la console di ciascun utente”, suggerendo una capacità di calcolo equivalente a 5 TF. Una dichiarazione ripresa anche da Adam Pollington, portavoce della divisione australiana di Microsoft, che ha giudicato la potenza di calcolo a disposizione di Xbox One superiore di 40 volte a quella dell'Xbox 360.
Con una tale capacità dalla sua, Xbox One sarebbe in teoria due volte e mezza più potente della PS4 e in grado di competere con i migliori PC da gioco, ma ci sono molte barriere tecniche che si frappongono tra le dichiarazioni di Microsoft e la loro realizzazione.
Cominciamo da una disamina veloce della definizione di 'cloud computing'. Prima dell'intervento dei reparti PR e marketing e delle loro dichiarazioni altisonanti, il 'cloud computing' era conosciuto come 'calcolo distribuito'. Il termine indica la riallocazione di un calcolo dalla macchina originale ai processori disponibili di un network.
L'idea alla base del sistema è di creare delle grandi server farm a cui fare eseguire dei calcoli a seconda della necessità. La piattaforma cloud di Microsoft si chiama Azure, e dalla sua nascita avvenuta nel 2010 ha strappato quote di mercato sempre più grandi ai prodotti concorrenti di Amazon e Google. Per sfruttare il calcolo distribuito, gli sviluppatori hanno bisogno di una struttura che trasformi il codice del gioco in pacchetti di lavoro e di un mezzo per interfacciarsi con i server. Questo modello di codice è già stato utilizzato in maniera pionieristica con i processori multi-core di questa generazione. Gli sviluppatori hanno imparato velocemente a trasformare i loro giochi in pacchetti simili sul processore Cell di PS3 e a utilizzare programmi per prioritizzare e distribuire questi lavori sulle risorse disponibili. Per quanto riguarda l'interfaccia server, Microsoft ha sviluppato 'Orleans', che sappiamo essere utilizzato per Halo (quello che non sappiamo è come).
"Nel cloud avremo approssimativamente l'equivalente di tre Xbox One per la console di ciascun utente" - Matt Booty
È certamente possibile per gli sviluppatori inviare richieste computazionali ai server e sfruttare così una potenza quasi illimitata, proporzionale all'investimento di Microsoft sui propri server. In questo puzzle ci sono però altri due tasselli: latenza e larghezza di banda. Microsoft ha ammesso il problema legato alla prima, ma non ha commentato in alcun modo sulla seconda, che rappresenta un collo di bottiglia fondamentale del concetto.
Le due sfide - latenza e larghezza di banda
La latenza influenza la velocità delle richieste fatte al cloud. Quando un gioco ha bisogno di un calcolo, invia una richiesta al server e attende la risposta. Pur ipotizzando un calcolo istantaneo da parte dei server, il sistema di internet è incredibilmente lento in termini di calcolo in tempo reale. Una richiesta da parte della vostra console deve farsi strada attraverso numerosi router e server fino alla sua destinazione, e i risultati devono effettuare lo stesso complicato tragitto di ritorno. Per mettere la cosa in prospettiva, quando i circuiti logici di una CPU vogliono dei dati, impiegano alcuni nanosecondi (miliardesimi di secondo) per recuperarli dalla cache. Se i dati non sono nella cache, la CPU deve attendere alcune centinaia di nanosecondi per prenderli dalla RAM principale, e già questo è considerato un male per l'efficienza del processore. Se la CPU dovesse chiedere al cloud di calcolare qualcosa, la risposta potrebbe non essere disponibile per 100 millisecondi o più, a seconda della latenza della rete… vale a dire 100 milioni di nanosecondi!
Dato che un gioco ha solamente 33 millisecondi per renderizzare un fotogramma a 30FPS, simili attese implicano che il cloud non può essere utilizzato per i calcoli dei frame. Se durante una partita a Forza la vostra macchina si schianta contro un muro, non volete vederla arrivare dalla parte opposta dello scenario per i tre o quattro fotogrammi successivi (o anche di più durante gli inevitabili sobbalzi di internet), tempo necessario al cloud per calcolare i risultati della fisica e consegnare alla console l'informazione riguardante l'incidente.
Microsoft riconosce il problema della latenza e Matt Booty dice: “Le cose che definirei soggette alla latenza sono le reazioni alle animazioni in uno sparatutto, agli urti in un racing e alle collisioni. Queste cose devono accadere immediatamente ed essere sincronizzate con il controller. In un videogioco ci sono però alcune cose che non devono venire necessariamente aggiornate a ogni fotogramma o che non cambiano molto in base a ciò che avviene.”
Considerando il problema della latenza, i calcoli eseguiti dal cloud sarebbero limitati ad alcune aree specifiche. D'accordo, potremmo scendere a patti con questo ma bisogna calcolare il fattore maggiore, ossia la larghezza della banda.
"Anche le connessioni più veloci non possono competere con l'ampiezza di banda interna di una console moderna"
Il rapporto trimestrale di Akamai sulla situazione di internet ci tiene costantemente informati sulla velocità delle connessioni a banda larga alla portata degli utenti. Le velocità medie nei paesi più evoluti faticavano a raggiungere gli 8mbps nel terzo trimestre dell'anno scorso, vale a dire un megabyte al secondo. Ciò significa che a prescindere dalla potenza di calcolo distribuito disponibile, le console potranno accedere a non più di 1MB/s di dati calcolati. Per fare un confronto, la RAM DDR3 di Xbox One dovrebbe andare a 68.000MB/s, e anche questo valore sarebbe stato considerato insufficiente al punto da rendere necessaria l'introduzione dell'ESRAM.
La memoria di sistema di PS4 alloca circa 20.000MB/s delle 176.000MB/s totali alla CPU. Il cloud può fornire alla CPU un ventesimo dei dati rispetto alla memoria di sistema di PS4. Ovviamente c'è chi ha accesso a connessioni molto migliori di quelle a 8mbps citate, ma anche la banda larga su fibra ottica da 50mbps equivale a un valore di appena 6MB/s. Si tratta di un notevole collo di bottiglia ai dati utili delegabili al cloud, anche senza contare la velocità di upload. Quest'ultima è solo una frazione della velocità di download, e riduce sensibilmente la quantità di informazioni da calcolare che possono essere inviate al cloud. Tornando all'esempio dell'incidente di Forza, se la console dovesse trasferire le mesh di scenario e collisione al cloud per verificare la possibilità di un impatto, la cosa richiederebbe parecchi secondi.
Ovviamente non trasferiremmo dati tramite internet senza averli compressi prima. È attraverso la compressione che OnLive riesce a trasmettere in streaming video dei videogiochi ad alta definizione anche attraverso connessioni lente. Se OnLive può farlo con i giochi, perché lo stesso sistema non può essere utilizzato per il cloud computing? Il problema principale in questo caso è che un video può essere compresso da algoritmi che eliminano grandi quantità di dati ininfluenti per chi osserva, producendo un filmato paragonabile alla fonte non compressa utilizzando una frazione dei dati originali. Ciò non è possibile con dati relativi a cose come IA, stati fisici o modelli.
Esistono metodi meno efficienti ma in grado di preservare l'integrità dei dati come, zip e Lempel-Ziv (LZ), e due dei quattro “Memory Move Engines” dedicati inseriti da Microsoft sul processore principale sono capaci di funzionalità LZ. Uno dei due è in grado di encodare in LZ e l'altro di decodificare da esso, il che testimonia l'interesse di Microsoft di delegare questi compiti a componenti dedicate invece che farli eseguire al processore. Le specifiche di 200MB/s nella decodifica è sicuramente sufficiente a gestire i volumi di dati trasferiti tramite internet, ma l'inclusione di questi motori non è purtroppo una prova definitiva dell'intenzione di trasmettere dati compressi dal cloud alla console.
"Nelle specifiche ufficiali o meno di Xbox One c'è molto poco che suggerisca un design studiato per sfruttare il cloud"
Caricare dati e decomprimerli è più veloce che caricarli già decompressi, e questi motori potrebbero essere stati inclusi per facilitare questi processi. Con un accesso completo da parte degli sviluppatori, non c'è motivo per escludere una simile applicazione su dati scaricati dalla rete, ma anche questo non risolverebbe le limitazioni imposte dalla banda al potenziale del cloud computing. La compressione LZ tipicamente dimezza le dimensioni dei file, raddoppiando quindi i limiti della banda per un totale che risulta comunque insignificante.
Per cosa può essere utilizzato il cloud?
Tutto questo significa che il cloud computing non può essere utilizzato per eseguire compiti in tempo reale, come Microsoft stessa ha ammesso. Quello per cui potrebbe venire utilizzato è il calcolo di grandi blocchi di dati la cui velocità di calcolo non sia importante e che possano essere scaricati su HDD.
Microsoft l'ha ammesso senza remore. Matt Booty ha detto: "Un esempio potrebbe essere l'illuminazione. Supponiamo che lo scenario sia una foresta e che sia necessario calcolare la luce che filtra attraverso la vegetazione, o pensiamo anche a un campo di battaglia con una fitta nebbia volumetrica. Queste cose implicano calcoli molto complicati all'ingresso nell'area, ma non è necessario aggiornarle a ogni fotogramma. Sono i calcoli perfetti da far gestire al cloud, che grazie al supporto di numerose macchine può occuparsene con facilità."
Esaminando i tipici compiti del processore relativi a un videogioco, possiamo tentare di capire quali possano essere effettuati dal cloud. Un classico motore di gioco consiste di:
- Fisica (aggiornamento dei modelli)
- Disposizione e ottimizzazione dei triangoli
- Tessellation
- Texturing
- Shading
- Vari passaggi di rendering
- Calcolo dell'illuminazione
- Effetti post-processing
- IA immediata
- IA ambientale
- Fisica immediata (colpi, collisioni)
- Fisica ambientale
Di questi, solamente la gestione in background degli scenari e alcune forme di illuminazione possono essere considerate per un calcolo in remoto.
Microsoft ha menzionato il calcolo dell'illuminazione nel cloud come una delle possibilità. L'illuminazione crea dati fissi e pre-calcolati che vengono immagazzinati nel disco e caricati poi nel gioco. Il concetto è stato inizialmente utilizzato con le lightmap “pre-baked”, creando delle texture con illuminazione fissa dall'aspetto abbastanza realistico ma statico e ideali solo in ambienti non interattivi. Innovazioni come il Pre-computed Radiance Transfer (PRT) hanno reso l'illuminazione pre-calcolata più dinamica. Lo stato dell'arte della tecnologia attuale è rappresentato da Lightmass dell'Unreal Engine 4, che precalcola i volumi di luce al contrario della tecnologia SVOGI che, pur calcolando in tempo reale, è considerata ancora troppo esigente in termini di risorse necessarie. Anche se il cloud non potrebbe comunque rendere possibile l'utilizzo di SVOGI a causa dei limiti di latenza e banda discussi in precedenza, può invece “pre-calcolare” i dati relativi all'illuminazione per scene dinamiche.
Fattori come l'orario specifico della scena possono essere trasmessi al server, e il relativo rendering per l'area tornare alla console in pochi minuti. Questi dati verrebbero salvati su hard disk e utilizzati poi mentre il personaggio si sposta per lo scenario: i ritardi nell'aggiornamento di dettagli così sottili non sarebbero praticamente rilevabili, quindi il sistema non risentirebbe del problema della latenza. Luci dinamiche come la fiammata di un'arma da fuoco non potrebbero essere gestite in questo modo, per cui gli sviluppatori dovrebbero includere comunque nel gioco delle soluzioni di illuminazione in tempo reale, ma una gestione avanzata della luce è una delle aree in cui il cloud potrebbe sicuramente contribuire.
I miglioramenti della capacità di rendering in locale e nuove tecniche hanno reso però l'illuminazione globale in tempo reale possibile anche senza la necessità di ricorrere a dei server. Un esempio di propagazione della luce mostrato da Crytek nel 2009 è stato estremamente impressionante, pur con il supporto di una semplice GTX 285. Un futuro Battlefield dotato di scenari distruttibili dovrebbe preferibilmente adottare soluzioni che permettano di aggiornare l'illuminazione immediatamente piuttosto che ogni pochi secondi.
"Il cloud può pre-calcolare l'illuminazione per scene dinamiche"
Un'altra possibilità di sfruttamento del cloud computing è l'IA, non per le interazioni dirette come la scelta dell'azione che un NPC deve effettuare ma per l'IA che opera in sottofondo nel caso di mondi dinamici come quelli di Grand Theft Auto e Elder Scrolls. La complessità di questi giochi è sempre stata limitata dall'hardware delle console, e l'IA ridotta a routine comportamentali molto semplici. Il cloud computing potrebbe simulare il mondo di gioco e aggiornare i risultati sulla console nel corso del tempo, permettendo agli scenari di sembrare vivi e di reagire alle azioni del giocatore. Mondi così complessi sarebbero una novità significativa, ma solo per alcune tipologie di videogiochi. Titoli di punta di Xbox 360 come Gears of War e Forza Motorsport non hanno bisogno di IA di questo tipo per le ambientazioni.
Quindi quali altre possibilità offre il cloud computing? È sconcertante l'apparente mancanza di idee di Microsoft in merito. Nel panel sull'architettura di Xbox One, il direttore dello sviluppo Boyd Multerer ha rilasciato le seguenti dichiarazioni: “È possibile cominciare ad avere mondi più grandi. Si possono avere molti giocatori insieme, ma forse anche prendere alcune delle cose che normalmente vengono fatte in locale, farle esternamente, e… sapete, questa generazione vuole abbracciare il cambiamento e la crescita mantenendo la prevedibilità di cui gli sviluppatori hanno bisogno."
Queste invece le dichiarazioni di Marc Whitten, Chief Product Officer, in un'intervista successiva all'evento: “Possiamo sfruttare la potenza del cloud per creare esperienze e supportare la console. Gli sviluppatori possono utilizzare la capacità di calcolo decentrato per creare partite multiplayer o mondi più grandi, più realismo nella fisica, tutte queste cose. Credo che vedremo una creatività senza precedenti grazie all'unione della potenza della nuova Xbox e del nuovo Xbox Live."
Nessuno dei due offre una visione chiara delle opportunità offerte dal cloud computing, mentre entrambi menzionano un maggior numero di giocatori e l'importanza dell'hardware locale. Nick Baker, architetto della console, ha commentato l'utilità dell'architettura multitasking GCN di AMD dicendoci che “anche la GPU può operare in multitasking, quindi si possono eseguire diversi thread di calcolo e rendering in modo che IA, rilevamento delle collisioni ed effetti vengano calcolati in parallelo sulla GPU mentre si esegue il rendering…”
Il messaggio non è molto chiaro, ma Microsoft ha detto di trovarsi in territorio inesplorato e soluzioni più convenzionali sono in linea con la situazione. Tentando di pensare in maniera più creativa, sembrano esserci un paio di possibilità non ancora menzionate. La creazione procedurale di contenuti, un concetto sbandierato a più riprese ma mai consolidatosi, potrebbe essere eseguita online per generare texture e modelli con cui riempire una città di personaggi ed edifici unici.
"La generazione procedurale nel cloud permetterebbe di creare personaggi e scenari in costante evoluzione"
Il Substance Engine di Allegorithmic, disponibile per PS4 e presumibilmente Xbox One, crea texture partendo da algoritmi utilizzando la potenza di calcolo locale. La stessa tecnologia utilizzata nel cloud renderebbe possibile la creazione di modelli di persone e scenari in evoluzione. Considerando l'aspirazione di vecchia data di Peter Molyneux a creare mondi veramente persistenti, viene spontaneo immaginare un Fable gestito dal cloud che si occupi di far evolvere l'ambientazione, anche se l'enorme potenza di calcolo delle console (un teraflop è veramente tanto) potrebbe essere sufficiente per gestire cambiamenti così lenti insieme al resto del gioco. Possiamo immaginare anche dialoghi generati proceduralmente: con un'adeguata ricerca, i server potrebbero gestire simulazioni di dialoghi molto intense dal punto di vista del calcolo per creare discorsi degli NPC realistici e adatti al contesto del momento, un netto passo in avanti rispetto alla solita manciata di frasi pre-registrate.
Un altro possibile utilizzo non riguarda la potenza di calcolo, ma la capacità virtualmente illimitata del cloud di immagazzinare dati. Già esistono semplici giochi il cui scenario è il mondo intero, come GeoGuessr che utilizza Google Earth. Con l'evoluzione delle tecnologie di mappatura possiamo aspettarci rappresentazioni molto più dettagliate in futuro. Gli scenari di Project Gotham Racing si limitavano a ciò che Bizarre poteva stipare nel disco, ma immaginate il risultato dell'unione dei dati di Google Earth con le tecniche di modellazione di Bizarre per il prossimo Forza: potremmo scegliere una locazione qualsiasi del mondo e cominciare a guidare, un avanzamento possibile grazie all'abbattimento dei limiti nell'immagazzinamento dei dati garantito dal cloud. La tecnologia Unlimited Detail di Euclideon suggerisce un futuro fatto di mondi tridimensionali scannerizzati, e non possiamo fare a meno di chiederci quanto tempo passerà prima che Google escogiti delle telecamere 3D alla Kinect per scannerizzare il mondo reale.
Considerazioni economiche: perché il multiplayer ha senso
Oltre le considerazioni tecniche su cosa sia possibile o meno fare a causa delle limitazioni di banda e latenza, bisogna ovviamente fare delle considerazioni economiche. Impiegare un server per un gioco in singolo è un'operazione estremamente costosa: ha molto più senso utilizzare i server per far girare titoli multiplayer, una soluzione che abbiamo visto accennare da più portavoce di Microsoft. Questa visione non sembra troppo lontana dalle vecchie idee di MMO e gioco basato su server: un Elder Scrolls supportato da illuminazione e IA gestite dal cloud avrebbe senso come esperienza multiplayer dal punto di vista economico, e il risultato sarebbe semplicemente un Elder Scrolls Online.
Questo implica però che ogni gioco gestito da un server possa prestare la propria potenza di calcolo alle console che fungono da client, mentre in realtà esse sono due entità distinte che lavorano insieme. Quando giocate a Battlefield 3 sulla vostra Xbox 360 avete a disposizione la potenza computazionale di una dozzina di console solo perché il server ne è dotato? Le dichiarazioni di Microsoft sembrano vaghe, e senza la conferma che per ogni Xbox One verranno messi a disposizione quattro teraflop sui server, possiamo considerare questi discorsi come semplice propaganda volta a minimizzare l'importanza del deficit di calcolo rispetto alla console concorrente.
"Immaginate il risultato dell'unione dei dati di Google Earth con le tecniche di modellazione di Bizarre per il prossimo Forza"
È necessario considerare anche i problemi supplementari a cui gli sviluppatori dovrebbero trovare soluzione. Cosa accadrebbe nel caso in cui la connessione a internet sia più lenta del solito o non disponibile? Trasferimenti costanti di grandi quantità di dati potrebbero venire limitati dagli ISP, senza contare che altri potrebbero utilizzare la banda disponibile: cosa accadrebbe al vostro gioco per Xbox One fortemente dipendente dal cloud se qualcuno in casa decidesse di guardare un video Super HD in streaming da Netflix?
Matt Booty, parlando ad Ars Technica, ha affrontato il problema in maniera approssimativa e poco convincente.
"In caso di una disconnessione, e sappiamo tutti che internet può venire occasionalmente a mancare (dico occasionalmente perché al giorno d'oggi contiamo su internet almeno quanto contiamo sull'elettricità), il gioco dovrà gestire la situazione in modo intelligente”, è stato il vago suggerimento di Booty.
Booty ha detto di "restare sintonizzati " per ulteriori dettagli, sottolineando che “si tratta di una nuova tecnologia e di una nuova frontiera per il game design, e vedremo come si evolverà come abbiamo fatto con le altre”.
Scendere a patti con la natura di internet non è una novità, e già molte tecnologie differenti sono state sviluppate per i giochi online, ma l'applicazione del cloud computing su larga scala avrà nuove sfide da affrontare. Gli sviluppatori potrebbero aver bisogno di sistemi di riserva indipendenti dalla connessione, come un'illuminazione calcolata in locale. Ipoteticamente i giocatori rischierebbero la visualizzazione di texture imprecise o aggiornamenti lenti degli NPC nel caso in cui i dati vadano perduti e il gioco decida di utilizzare quelli di riserva .
Per quanto riguarda i titoli multipiattaforma sviluppati anche per PS4 e PC, il problema sarebbe di natura ugualmente economica ma diverso: meglio utilizzare sistemi migliori in grado di sfruttare il cloud di Xbox One o gli stessi algoritmi per tutte le piattaforme, leggermente limitati a causa della GPU meno potente della console di Microsoft? Il cloud di Xbox Live non potrà essere utilizzato per le piattaforme concorrenti, e questo crea un problema singolare a Microsoft: i giochi third-party probabilmente non sfrutteranno il cloud e Xbox One ne beneficerebbe solamente in una manciata di esclusive. Se il sistema venisse messo a disposizione dei concorrenti, Xbox One perderebbe il vantaggio.
È palese che l'applicazione del cloud computing sia fumosa e improbabile, e Microsoft deve provare le recenti dichiarazioni tramite del software. A giudicare da ciò che ci è stato detto, l'azienda stessa non è certa di come sfruttare il sistema a causa delle forti limitazioni imposte da banda e latenza. I frequenti accenni a Live e multiplayer suggeriscono utilizzi più convenzionali in MMO e titoli simili. Più giocatori, achievement adattabili e mondi intelligenti sono concetti attraenti ma che non sembrano dimostrare la decantata quadruplicazione delle capacità di calcolo della console.
Microsoft deve provare la propria posizione con idee chiare e dimostrazioni pratiche. Fino ad allora sarebbe meglio non lasciarsi trascinare dall'idea di una console super-potente, e non ci sono motivi tangibili per cui Sony debba preoccuparsi che le specifiche superiori di PS4 possano venire spazzate via dalla “potenza del cloud”.
Traduzione a cura di Emiliano Baglioni.