Skip to main content

L'evoluzione di Xbox One secondo il leak dell'SDK - articolo

19 mesi di lavoro dietro le quinte, dall'ascesa alla caduta di Kinect, e un nuovo obiettivo nelle prestazioni.

Il recente leak degli strumenti di sviluppo di Xbox One, insieme alla relativa documentazione, ci offre un'affascinante panoramica sulla creazione ed evoluzione della più recente console di Microsoft. Recenti innovazioni, come lo sblocco di un settimo core della CPU per gli sviluppatori, sono venute a galla grazie al leak, ma i documenti contengono molto di più quanto a informazioni di background. In effetti, ci forniscono l'intera linea temporale del sistema, dal momento in cui i kit di sviluppo alpha sono arrivati agli sviluppatori nell'aprile del 2012 ai miglioramenti apportati fino a novembre 2014.

Anche se non possiamo approfondire ogni singola API e ottimizzazione certa e aggiunta in questi 19 mesi, il lavoro di sintesi delle aggiunte principali a Xbox One è stato fortunatamente già fatto. La sezione 'What's New' della documentazione non evidenzia solo le più recenti modifiche apportate al sistema, ma incorpora anche link alla sezione corrispondente da ogni revisione dell'SDK, sottolineando i traguardi fondamentali e i cambiamenti che ci spiegano la nascita del sistema e la sua evoluzione, accennando anche a funzioni future.

Ciò che affascina è anche il cambiamento negli obiettivi durante la cronologia, che si riflette nel marketing e nell'abbandono di Kinect come elemento fondamentale venduto in bundle con la console: gli sforzi ingegneristici sul controllo tramite movimento 'NUI' (Natural User Interface) passano in secondo piano rispetto a ottimizzazioni di GPU e prestazioni, molti dei quali avvenuti a spese di funzioni della periferica.

È anche chiaro che i problemi della GPU erano ben noti internamente a Microsoft, persino prima del lancio. La sorpresa più grande delle note dell'SDK forse è, a parte la rivelazione del settimo core della CPU, l'esistenza di due driver grafici separati per l'hardware Radeon: sappiamo del mono-driver, l'interfaccia ideata per offrire le migliori prestazioni, ma esiste anche l'UMD (user-mode driver) a cui faremo riferimento in questo articolo.

Una fonte ben collocata ci informa che questo, pur essendo un driver specifico di Xbox One, possiede molti controlli e rilevamenti di errori aggiuntivi, inseriti per aiutare nel debugging e far funzionare prima possibile il software sulla console a spese delle prestazioni. Ma stiamo correndo troppo. Cominciamo dal principio.

Hardware alpha: aprile 2012 - febbraio 2013

Quando i primi kit di sviluppo alpha stavano arrivando agli sviluppatori, non esisteva Xbox One come la conosciamo: il progetto di Microsoft era noto solo con il suo nome in codice, Durango (uno stato messicano, se vi interessa). In effetti, all'epoca l'hardware della console non esisteva neanche: agli sviluppatori veniva praticamente fornito un PC dall'aspetto generico approssimativamente equivalente alla visione che Microsoft aveva delle capacità tecniche che la console avrebbe avuto. È questa la macchina che l'hacker SuperDAE ottenne, presumibilmente tramite il portale di sviluppo di Microsoft, mettendolo poi in vendita su eBay. A quel tempo le fondamenta tecniche della macchina divennero evidenti: Durango era basato su core x86 a 64-bit dal basso consumo, e avrebbe utilizzato hardware grafico di classe DirectX 11.

Quindi qual era lo stato della macchina a quel punto? L'APU contenente CPU, GPU, Move Engines ed ESRAM erano stati progettati, ma l'hardware fisico era ancora in sviluppo nei laboratori di Microsoft. Lo sviluppo del software procedette comunque spedito sulla piattaforma alpha. Gran parte dello sforzo era ancora concentrato sulle funzioni multimediali. La connettività con altri dispositivi tramite SmartGlass, le funzioni della Natural User Interface basata su Kinect 2.0 e l'attenzione agli aspetti multimediali sono temi ricorrenti in molti degli aggiornamenti di questo periodo.

Il primo sguardo ai sistemi di sviluppo alpha di Xbox One è dovuto all'hacker SuperDAE, che ha reso pubblici hardware e relativa documentazione in un'enorme serie di leak.

Natural User Interface: Ricordate Input One e l'enfasi su Kinect/TV? Durante la fase alpha dell'hardware, il sensore di movimento era una colonna portante del sistema e gli sviluppatori stavano cominciando a farsi un'idea di cosa potesse essere fatto con l'hardware di seconda generazione. Le prime versioni dell'SDK offrivano alcuni strumenti interessanti tra cui la possibilità di confrontare l'output del Kinect originale con il sensor pre-alpha di Durango. L'hardware era ancora tutt'altro che definitivo, e vennero resi disponibili i flussi dati di infrarosso e profondità a fini di pianificazione.

In note successive vediamo un'enorme serie di cambiamenti e miglioramenti a supporto del nuovo sensore tramite le API NUI 2.0. Tracciamento avanzato dello scheletro, rilevamento dello stato delle mani e dell'espressione, servizi di identificazione e nuovi sistemi di parlato sono stati introdotti nell'agosto 2012 con molte funzioni aggiuntive a seguire nei mesi successivi. A questo punto Kinect 2.0 era molto importante per Xbox One, e agli sviluppatori vennero forniti molti nuovi attrezzi con cui giocare. È interessante notare che, nel 2012, Microsoft avrebbe dovuto essere a conoscenza del rapido declino dell'interesse nei confronti di Kinect per Xbox 360, eppure l'enfasi sul sensore di movimento non cambiò. Forse l'azienda pensava che il vento avrebbe potuto cambiare di nuovo, ma è ugualmente probabile che tutte le decisioni fondamentali sulla struttura dell'hardware fossero già state prese, in particolare quella sul concetto del 'salotto del futuro'.

Grafica: Il PC di sviluppo originale era dotato di una scheda video standard AMD e agli sviluppatori fu fornito un “driver del produttore” DirectX 11 generico. Già nell'aprile 2012, però, Microsoft cominciò a distribuire un driver specifico per Durango con funzioni limitate, noto come “Durango user-mode driver” o UMD. Nuove funzionalità, come encoding e decoding hardware di video, tessellation D3D 11.1, modifiche agli shader e altro vennero aggiunti regolarmente all'UMD. Ad agosto, l'user-mode driver divenne la base; due mesi dopo, il supporto per il driver generico venne rimosso del tutto. Gli aggiornamenti del driver continuarono ad arrivare regolarmente, ma è solo con il rilascio del driver D3D Monolithic (l'interfaccia GPU altamente ottimizzata su cui Microsoft continuò a lavorare fino all'abbandono dell'UMD) che le cose cominciarono a decollare sul serio.

Il kit di sviluppo alpha originale di Durango, costruito praticamente utilizzando componenti PC comuni. Conosciamo il suo aspetto grazie al tentativo di SuperDAE di venderlo su eBay!

Strumenti di sviluppo: Nel maggio 2012 Microsoft reintroduce l'eccellente profilatore PIX, che ha servito a lungo la comunità di sviluppo di Xbox per analizzare e capire le caratteristiche prestazionali del codice. La versione iniziale sembra abbastanza spartana, e le migliorie a PIX arrivano velocemente e in gran numero dopo la sua introduzione. Le aggiunte comprendono un browser delle risorse con visualizzazione di render targets e depth buffer, una timeline visiva delle operazioni della GPU, un'interfaccia utente evoluta e la capacità di analizzare più dettagliatamente dati di run-time degli eventi di CPU e GPU. Oltre a questo c'è il supporto per eventi definiti dall'utente e il rilascio iniziale di un monitor di sistema utilizzato per profilazione in tempo reale, capace di visualizzare indicatori di prestazione trasmessi dal kit di sviluppo in tempo reale. Molti strumenti di sviluppo sono stati aggiunti e migliorati durante questo periodo, compresi dei cambiamenti all'ambiente di programmazione di Visual Studio, template addizionali, modifiche nell'architettura e generazione più efficiente del codice.

Input: Supporto per la companion, almeno di base, è stato ribattezzato SmartGlass ad agosto. Appena prima è stato introdotto il supporto per i trigger del controller, il che suggerisce che il lavoro sulla struttura del nuovo gamepad fosse prossimo al completamento. Le API per l'input sono in costante evoluzione durante questo periodo.

Audio: L'audio non sembra giocare un gran ruolo in questi primi giorni senza l'hardware finale in vista (Xbox One ha nella APU un hardware interno abbastanza potente dedicato all'audio, simile al TrueAudio delle più recenti schede video di AMD). Le funzioni di base sono disponibili dalle prime fasi, ma ad agosto viene aggiunta l'emulazione audio hardware che permette agli sviluppatori di provare il codice ideato per le applicazioni sonore.

Hardware beta: febbraio 2013 - agosto 2013

All'inizio del 2013 ci si avvicina alla presentazione ufficiale della console. A questo punto il design del sistema comincia a concretizzarsi. A febbraio i kit di sviluppo beta sono in circolazione presso gli sviluppatori, e sono basati sulla forma finale della console, anche se il software di supporto era ancora in fase di sviluppo al tempo. I primi kit beta vengono descritti come hardware 'zebra', console bianche con decori neri. Report contemporanei suggeriscono che le finiture nere varino da kit a kit per permettere di identificare la fonte di eventuali leak, una circostanza divertente visto che SuperDAE e VGLeaks avevano già rivelato virtualmente tutto ciò che c'era da sapere sulla struttura tecnologica di Durango.

A marzo 2013 tutto il supporto per l'hardware alpha è scomparso, e l'hardware beta Zebra diventa lo standard su cui sviluppare. Nei mesi seguenti questi kit sono stati rimpiazzati da Xbox One, differente da Zebra non solo nell'aspetto ma anche per la capacità di adattarsi alle più alte velocità finali di clock di CPU e GPU (1.75GHz e 853MHz rispettivamente). Durante questo periodo, lo sviluppo dal lato software è proseguito:

GameDVR: Dopo essere stato in sviluppo per un po', GameDVR si materializza curiosamente nell'ambiente di sviluppo a marzo 2013 in corrispondenza con l'annuncio di PlayStation 4 e delle sue funzionalità simili. La condivisione dell'esperienza di gameplay era un aspetto chiave sia per Sony che per Microsoft.

Grafica: Le novità continuano ad accumularsi per l'user-mode driver, ma a luglio 2013 Microsoft comincia a introdurre una versione preview del driver Monolithic Direct3D (conosciuto pubblicamente come mono-driver), progettato per evolvere le funzioni D3D in maniera specifica per console eliminando elementi non necessari e riducendo i carichi di lavoro superflui. Sì, Microsoft aveva due driver per GPU in circolazione, fino all'abbandono dell'user-mode driver a maggio 2014. Il mono-driver diventa la chiave per migliori prestazioni dei giochi di Xbox One, ma la versione utilizzata per i titoli di lancio non era ottimale in confronto a quella in circolazione oggi. Una sezione della documentazione dell'SDK di questo periodo scherza allegramente con un gioco di parole per l'introduzione del supporto di sincronia verticale, anche in versione adattiva. È presente anche il supporto per i 720p, ma sembra che sia semplicemente un downscaling da 1080p.

L'hardware beta ha assunto una forma molto simile a quella definitiva della console. A questo punto Microsoft poteva svelare la console al mondo in una forma quasi finale. Wired ha pubblicato in esclusiva uno 'smontaggio' preliminare della macchina.

Xbox Live: Molte delle funzioni associate con Xbox One arrivano nel 2013, e vengono introdotte delle API migliorate dei servizi Xbox Live che includono profili, classifiche e visualizzazione di ciò che un utente potrebbe fare in un dato momento.

Natural User Interface: Ulteriori migliorie per Kinect arrivano mentre alla macchina finale si unisce l'hardware della periferica adatto alla produzione. Gli aggiornamenti si concentrano sul fornire più possibilità per Kinect. Vengono aggiunti rilevamento della giuntura del pollice, dello stato di bocca e occhio e varie altre API ideate per supportare l'interazione. La sensazione che si ha della documentazione è che le funzionalità complete di Kinect siano arrivate molto tardi. Ciò avrebbe reso difficili da sviluppare i titoli specifici per la periferica, e questo potrebbe spiegare come mai anche Microsoft stessa abbia faticato a supportare adeguatamente Kinect al lancio.

L'aggiornamento finale prima del lancio sembra avvenire nell'agosto 2013, con il rilascio del terzo service pack (QFE3) per l'OS di Xbox One. Nella documentazione c'è anche una sezione dedicata a preparare i titoli per il lancio della console. Uno degli elementi più interessanti di questa sezione è la proposta di utilizzare risoluzioni dinamiche. Il documento dice chiaramente che in caso di problemi nel raggiungere il frame-rate desiderato, gli sviluppatori dovrebbero considerare la riduzione della risoluzione in base al carico della GPU. Microsoft fornisce il metodo per farlo, permettendo al sistema di regolare la risoluzione fotogramma per fotogramma. È interessante notare come l'unico titolo di cui siamo a conoscenza che utilizzi questa tecnologia sia Wolfenstein: The New Order, ma non è chiaro se esso utilizzi le API di Microsoft o un approccio proprio dell'id Tech 5. Visto che lo stesso effetto è utilizzato nella versione PS4, sospettiamo che si tratti del secondo metodo.

A questo punto Microsoft è pienamente cosciente del fatto che molti titoli (inclusi molti dei suoi) verranno lanciati a risoluzione sub-nativa, e la documentazione fa notare la validità dello scaler di Xbox One, definito migliore di quello di Xbox 360 che a sua volta viene descritto come una buona tecnologia. Potrebbe essere vero, ma al lancio Xbox One ha avuto seri problemi di scaling (non ultimo il filtro artificialmente intenso per aumentare la nitidezza, rimosso all'inizio del 2014), portandoci a chiederci come faccia Microsoft a definire la tecnologia “ottima”.

I costruttori delle console caldeggiano anche l'uso della tecnologia di anti-aliasing EQAA di AMD, aggiunta alcuni mesi prima del lancio, ma non siamo a conoscenza di titoli del day-one che ne abbiano fatto uso. Viene consigliato di utilizzare l'MSAA 4x se un titolo utilizza già la variante 2x a causa del basso ingombro per la GPU visto l'immagazzinamento dei primi due frammenti di ciascun pixel nella ESRAM con gli ultimi due nella memoria principale (a cui non viene fatto accesso di frequente a causa della compressione). È una teoria interessante che forse è stata utilizzata in Forza Horizon 2, l'unico titolo AAA che per quanto ne sappiamo utilizzi l'anti-aliasing multi-sampling 4x su Xbox One.

Un'immagine del debugger di Xbox One (dopo la rimozione delle icone del gioco). Questo è l'aspetto dello schermo ad aprile 2013. Ci sono numerosi strumenti di debug di Kinect insieme a Internet Explorer e Pixie, che fa parte della suite di strumenti di profilazione di Microsoft.

Febbraio 2014 - novembre 2014 e oltre

C'è un grosso buco nella documentazione di Xbox One tra agosto 2013 e febbraio 2014. Non è chiaro se siano state semplicemente omesse o se non esistano affatto. I primi mesi del 2014 sono comunque un periodo cruciale per Microsoft, che tenta di correggere la sua strategia di lancio e colmare meglio che può il divario di GPU con PlayStation 4. Delle note citano un maggior controllo sulla gestione delle risorse della ESRAM, a quanto pare collo di bottiglia per molti titoli di lancio.

Grafica: Nei mesi successivi ci sono molti aggiornamenti. L'encoding/decoding hardware dei video viene aggiunto a marzo insieme al supporto per il calcolo asincrono della GPU. A maggio il supporto per l'user-mode driver viene completamente rimosso in favore del mono-driver, il che speiga (almeno in parte) il netto incremento nelle prestazioni della GPU di Xbox One nei titoli arrivati dal secondo trimestre 2014 in poi. L'attenzione esclusiva posta sul mono-driver sembra pagare, visto che nel 2014 si registrano miglioramenti di prestazioni quasi ogni mese, incluso un notevole incremento nell'efficienza delle draw call a luglio.

Molte migliorie nelle prestazioni della GPU derivano dalle risorse sottratte alle funzioni di Kinect: l'XDK di giugno e il suo impatto sono stati ampiamente documentati in quel periodo. Oltre alle risorse della GPU rese disponibili dall'eliminazione di Kinect, i titoli che sono stati realizzati senza supporto per Kinect Speech e le sue funzioni di rilevamento hanno reso disponibile più potenza di calcolo dalla CPU. In aggiunta, la rimozione dei comandi vocali ha liberato 1GB/s di banda aggiuntivo utile a incrementare le prestazioni della GPU.

Miglioramenti dello scaler: Ad aprile è stata aumentata anche la qualità dello scaler, con nuovi controlli a disposizione degli sviluppatori. Secondo l'aggiornamento è possibile scegliere tra sette tipi prestabiliti di upscaling tra cui bilineare, e Lanczos a 4/6/8/10 passaggi. Questo livello di controllo supplementare aumenta significativamente la qualità dell'immagine nei titoli sub-1080p e potrebbe spiegare il minore impatto del differenziale di risoluzione nei titoli lanciati nella seconda parte del 2014.

Xbox One è stata afflitta da prestazioni della GPU deludenti rispetto a quelle di PlayStation 4, con i problemi del 'Resolutiongate' dei titoli a 720è come Battlefield 4 a mettere in discussione le credenziali next-gen di Xbox One. Nel febbraio 2014, Microsoft si è adoperata per migliorare le cose, fornendo incrementi mensili nelle prestazioni della GPU.Guarda su YouTube

Audio: A maggio 2014 vediamo l'inclusione di musica di supporto in sottofodno quando si usa un'app in snapping, cosa che PS4 ancora non offre. Viene reso disponibile anche un mixer del sonoro per regolare il volume delle app o quando si usa Kinect in chat. A luglio vengono effettuate ulteriori rifiniture all'interazione tra hardware e CPU, con il passaggio della memoria utilizzata dall'ACP (Audio Control Processor) da uncached a cached, per una riduzione del consumo di risorse della CPU durante gestione e aggiornamento dell'ACP. Viene aggiunto anche il supporto per microfoni USB.

Strumenti di sviluppo: PIX continua a riceverere aggiornamenti, e a settembre Microsoft aggiunge nel sistema un visualizzatore di ESRAM per permettere agli sviluppatori di farne un uso migliore. È interesssante notare che nei documenti c'è una discussione su una funzione dedicata di screenshot a disposizione degli sviluppatori, caratteristica che sarebbe sicuramente utile ai giocatori. L'acquisizione continua audio/video disponibile per PIX su Xbox 360 diventa disponibile su Xbox One ad agosto. Su Xbox One il sistema può registrare continuamente lo stream, a differenza di quanto accade su Xbox 360.

Input e NUI: La maggior parte delle modifiche apportate alle funzionalità di Kinect sembrano concentrate sul fix dei bug. Vengono affrontati gli errori di tracciatura e apportate delle rifiniture generali, ma c'è chiaramente meno interesse nel potenziare le prestazioni del sensore. L'input del controller viene aggiornato, fornendo più controllo sull'aggiornamento degli input e su quali core li gestiscono. C'è anche l'inclusione di supporto per la tastiera per “app esclusive in vendita”, il che suggerisce che le app possono ora utilizzare input da tastiera.

Cambiamenti al multiplayer: Una delle novità maggiori presentate in questi documenti riguarda il modo in cui viene gestito il multiplayer. I due approcci, definiti "Multiplayer 2014" e "Multiplayer 2015", sono molto diversi nel modo in cui i giocatori si connettono tra di loro per giocare online. I documenti descrivono l'utilizzo di un “party system” che regola il modo in cui gli utenti di un gruppo di gioco vengono collocati in sessioni MPSD (MultiPlayer Session Directory) e il servizio cloud utilizzato per tracciare le sessioni di gioco .

Anche se titoli chiave come Call of Duty: Advanced Warfare hanno continuato a dimostrare un chiaro vantaggio della GPU di PlayStation 4, altri giochi hanno visto la riduzione del divario tra Xbox One e la sua rivale. Nel caso di Destiny, il codice a 900p della beta è stato portato a 1080p, producendo un'esperienza praticamente identica a quella offerta dalla piattaforma di Sony.Guarda su YouTube

Per la fase “Multiplayer 2015”, Microsoft ha rimosso questa barriera eliminando il bisogno di accedere alle funzioni multiplayer tramite il “party system”. Ora le funzioni vengono invece raggiunte direttamente dalle sessioni MPSD, e ciò sembra semplificare il procedimento grazie al minor numero di comunicazioni che possono inficiare le prestazioni di una particolare sessione. Le API e il design del Multiplayer 2015 sono stati resi disponibili nel settembre 2014 in forma preview, ma non è ancora chiaro quando cominceremo a vedere titoli che li utilizzeranno. Si è parlato di Halo: The Master Chief Collection come possibile titolo che facesse uso del sistema, ma visto che la nuova tecnologia è stata introdotta in prossimità del lancio del gioco (per di più in versione preliminare), la cosa sembra abbastanza improbabile.

Conclusione: l'evoluzione da centro multimediale a vera e propria macchina da gioco

Noi del Digital Foundry proviamo un bisogno ardente di capire il funzionamento dell'hardware da gioco, e il leak dell'SDK offre la più grande miniera di informazioni sullo sviluppo per Xbox One da quando abbiamo intervistato gli architetti della console nell'ottobre del 2013. I dettagli tecnici sono a volte incongruenti e a volte rivelatori ma sempre affascinanti, e forniscono molte informazioni sulla direzione in cui si è mossa Microsoft in questi 19 mesi di concitato sviluppo.

È interessante confrontare la cronologia di migliorie, ottimizzazioni e nuove funzioni, venute quasi tutte a spese di Kinect. Con il settimo core della CPU messo a disposizione degli sviluppatori insieme a risorse aggiuntive della GPU e le continue ottimizzazioni del mono-driver, si può capire come ha fatto Xbox One a restare competitiva nei confronti di PS4 su molti titoli di alto profilo. Molte informazioni, però, restano ignote: Microsoft ha ridotto le risorse di sistema riservate alla CPU, ma per quanto riguarda i 3GB di memoria non disponibile per gli sviluppatori?

Ovviamente è bene sottolineare che questi cambiamenti non avvengono in un vuoto separato dal resto. È difficile immaginare che Sony non abbia potenziato le capacità del suo hardware in maniera simile. Non c'è dubbio che Sony sia più lenta a rilasciare aggiornamenti agli utenti, ma le cose sul versante dello sviluppo restano un mistero. Le informazioni tendono ad arrivare con il contagocce, solitamente tramite le presentazioni degli sviluppatori a GDC/Siggraph (sono serviti otto mesi per confermare il nostro articolo sulla memoria di sistema riservata di PS4), ma forse il leak relativo a Xbox One avrà un equivalente di Sony prima o poi. A prescindere da ciò, i videogiochi dovrebbero essere più validi nel 2015 non solo per gli strumenti di sviluppo più rifiniti, ma anche perché i team affronteranno i loro progetti di seconda generazione per PS4/Xbox One, che siamo impazienti di vedere in azione.

Avatar di John Linneman
John Linneman: An American living in Germany, John has been gaming and collecting games since the late 80s. His keen eye for and obsession with high frame-rates have earned him the nickname "The Human FRAPS" in some circles. He’s also responsible for the creation of DF Retro.
Related topics

Sign in and unlock a world of features

Get access to commenting, newsletters, and more!