Come funziona la retrocompatibilità di Xbox One e Xbox One X? - articolo
Microsoft racconta al Digital Foundry come ha portato i giochi di Xbox 360 su One, inclusi i titoli ottimizzati per Xbox One X.
Fra i tanti momenti indimenticabili a cui abbiamo assistito sui palchi dell'E3, un annuncio in particolare si è rivelato essere uno dei più grandi conseguimenti tecnologici dell'attuale generazione di console. Due anni e mezzo fa, sotto i riflettori del Galen Center di Los Angeles, Phil Spencer ci ha mostrato come l'hardware di Xbox One fosse in in grado di far girare l'originale Mass Effect per Xbox 360. Al termine di un esemplare periodo di prova il programma di retrocompatibilità è stato lanciato a vele spiegate. Al giorno d'oggi su One possiamo giocare centinaia di titoli Xbox 360, e alcuni di questi sono ora disponibili per Xbox One X con supporto per il 4K. Com'è stato possibile ottenere tali risultati? Come funziona davvero la retrocompatibilità di Xbox One?
Negli anni siamo riusciti a raccogliere solo alcuni dettagli sparsi riguardati il processo di conversione. Sappiamo a grandi linee che gli originali file eseguibili programmati attorno all'architettura PowerPC di Xbox 360 vengono ricompilati in un formato intermedio, poi convertito in x86. Si è parlato anche di un certo grado di compatibilità delle due macchine, con il processore di One capace di agevolare il processo. Ma al di là di questo, le nostre conoscenze tecniche sono sempre state piuttosto scarse. Fino ad ora.
”In sostanza, abbiamo una GPU virtuale, ovvero una GPU di Xbox 360 che abbiamo riprogrammato in x86 e sulla quale facciamo girare l'intero sistema operativo della 360”, ci spiega Bill Stillwell, a capo del progetto retrocompatibilità di Microsoft. “Ogni gioco viene adattato per girare su questa console virtuale ma praticamente è come se venisse eseguito da una 360. Per raggiungere l'obiettivo il team parte da qui e procede attraverso diverse fasi.
Il primo passo è quello di individuare gli shader gestiti dalla GPU e quelli che Stillwell chiama “Enlightenment” (letteralmente “illuminazioni”- n.d.t.), un termine che non abbiamo mai incontrato prima d'ora. “Gli Enlightenment sono il nostro punto di partenza per ricodificare al meglio i giochi” ci dice. “Si tratta lo più di un requisito della CPU che non della GPU. Gli Enlightenment ci comunicano quali istruzioni vengono date alle componenti hardware, i punti d'ingresso delle funzioni e così via. In pratica, tutte le informazioni necessarie per dare il via alla conversione.”
Il fatto che alcuni elementi dell'architettura di Xbox 360 siano effettivamente integrati nel processore di One, nello specifico il supporto per i formati delle texture e per l'audio, contribuisce ad alleggerire notevolmente la mole di lavoro. “In un certo senso è ciò che rende possibile questa compatibilità, perchè applichiamo tutti gli shader raccolti, tutti gli effetti di illuminazione e poi eseguiamo più volte il gioco monitorando le prestazioni per determinare se l'emulatore lavora nel modo giusto”.
Non è un compito semplice perché il processore PowerPC di Xbox 360 è lontano anni luce dall'architettura x86 di Xbox One. I calcoli del numero in virgola mobile devono essere adattati da 40 a 32 bit, operazione che può ripercuotersi su diversi aspetti, come ad esempio la precisione delle collisioni. Ma l'obiettivo di Microsoft è uno solo: questa console virtuale, una volta importato il codice di gioco, deve avvicinarsi il più possibile alle prestazioni dell'hardware originale.
"In poche parole cerchiamo di far sì che il gioco non si renda mai conto di non essere in esecuzione su una vera 360, e qualsiasi interazione con l'hardware venga richiesta dal codice di gioco, noi replichiamo tale interazione a livello software", continua Stillwell. “Abbiamo un esercito di oltre 100 tester che attraverso numerose sessioni di gioco registrano migliaia di ore video di gameplay. Analizzando i dati raccolti possiamo intervenire sull'emulatore e perfezionarlo, ottenendo così uno strumento migliore dopo ogni ondata di giochi rilasciati.
Adattare un codice programmato per una CPU PowerPC tri-core che eroga 3,2 GHz su dei core x86 a basso consumo e bassa frequenza, dimostra la notevole ambizione di Microsoft. In teoria, i sei thread eseguiti dall'hardware di Xbox 360 potrebbero essere mappati su determinati core del processore di One ma hanno cominciato a presentarsi problemi non appena il team di conversione ha approcciato giochi più complessi.
"Abbiamo scoperto che non si possono semplicemente assegnare thread ai diversi core. Xbox One ha uno scheduler di thread che, in modo simile a Windows, ripartisce il carico computazionale in caso di necessità, mentre la 360 era un sistema chiuso, era molto costante”, ci spiega Stillwell. “Quando abbiamo usato lo scheduler di One si sono presentati un sacco di problemi e alla fine abbiamo dovuto riscrivere il nostro scheduler di thread… Ogni qual volta facciamo partire il software di emulazione e appare il logo 360, lo scheduler 360 prende il sopravvento su quello One. Non dobbiamo così preoccuparci della compatibilità fra i due o affidare la gestione dei thread direttamente a Xbox One.”
Fondamentalmente, la retrocompatibilità dei titoli 360 funziona sul principio di un emulatore software. L'hardware dà certamente una mano e, sì, non manca il fattore “ingrediente segreto” (Microsoft non ha voluto rivelare come faccia l'emulatore a supportare le unità vettoriali VMX128, per esempio) ma è grazie alla componente software se l'emulatore riesce ora a fare tutto quello che fa una Xbox 360. Ed è un risultato impressionante, considerando soprattutto il fatto che al termine dell'era 360 gli sviluppatori potevano aggirare la API DirectX e accedere in modo più libero e diretto alla GPU, rendendo potenzialmente più difficile la ricodificazione dei giochi. Stillwell conferma che questo non è un problema per l'emulatore, e l'unica cosa che non è supportata è il framework XNA.
””Voglio dire, mai dire mai perché non importa quello che pensiamo noi, è il modo in cui gli sviluppatori scrivono i giochi che conta. Qualcuno programmerà giochi in un modo che nessuno ha mai utilizzato prima”, aggiunge Bill. “Siamo incappati in un paio di titoli del genere ma in generale abbiamo avuto dei giochi che all'inizio pensavamo non avrebbero mai funzionato, e ora funzionano”.
Ci sono poi i giochi che hanno funzionato da subito, ma non molto bene. I nostri primi test sui giochi 360 in versione Xbox One hanno rivelato non pochi problemi, in particolare cali di framerate dai 30 fino ai 20 fps dovuti alla sincronizzazione verticale imposta dall'emulatore. C'è stato poi Halo Reach, un titolo di cruciale importanza per il programma di retrocompatibilità che ha deluso però le aspettative. Questo insuccesso ha spinto Microsoft a rivedere le procedure interne di controllo dei giochi in fase di conversione e portato a un aggiornamento in grado di migliorare le prestazioni di tutti i titoli resi precedentemente retrocompatibili.
"Sì, abbiamo proprio fatto così, e alla fine dei conti ce ne vantiamo anche. Sono state le recensioni di Reach che in un certo senso ci hanno messo sotto i riflettori. Quando abbiamo cominciato e siamo finalmente riusciti ad emulare con successo la 360 su One, eravamo parecchio soddisfatti e così abbiamo cominciato a lanciare fuori giochi su giochi. I nostri test però erano soggettivi”, ci spiega Stillwell.
"Ho menzionato prima il nostro esercito di tester. Il nostro modo di analizzare i dati raccolti però non era ancora messo a punto come si deve. In molti casi erano semplici comparazioni affiancate delle due versioni. E Reach è stato un momento fondamentale per noi perché dal nostro punto di vista l'emulazione era ottima. Quando abbiamo preso Reach in mano per la prima volta è stato un disastro, uno dei giochi più complessi su cui abbiamo lavorato. Abbiamo dei video registrati durante le fasi iniziali e non c'era niente che venisse riprodotto su schermo correttamente. Quando siamo riusciti a renderlo giocabile abbiamo vissuto il momento come una vera conquista per noi e per il nostro emulatore, in grado finalmente di eseguire il gioco come si doveva. Quando però abbiamo visto le analisi del gioco, abbiamo capito subito che c'era ancora lavoro da fare”.
Gioco dopo gioco il team di Microsoft è stato in grado di perfezionare sempre di più il software di emulazione. Sappiamo che titoli come Halo Reach e Gears of War 3 ora girano molto meglio di quanto facessero in precedenza ma per essere precisi fino ad oggi ogni gioco retrocompatibile disponibile per One è stato aggiornato non una, ma ben due volte.
"Ora alcuni giochi girano già a massime prestazioni quando vengono resi disponibili e non vedete i cambiamenti, ma altri giochi hanno ricevuto aggiornamenti per quanto riguarda il frame-pacing o l'input lag, migliorie che forse i giocatori meno attenti non notano. E abbiamo fatto questo due volte. Tutto ciò dopo il lancio di Halo Reach, quando abbiamo realizzato di non aver ancora raggiunto gli standard qualitativi che ci eravamo imposti. Abbiamo investito un'ingente somma di denaro per far sì che il nostro team avesse gli strumenti necessari per misurare con accuratezza le prestazioni dei giochi in lavorazione".
E gli strumenti a disposizione di Microsoft non sono poi tanto diversi da quelli che usiamo qui a Digital Foundry. In sostanza, essere in grado di collegare i dati riguardanti le prestazioni con quello che sta effettivamente avvenendo nel gioco, può essere illuminate.
"Abbiamo non so quanti anni di video, dai quali - proprio come fate voi, giusto? - possiamo vedere il frame-pacing, possiamo tenere sotto controllo il frame rate e vedere come cambia nel tempo. Prima usavamo un semplice contatore per i fotogrammi ma non eravamo sempre capaci di capire quanto le prestazioni dipendessero dal gioco in sé e quanto dalla nostra emulazione, e quali fossero le differenze fra le due piattaforme”, dice Stillwell.
Il nuovo approccio metodico adottato da Microsoft non si è limitato al solo perfezionamento dell'emulatore per i titoli 360. Gli stessi strumenti si sono infatti rivelati estremamente utili per testare i giochi di Xbox One fatti girare sulla nuova Xbox One X. Bill Stillwell, utilizzando un gergo tecnico, parla qui di titoli ERA, acronimo di Exclusive Rights Applications, categoria di software nella quale rientrano tutti i giochi (mentre altre applicazioni come Store, Spotify ecc., vengono identificate come SRA, ossia Shared Rights Applications):
"Abbiamo investito un anno circa di tempo ed energie per migliorare strumenti e procedure di controllo. Quando abbiamo cominciato a lavorare alla compatibilità dei titoli ERA con Scorpio - e in questo frangente devo congratularmi col team - abbiamo applicato le stesse procedure e gli stessi controlli su quei giochi, in modo da poter controllare l'effettiva compatibilità ed evitare ogni problema con gli ERA. Il team ha testato tutti i giochi Xbox One usciti in precedenza su un prototipo di Scorpio per poter garantire la totale compatibilità, e grazie all'esperienza accumulata possiamo ora regolare il software di emulazione con la massima precisione. "
La maggior parte dei giochi per 360 può vantare oggi prestazioni migliori su Xbox One rispetto all'hardware di origine, un obiettivo che Microsoft si è posta fin dagli albori del progetto: “La parità di prestazioni non era abbastanza. Noi volevamo davvero che questi giochi per 360 girassero meglio su One. Sapevamo di avere spazio di manovra e l'intenzione è sempre stata quella di usarlo a nostri vantaggio” sottolinea il Program Manager di Xbox Kevin Gammill.
Il percorso intrapreso ci porta inevitabilmente a trattare di Xbox One X, che presenta una gamma di miglioramenti grafici e prestazionali (ne abbiamo parlato approfonditamente in passato) oltre che per i giochi One anche per i giochi 360: frame rate più stabile, tempi di caricamento ridotti, filtro anisotropico a 16x e supporto al FreeSync. Inoltre, sette titoli per Xbox 360 hanno ricevuto uno speciale aggiornamento per Xbox One X. I risultati sono straordinari e utilizzano quello che viene chiamato il metodo Heutchy, una tecnologia sviluppata da Eric Heutchy, Software Development Engineer di Microsoft.
"Quando il gioco esegue il rendering delle immagini in una memoria di buffer intermediaria, la GPU della nostra 360 virtuale ne riconosce le dimensioni ed è in grado di scalare verso l'alto gli elementi grafici d'origine, proponendo quindi una copia in alta risoluzione degli asset immagazzinati nella memoria di Xbox One" spiega Bill Stillwell. “Il gioco non ne è al corrente ma dato che noi siamo l'emulatore, quando una superficie viene usata come texture su schermo noi possiamo facilmente scambiarla con la versione ad alta risoluzione. E questi sono tutti elementi presenti nel gioco. Ma utilizzando quella cache intermediaria della RAM possiamo avere accesso a questi elementi più velocemente. In questo caso siamo più artigiani che operai. Dobbiamo passare in rassegna ogni gioco e capire come e dove apportare i cambiamenti. Utilizzando elementi renderizzati a qualità maggiore e incrementando di nove volte la risoluzione (tre per ogni asse) dobbiamo essere in grado di manipolare quali texture vengono applicate a quali geometrie, in modo da ottenere prestazioni uguali o migliori nonostante le texture ad alta risoluzione.
Il lavoro del team responsabile alla retrocompatibilità è stato guidato da alcuni principi che sono rimasti inviolati per ogni singolo gioco reso disponibile. Microsoft non ha mai cambiato una sola stringa di codice, anche quando il risultato suggerirebbe l'opposto. I problemi di frame-pacing di Halo 3, per esempio, scompaiono se giocato su Xbox One. Ciò è dovuto alla maggior potenza della GPU, mentre l'hardware di Xbox 360 riusciva a malapena a reggere il codice originale. Ogni miglioramento viene sempre e solo applicato a livello di emulatore, anche se per i sette giochi ottimizzati per Xbox One X sono stati apportati cambiamenti ulteriori al software di emulazione, pensati specificatamente per tirare fuori il meglio da ogni titolo. I risultati possono davvero meravigliare. Fallout 3 e Halo 3 presentano un incremento incredibile nel livello di dettaglio, dovuto non solo al numero di pixel presenti su schermo ma anche, a quanto pare, ad elementi grafici di qualità superiore. Le immagini messe a confronto parlano da sole.
"Ha tutto a che fare col modo in cui lavora il filtraggio delle texture, chiamato mip-mapping. Le texture sono filtrate precedentemente per creare versioni sempre più piccole della stessa immagine. L'insieme di queste immagini viene chiamato mip-chain. Questo lavoro viene fatto per evitare sfarfallii e aliasing sulle texture, è in effetti una delle prime forme di anti-aliasing introdotte nei videogiochi ed è oggi data per scontata” spiega Stillwell. “Col diminuire del conteggio dei pixel, si arriva alla fine ad un punto nel quale un pixel è al 100 per cento opaco o al 100 per cento trasparente. Livelli più alti di mip-chain hanno maggiore opacità, e in questo caso il livello aumenta dell'1,5 circa. Questo significa che elementi prima completamente trasparenti ora sono parzialmente opachi e quindi visibili".
Ma c'è di più. Uno dei più palesi difetti grafici dei primi Assassin's Creed era la presenza ingombrante di ombre a bassa risoluzione. In questo senso, i miglioramenti presenti nella versione ottimizzata per Xbox One X lasciano a bocca aperta. Stessa cosa avviene in Mirror's Edge: mentre le ombre prerenderizzate non sono state toccate, quelle dinamiche possiedono ora una definizione mai vista nel titolo originale.
"In Assassin's Creed, nello specifico, abbiamo la possibilità di migliorare la resa visiva di ogni superficie usata durante la fase di rendering. Nei casi in cui le ombre dinamiche appaiono più dettagliate, l'incremento del numero di pixel del buffer delle ombre è lo stesso che viene applicato all'immagine complessiva riprodotta su schermo, ovvero nove volte l'originale” ci rivela Stillwell. “L'aumento di risoluzione significa che ci sono molti più dettagli nelle ombre stesse. Non utilizziamo questa tecnica per le ombre in ogni gioco perché non vogliamo impattare le prestazioni ma siamo riusciti a farlo in Assassin's Creed senza compromettere la stabilità. E abbiamo ottenuto lo stesso risultato anche in Mirror's Edge."
Halo 3 e Mirror's Edge supportano anche l'HDR, merito della collaborazione fra il team responsabile della retrocompatibilità e l'Advance Technology Group (ATG). L'elevata gamma dinamica della resa visiva ci accompagna ormai da un paio di generazioni di console, ma nell'era di Xbox 360 il risultato finale era sempre quello di un tone-mapping indirizzato verso un il basso, per lo più da 10 a 8-bit. Martin Fuller dell'ATG ci spiega:
”Possiamo prendere il segnale SDR, e se abbiamo i 10-bit possiamo prendere i dati che sarebbero stati tagliati fuori e dire 'Ok, mappiamo segnale più chiaro del bianco e lo mandiamo al televisore'. È molto potente, è molto efficace. Il tone-mapping invertito in sostanza disfa parte della curva di tone-mapping applicata al titolo, così, invece di ottenere semplicemente una fluida transizione al bianco carta all'apice superiore della curva, noi raddrizziamo il segnale e applichiamo una nuova curva che porta il segnale nella gamma dell'HDR.
In teoria tutti i giochi per 360 con una pipeline a 10-bit potrebbero essere rimappati per l'HDR, me in pratica non è una cosa così semplice. Non tutti i giochi sono come Halo 3 o Mirror's Edge, i 10-bit potrebbero non persistere per l'intera pipeline di rendering. Come potete notare dalla immagini comparative presenti su questa pagina, l'aspetto di un gioco sottoposto a questo processo può cambiare significativamente. Mentre Halo 3 rimane fedele alla sua veste originale, Mirror's Edge cambia in modo considerevole se giocato in SDR, come ci illustra Bill Stillwell:
"Nel caso di Halo siamo andati da 343 e abbiamo mostrato loro una versione preliminare del gioco e chiesto 'Allora, cosa ne pensate?' e loro han detto 'Sì, è proprio come avremmo voluto realizzarlo all'epoca, ma non abbiamo potuto'. Ma altri sviluppatori hanno dato un'occhiata ai titoli ottimizzati per Xbox One X e hanno detto 'No, non è così che lo abbiamo immaginato. Non usate questa tecnica'. Ogni TV ovviamente modificherà l'immagine in un certo modo ma generalmente gli sviluppatori vogliono che l'immagine possieda lo stesso spettro di colori impostato nell'originale. [Mirror's Edge] è stato un caso interessante perché i colori sono così vivi e luminosi. Non eravamo per niente sicuri su cosa avrebbero preferito gli sviluppatori."
Un paio di settimane fa ci siamo presi l'impegno di giocare tutti e sette i giochi protagonisti di questo processo di ottimizzazione per confrontare le versioni per Xbox One X con quelle Xbox One e Xbox 360. Si è rivelato essere un esercizio affascinante, e possiamo confermare che il sistema di retrocompatibilità della console sembra finalmente in grado di garantire prestazioni migliorate con ogni titolo Xbox 360. Rispetto alla nostra analisi comparativa di Gears of War 3 l'emulatore sviluppato da Microsoft ha subito una drastica evoluzione. Nonostante la risoluzione moltiplicata per nove, le prestazioni dei giochi 360 rimangono invariate, se non migliori (nel caso di Oblivion), sulla nuova macchina. Bill Stillwell ci fa sapere che sono in arrivo nuovi giochi ottimizzati per Xbox One, insieme ad una nuova interessante funzione:
"Dato che questa lista di titoli è selezionata e testiamo a fondo ogni singolo gioco, un'altra cosa che abbiamo scoperto è che alcuni giochi mantengono le stesse prestazioni viste su Xbox One S nonostante le migliorie grafiche. Altri giochi, se non vengono ottimizzati per spingere al massimo la risoluzione, presentano su One X prestazioni che superano quelle viste su One S. Abbiamo deciso quindi che con la prossima ondata di giochi che rilasceremo, e sarà disponibile anche per i titoli distribuiti precedentemente, introdurremo un'opzione per disattivare i miglioramenti grafici, così da mantenere la risoluzione originaria e sfruttare l'hardware della console per ottenere il massimo a livello di prestazioni.
In un mondo in cui le console Xbox e Playstation sono costruite sostanzialmente con gli stessi mattoncini tecnologici e possono vantare una ludoteca assai simile, la dedizione di Microsoft nel portare avanti questo progetto di retrocompatibilità rappresenta un chiaro elemento distintivo nei confronti della concorrenza. Anche i titoli della prima Xbox, in dirittura di arrivo su One, verranno restaurati attraverso l'applicazione del metodo Heutchy, con una risoluzione incrementata di quattro volte su One e di ben 16 volte su One X. Allo stesso tempo i giochi di oggi vengono sviluppati con un occhio proiettato al futuro, grazie ad un'architettura che favorirà eventuali potenziamenti grafici e prestazionali sulle console del domani (un argomento, questo, che intendiamo approfondire presto). Da questi sforzi possiamo dedurre chiaramente quali siano le intenzioni del team Xbox: garantire ai giochi una vita più duratura, che sia in grado di sopravvivere all'inesorabile ricambio generazionale.
"Lo so che suono come un addetto alle pubbliche relazioni ma la cosa bella è che dai piani alti, da Phil [Spancer] in giù, l'azienda crede assolutamente che i videogiochi siano esattamente come altra forma d'intrattenimento o arte. Solo perché sono più vecchi non significa che non siano più belli, giusto? Gli Star Wars originali contro i nuovi i nuovi Star Wars, sono tutti ottimi film”, dice Stillwell.
"È stato un lavoro lungo e faticoso, passare da 360 a Xbox One, e fare poi un salto ulteriore per approdare a Xbox One X. Abbiamo impiegato anni per arrivare a questo punto. L'altro giorno ho giocato a Fusion Frenzy con mio figlio e lui non ci aveva mai giocato prima. Ha 10 anni, il gioco è più vecchio di lui. Si tratta di uno dei titoli di lancio della nostra prima Xbox, e non posso che sentirmi orgoglioso di far parte di un'organizzazione che crede che le cose dovrebbero andare diversamente, che queste siano eredità che dobbiamo mantenere vive."