Circa un anno un anno fa, durante l'evento BUILD 2014 di Microsoft, venne mostrata una tech-demo riguardante il cloud computing, ossia la possibilità di scaricare lavoro da una macchina in locale ad una infrastruttura server per risparmiarne preziose risorse. La demo prevedeva infatti la gestione della fisica calcolata direttamente sui server Azure con il local client che invece aveva il compito unicamente di gestirne il rendering.
Venne mostrato in particolare come l'offload computazionale su Azure (ovvero lo scarico) della fisica che gestisce i crolli di edifici e l'impatto dei proiettili su diverse strutture architettoniche potesse impattare positivamente sul frame rate finale, con la macchina in locale che non doveva sobbarcarsi di tutta una serie di calcoli in quanto affidati e gestiti "esternamente". In parole povere, una macchina collegata alla rete e in comunicazione diretta con i data center di Microsoft, può scaricare lavoro computazionale ad una enorme infrastruttura online che si occupa di calcoli complessi, indispensabili per garantire una certo realismo della fisica applicata.
Da una parte, a sinistra, vediamo all'opera la fisica gestita interamente da una macchina non collehgata ad Azure, dall'altra, a destra, un client collegato ad Azure con la fisica gestita in tempo reale dai server, con latenza minima:
Da una parte, a sinistra, vediamo all'opera la fisica gestita interamente da una macchina non collehgata ad Azure, dall'altra, a destra, un client collegato ad Azure con la fisica gestita in tempo reale dai server, con latenza minima:
Questa impressionante demo si scoprì successivamente essere il "work in progress" di Crackdown 3, titolo recentemente mostrato alla Gamescom 2015 e che si poggia sull'inedito engine Cloudgine, motore grafico che muove la nuova esclusiva per Xbox One e che fa leva proprio sul cloud computing di Microsoft:
Il video di Crackdown 3 alla Gamescom di Colonia è stato molto importante per Xbox One e Microsoft che ha dato un assaggio delle infinite potenzialità di questa particolare tecnologia, soprattutto in ambito videoludico. La demo, messa anche a disposizione dei giornalisti, ha permesso di toccare con mano la modalità multiplayer online, dove quattro giocatori possono cooperare all'interno di un sandbox enorme con anche il più piccolo elemento gestito dal cloud: eplosioni e detriti, palazzi che collassano, pannelli che si staccano, i fori dei proiettili, la fisica che ne gestisce rotazione, velocità e movimento, gli impatti, ogni elemento soggetto a calcoli matematici è elaborato all'interno di Azure, con Xbox One che ne deve "tracciare" la rotta unicamente per il rendering (e dunque gli elementi grafici).
Questo ha permesso agli sviluppatori di donare estremo realismo alla "distruzione di palazzi ed elementi di contorno" senza gravare in nessun modo sull'elaborazione in locale della console che può così utilizzare le risorse liberate dal cloud computing per altri processi (rendering su tutti).
Il cloud computing, tuttavia, può anche essere adibito per la gestione dell'illuminazione globale, la gestione di grandi scenari non interattivi, l'intelligenza artificiale e molto altro ancora (due esempi ne abbiamo già e sono i Drivatar di Forza Motorsport 5 e Forza Horizon 2 e i bot/titan di Titanfall).
Già NVIDIA mostrò tempo fa una tech-demo sul cloud computing ove le routine di illuminazione venivano gestita via rete:
In molti stanno abbracciando la filosofia del cloud computing, basti vedere anche Square Enix con la Shinra Technologies (Project Flare in precedenza), ma non è facile mettere su una infrastruttura server per garantire sempre il corretto funzionamento di tale tecnologia, e sono davvero in pochi in grado di contare su data center grandi ed affidabili (Microsoft, Google, Amazon).
Secondo Reagent Games, sviluppatori di Crackdown 3, Xbox One collegata al cloud garantirebbe una potenza pari a ben 20 console (oltre i 20 TFlops): questa la mole di lavoro richiesta per la gestione di fisica e demolizioni.
Inoltre se per qualsiasi motivo si dovesse interrompere il coleggamento alla rete (problemi tecnici, ADSL che salta, un blackout improvviso dei data center) il gioco porterà automaticamente al single player, senza perdere i progressi acquisiti, anche se in questo caso sarà possibile giocare unicamente da soli e senza contare del supporto del cloud computing, ma senza che la sessione venga interrotta.
Infine, giusto per tacere le male lingue, il supporto completo al cloud richiederà connessioni tra i 2 e 4 Mbit, più che nella media anche per le connessioni nostrane.
Ma com'è possibile che Xbox One possa sfruttare così agevolmente questa intrigante caratteristica? Dobbiamo innanzitutto porci delle semplici domande, almeno per chi è interessato a tale tecnologia e vuole conoscere meglio la struttura hardware di Xbox One. Andiamo con ordine:
Cosa sono i Data Move
Engine?
La prima presentazione di Xbox One mostrò due elementi che
fecero storcere subito il naso verso i futuri acquirenti e i fan di Xbox: la
console, per il corretto funzionamento, sarebbe dovuta essere collegata sempre
a Internet, questo per il doppio discorso legato a DRM (i diritti sui media
digitali) e cloud computing. Xbox One è stata infatti studiata appositamente
anche per beneficiare di questa notevole e importante feature.
Il tutto poi saltò in seguito alle lamentele dei più, con Microsoft costretta a compiere un passo indietro e posticipando il discorso “cloud”. Ma ora scoprirete effettivamente cosa aveva in mente Microsoft e perché voleva a tuti i costi tenere la sua console sempre connessa a Internet.
Il tutto poi saltò in seguito alle lamentele dei più, con Microsoft costretta a compiere un passo indietro e posticipando il discorso “cloud”. Ma ora scoprirete effettivamente cosa aveva in mente Microsoft e perché voleva a tuti i costi tenere la sua console sempre connessa a Internet.
Ritroviamo nel chipset della console diversi elementi che si
interfacciano proprio in quest’ottica futura: abbiamo l’on-chip network
collegato (NoC) al northbridge che può comunicare, grazie anche alla presenza
dei 4 Data Move Engines, direttamente con la CPU e la GPU, senza dover passare
per canali tradizionali (come avviene per i comuni PC, ossia via PCI Express o
southbridge) riducendo al massimo problemi legati alla banda e alla latenza.
Una configurazione che rimanda a quelle classiche dei “super
computer” utilizzati nei grossi data center e che devono smistare una
grandissima mole di dati attraverso la rete.
Come già detto, un piccolo esempio/assaggio di cloud computing è dato già
dai Drivatar di Forza Motorsport 5 o i bot di Titanfall… ma sono solo un
assaggio quello che ci attenderà nel prossimo futuro, come in Halo 5 (AI ancora più evoluta, sempre gestita dal cloud, compresi i mezzi avversari o, come ben saprete, la distruzione completa e su vasca scala di
Crackdown 3).
Studiando il chipset di Xbox One possiamo constatare come la
console sia stata studiata per sfruttare il cloud computing, a differenza di
PS4 che, sì, potrà sfruttare una simil caratteristica, ma non nativamente a
causa della presenza di un solo DMA e non di special purpose processor
(appunto, come sono i Data Move Engines) come ha la “rivale”.
I DME (Data Move Engines, di cui Xbox One ne dispone ben 4) hanno accesso diretto all'interfaccia di rete (NoC): questi sono in grado di comprimere e decomprimere flussi di dati mentre CPU e GPU sono in “deadlock” per altri compiti (volgarmente in fase di “stallo”).
I DME (Data Move Engines, di cui Xbox One ne dispone ben 4) hanno accesso diretto all'interfaccia di rete (NoC): questi sono in grado di comprimere e decomprimere flussi di dati mentre CPU e GPU sono in “deadlock” per altri compiti (volgarmente in fase di “stallo”).
Nello stesso istante i DME possono
effettuare il cosiddetto Tiling/Detiling, tanto sulla memoria di sistema
principale (gli 8 GB DDR3) quanto sulla ESRAM, sfruttando il bus a loro
dedicato che è di circa 25,6 GB/s, non toccando quindi l’intera banda passante di CPU e
GPU. SoC e Data Move Engine godono infatti di bus indipendenti e separati.
Un DME può comprimere e decomprimere nativamente anche immagini in jpeg a circa
200 GB/s, a cui si aggiunge anche la Swizzle Copy che Xbox One integra come
offloading chip. In altre parole sia il processore principale che il processore
grafico sono alleggeriti dal carico di spostare flussi di dati dalla memoria,
cosa eseguita dai DME e che, nella situazione migliore possibile, consente a
CPU e GPU di spostare memoria contemporaneamente alle DME incrementando l'effettiva
bandwith a disposizione in quel preciso lasso temporale.
La PS4 è priva dei move engine e dunque della possibilità di prelevare i dati
provenienti dalla rete (o meglio, dall'interfaccia di rete) e indirizzarli
nella memoria di sistema (PS4 non dispone nemmeno di una EDRAM o di una ESRAM)
lasciando a CPU e GPU il gravoso compito di gestire anche i flussi di dati
della rete, saturando o comunque diminuendo la larghezza di banda a
disposizione.
Sulla PS4 il Tiling (arrivare ad un grosso blocco di dati partendo
da pacchetti più piccoli, come fosse un grosso puzzle) e il Detiling (il
processo inverso, decomporre grossi blocchi di dati in parti più piccoli
posizionandoli per esempio all’interno della ESRAM o della DDR) è gestito dal
SoC (CPU e GPU) e da un comune DMA. Inoltre la presenza delle GDDR5, ottima per
file di grandi dimensioni ma problematica con pacchetti piccoli, non agevola il
lavoro di Tiling/Detiling a causa della forte latenza che ha verso la CPU.
Chi dice quindi che anche PS4 può sfruttare nativamente il
cloud computing dice una falsità, dato che il chipset non è assolutamente
disegnato per gestire compiti di questo tipo. Xbox One sì, invece.
Funzionamento del cloud e le risorse di rete
La domanda che tutti si pongono è se il cloud computing sia
una cosa fattibile: su molti forum e siti “specializzati” si legge che la banda
richiesta per il corretto funzionamento debba essere elevata e vi sarebbero
problemi di latenza poiché, prendendo ad esempio uno sparatutto online, con a
schermo decine di personaggi che si sparano a vicenda, richiederebbe una banda
enorme e una latenza minima.
Innanzitutto è doveroso fare una precisazione, che purtroppo in molti si dimenticano di fare (disinformazione?): cloud gaming e cloud computing sono due cose diametralmente diverse. Il cloud gaming è usufruire di un gioco sfruttando lo streaming di rete, con il gioco che “gira” su server e con il client che manda unicamente input sul “movimento” (in un platform ad esempio direzione e salto, in uno shooter quando si spara o quando ci si gira ecc.).
Il cloud computing permette invece la comunicazione diretta tra client e server con molti compiti computazionali gestiti lato server (intelligenza artificiale, illuminazione indiretta, posizione personaggi, attività fuori dalla portata del giocatore in quell’istante), con i dati inviati in determinati intervalli o in determinati frangenti con il client che deve elaborare solo una porzione di codice lasciando sgravate CPU, GPU e memoria.
Il cloud computing quindi non è cloud gaming, ma è un
sistema assai più dinamico: l’intera scena può essere, ad esempio, memorizzata
già all’interno del cloud (un palazzo, una piazza, una parte del quadro) che
agisce anche sui complessi calcoli della fisica e delle traiettorie dei
proiettili (o esplosioni ecc.) con la macchina in locale che deve semplicemente
riproporre uno spazio più limitato (il giocatore non vedrà mai l’intero
livello, ma solo porzioni ove egli stesso si muove).
L’unica cosa che la console deve fare è mandare l’input ai
server sulla posizione attualmente ricoperta dal giocatore, eventuali raffiche
sparate e andate a segno.
Se supponiamo che ogni singolo colpo richiede 20
bytes di dati per essere “trasferito” ad Azure (dati forniti da un nostro
collega programmatore) una raffica di 10 colpi necessita di appena 200 bytes.
Successivamente i server rispediscono al client i dati rielaborati in quel
momento che ammontano, più o meno, alla stessa cifra. Tanti pacchetti di pochi
KB in download e upload. Il client deve quindi gestire unicamente la posizione
iniziale o quella in cui si trova, la geometria poligonale circostante, la
collisione e forza centripeta dei colpi, mentre tutto il resto è elaborato dai
data center.
Ogni singolo elemento richiede circa 100 bytes, cosa che rientra
nella connessione minima richiesta da Microsoft: una semplice ADSL da 2 MB con
anche 100ms di latenza (o ping). Prendete Titanfall come esempio e capirete le
potenzialità del cloud, anche se si partecipa a stanze con 100ms di latenza.
Fate una prova e diteci se trovate LAG nell’uccidere i BOT.
Quindi no, non servono super connessioni per poter usufruire
di questa caratteristica e la cosa è stata smentita proprio da Reagent Games con Crackdown 3. E qui parliamo di un continuo traffico di dati per l'elaborazione della fisica in tempo reale, esplosioni, crolli, frammenti che partono in ogni dove, l'impatto dei proiettili, tutto su vasta scala! Ora possiamo dirlo: il vecchio trailer dell'E3 2014 di Crackdown 3 girava in tempo reale:
Diamo i numeri: quanto è esoso Crackdown 3 in termini di banda e ping?
Facendo dei calcoli semplici e “ottimali”, prendiamo proprio l'IP esclusiva per Xbox One come esempio e analizziamo quali risorse di rete saranno richieste
per una esplosione di media grandezza e rispettivi detriti gestiti via cloud, quindi presupponendo un target rendering calcolato sul cloud ed elaborato
poi in locale.
Considerando un calcolo in tempo reale di ogni chunk di dati, che avviene 32
volte al secondo, abbiamo:
- 32 bits * 6 - Float
- 9 bits * 2 - 9 Bit Integer
- Compressione tipica (LZ77 che Xbox One integra): 85%
- Chunk: 10,000
- Bit totali per Chunk: 210 bits
- Conversione bit totali per Chunk: 2,100,000
- Bit totali compressi: 315,000
- Configurazione tipica Ethernet MTU = 1500 bytes = 12000 bits
- Data frame per esplosioni iniziali di 10.000 Chunk: 27
- Overhead tipico in UDP = 224 bits
- Overhead totale per esplosione = 6048 bits
- Bit totali necessari da inviare per esplosione: 321,048
- Banda necessaria per esplosione inziale: 313Kbps
- Tutti i Chunk collidono in 4 secondi: 2500 Chunk rielaborati ogni secondo
2500*210 = 525000
- Compressi: 78750 bits
- Data Frame per secondo necessari per la rielaborazione: 7
- UDP Overhead = 1568 bits
- Bit totali necessari per la rielaborazione: 80318 bits
- Banda necessaria per la rielaborazione: 78kbps
- Banda necessaria per elaborazione totale in ogni secondo: 391kbps
- Banda necessaria per la elaborazione dopo il primo secondo: 78kbps
Calcoli eseguiti considerando le variabili X, Y, Z partendo da coordinate
fisse iniziali e finali nel percorso della mappa. Ho poi assegnato 9 bit
interi per i valori della rotazione sul percorso
e il raggio dell'arco del percorso.
Per fare un confronto diretto con i servizi che vengono utilizzati ogni giorno, ad esempio Netflix o YouTube utilizzano 7Mbps per un flusso Super HD (720p/1080p), uno standard in questi giorni anche in Italia.
Latenza:
- Media RTT
(Round Trip Time) verso Azure: 40ms
- Calcolo del
tempo verso i Server: 32ms (per 32FPS)
- RTT totale =
72ms
- In secondi =
0.072 secondi
Conclusione:
Per l’elaborazione della sola fisica delle esplosioni servono solamente 392KB di dati trasmessi via rete. Questo considerando anche che la perdita dei pacchetti non è più un problema con le connessioni attuali (ADSL) e i problemi potrebbero derivare solo se si è connessi a wireless scadenti o ad ADSL che sono attorno al MB (in download).
Con una 2MB è possibile calcolare sino a 30.000 oggetti.
Tutti i dati sono stati elaborati su base ottimale e prendendo in esame le
caratteristiche di Azure, documentate sul sito Microsoft.
Per rappresentare un semplice vettore 3D, la rotazione per un oggetto ha
bisogno di circa 12 variabili:
- Xstart - inizio coordinate X (32 bits)
- Ystart - inizio coordinate Y (32 bits)
- Zstart - inizio coordinate Z (32 bits)
- Xvelocity - velocità su asse X (32 bits)
- Yvelocity - velocità su asse Y (32 bits)
- Zvelocity - velocità su asse Z (32 bits)
- αstart(alpha) – inizio orientamento α (32 bits)
- βstart(beta) – inizio orientamento β (32 bits)
- γstart(gamma) – inizio orientamento γ (32 bits)
- αrate - Rate di rotazione su asse α (32 bits)
- βrate - Rate di rotazione su asse β (32 bits)
- γrate - Rate di rotazione su asse γ- (32 bits)
Ovviamente ho cercato di rendere il discorso il più
semplicistico possibile e mi sono messe sempre nella condizione ottimale, ma
il discorso è assai più complesso e richiede fondamenti di fisica e matematica
avanzata.
E dire che quando veniva presentata Xbox One assieme al cloud, lo stesso Phil Spencer veniva deriso e sbeffeggiato sul web: questi, purtroppo, sono meccanismi che richiedono tanto tempo e forse Microsoft avrebbe dovuto mostrare prima qualcosa di più concreto che non comunicati o frasi fatte. Ma il grande giorno è arrivato e adesso nessuno può dire che il cloud computing non esista o non sia fattibile.
Xbox One venne presentata come una console 8 volte più potente di Xbox 360 (2.6 TF):
Xbox One, quando collegata al cloud, venne presentata come una console 32 volte più potente di Xbox 360 (11 TF):
Con Crackdown 3 adesso si parla di una potenza di 20 volte quella di Xbox One, perché? Semplice, in base alle richieste computazionali, Azure può richiedere più o meno potenza in base alle situazione, in una struttura scalabile che può consentire a Xbox One tot TF di scarico! Il tutto gestito in tempo reale, senza la benché minima "interferenza".
Questo è solo un piccolo riassunto di quanto viene richiesto in
termini di risorse di rete per il corretto funzionamento del cloud in determinati scenari, ma l'esempio è indicativo per capire, grosso modo, come le richieste di rete siano comunque abbordabili, e se Crackdown 3 girerà agevolmente ad un range tra i 2 e i 4Mbit di banda per lo sfruttamento non solo di esplosioni, ma anche di fisica, interazione dei colpi, crolli e detriti vettoriali, viene facile pensare come questa tecnologia possa essere sfruttata in tutte le future produzioni.
Ricordiamoci infatti che l'infrasruttura Live/Azure di Xbox One è concessa anche agli studi di terze parti gratuitamente e se uno sviluppatore vorrà sfruttare il cloud computing in futuro su Xbox One non dovrà sborsare soldi o royalty aggiuntive.
Proprio questa scelta potrebbe inficiare positivamente per gli studi esterni (come già avvenuto per Titanfall) ma è solo dimostrando ai videogiocatori e gli altri team interessati al cloud con demo concrete come Crackdown 3 che ci sarà la vera e propria rivoluzione videoludica, come si auspica anche Phil Spencer:
Il gioco di Reagent Game non è soltanto che l'inizio...
X-Rays
Quante cazzo di cose sai e io imparo grazie a te tanto da quando ho chiuso la partita iva esattamente 3 anni fa non ho trovato più lavoro se non di merda welcome azure esplosione xbox aprite gli occhi grazie F5
RispondiEliminaMi dispiace per il lavoro :(
Eliminanon ti preoccupare tanto sono i nostri politici ha manovrare tutto l'importante e' che ancora ci sono persone come te che dicono sempre la verita' anche se oggi si vive più in un mondo di falsita' ciao amico mio. gli amici sono pochi ricorda tutti conoscenti a presto spero buone ferie se le hai
EliminaBell'articolo x come sempre! Quest'anno non ti fermi nemmeno per le vacanze
RispondiEliminaBell'articolo x come sempre! Quest'anno non ti fermi nemmeno per le vacanze
RispondiEliminaOrmai sono 14 15 mesi che ti seguo mi dispiace pensare che tutto questo finirà ma purtroppo tutto a un inizio e una fine se puoi mi piacerebbe sapere dove conviene comprare i giochi anche se per me Xbox.com penso sia il meglio oppure è' meglio comprare dalla Xbox ? Spero tu mi risponda appena possibile tu vedi quello che gli altri non vedono imparami qualche chicca xboxone ciao F5 riposati ogni tanto
RispondiEliminaSe hai Twitter mandami un messaggio privato, ti spiegherò tutto in PVT
Elimina