Skip to main content

Intervista Tecnica: Need for Speed: Hot Pursuit

DF visita i Criterion per un'intervista tecnica.

Need for Speed: Hot Pursuit rappresenta l'inizio di un importante nuovo corso per Criterion. Non si tratta infatti di una semplice versione ottimizzata di Burnout Paradise, poiché il team di sviluppo, oltre ad aver messo a punto un nuovo engine, ha dato vita a un'esperienza di guida completamente nuova, impreziosita da un comparto grafico molto diverso dai precedenti titoli della compagnia. Ciò che ci aspetta è un Need for Speed estremamente classico che tornerà alle origini del franchise e che si attesterà su ottimi standard per grafica e fisica.

La nostra recente chiacchierata con Richard Parr e Alex Fry non ci ha dato solo la possibilità di discutere delle innovazioni tecnologiche che coinvolgono il progetto, ma anche di scoprire interessanti informazioni sul processo di sviluppo. Se volete saperne di più, non vi resta che continuare a leggere...

Digital FoundryIn passato avete creato un nuovo engine per Burnout Paradise e ora sembra stiate facendo lo stesso con Need for Speed. Non siete mai stati tentati di ottimizzare ciò che avevate già creato, anziché ripartire da zero?
Alex Fry

Abbiamo imparato tantissime cose da Paradise. Una di queste è che quando si crea un gioco dal suo post mortem è possibile trarre moltissimi insegnamenti: ciò che ha funzionato, ciò che è andato male e ciò che poteva essere fatto in maniera migliore. E talvolta, ciò che sarebbe stato possibile migliorare porta a dei grandi cambiamenti.

Quello più grosso che abbiamo apportato riguarda il threading model di questo gioco, ora tutto nuovo. Siamo passati da un dual thread, ovvero quello utilizzato da Paradise, a un single thread e i motivi di questo cambiamento sono molteplici.

Inizialmente volevamo realizzare un gioco a 30Hz che risultasse visivamente straordinario e che fosse caratterizzato da una grande reattività dei comandi. Con un ulteriore render a 30HZ avremmo dovuto fare i conti con dei seri problemi di latenza e così abbiamo fatto una certa scelta. Sarà interessante vedere i risultati della vostra analisi di latenza, crediamo che si riveleranno ottimi.

Digital FoundryGiocando al titolo si dovrà però fare i conti con cose come il ritardo del display. Ad oggi, basandoci sui giochi che abbiamo analizzato, il record è di 100ms per un gioco da 30Hz.
Alex Fry

Crediamo di potere arrivare a 83ms... o al massimo 100ms.

Digital Foundry Fantastico. Secondo i nostri test WipEout a 60Hz raggiunge gli 83ms...
Alex Fry

Diciamo che se dovessimo superare i 100ms ne saremmo molto delusi.

Digital Foundry Contando i frame tra il LED e le azioni su schermo, è possibile notare una piccola area grigia legata al momento in cui, durante la finestra di 16ms, il LED viene attivato e il frame viene registrato...
Alex Fry

Sono abbastanza sicuro che le console non riflettano istantaneamente lo stato del controller. C'è una sorta di processo in background che non rende la cosa istantanea.

Digital Foundry Da quel che sappiamo la latenza stessa del controller wireless dell'Xbox 360 dovrebbe essere di 8ms.
Alex Fry

Abbiamo cercato di limitare il lag al minimo. E questo è uno dei motivi per cui abbiamo optato per il single thread. Abbiamo provato diversi giochi a 30Hz che sembravano essere dual thread ma avevano molto lag, non si è trattato di esperienze particolarmente positive. Gli sviluppatori non devono aver avuto vita facile nel realizzare cose simili e nel cercare di renderli piacevoli da giocare. Molto tempo fa noi stessi provammo a far girare Need for Speed a 30Hz con un modello dual thread e ci sembrò tutt'altro che godibile. C'era troppo lag.

Il trailer E3 di Need for Speed: Hot Pursuit.
Digital Foundry Parlateci di cosa intendete per single thread e dual thread. Visto che le console possono contare su diversi processori, non è forse vero che tutti i titoli sono multi-thread di default?
Alex Fry

Bisogna usare il paralellismo, non i thread. Il modo più classico per velocizzare un gioco è quello di proporre un render thread separato. Così facendo la simulazione, la fisica e l'IA si appoggiano tutte al proprio thread, mentre il rendering gira scollegato ma in parallelo, solitamente indietro di un frame. Alcune volte, se scollegato, può renderizzare e aggiornarsi a un rate arbitrario. In Paradise l'abbiamo scollegato in modo che girasse sempre indietro di un frame, restando comunque in parallelo con quello successivo.

Digital Foundry Siamo certi che sia un problema minore nel caso in cui si opti per i 60Hz.
Alex Fry

Lo è. La latenza diventa un problema meno significativo in quel caso e con essa, visto che non è necessario bufferizzare, un altro beneficio riguarda la memoria.

Quando si bufferizza tra i thread è necessario conservare delle copie di alcuni stati di gioco, oltre a dei dati che gli permettano di funzionare tranquillamente in parallelo. Questo incrementa il carico di lavoro e richiede una grande sincronizzazione. Credo che, considerando sia Paradise che questo gioco, abbiamo conservato circa 20 megabyte di memoria... una cifra notevole, ottenuta semplicemente rimuovendo quel thread e tutto il buffering che comportava. Parte della nostra nuova architettura si basa sul modo in cui i vari moduli di gioco interagiscono tra di loro. Basandoci sulla nostra conoscenza e sulle cose imparate, abbiamo preso le idee di Paradise per poi implementarle in maniera diversa: questo è il nuovo engine.

Richard Parr

C'è stato un grande "copia-incolla" dal codice di Paradise per gli aspetti in cui tale codice si dimostrava all'altezza delle nostre attuali aspettative. Che si tratti o meno di un nuovo engine, possiamo definirlo una versione 2.0 dell'engine di Paradise, non un 1.1.

Digital Foundry Sembra quasi che si tratti di un nuovo engine volto a raggiungere diversi obiettivi rispetto a Paradise.
Alex Fry

Questo è senz'altro un modo di vedere la cosa.

Richard Parr

L'aspetto grafico è sicuramente nuovo.

Alex Fry

Mettiamola così. È una nuova architettura impreziosita dalle migliori parti del codice di Paradise. E un perfetto esempio di questo "modus operandi" è Black. Ai tempi prendemmo gran parte del codice della fisica e del rendering di Burnout 3 per inserirlo in Black. Si trattava di un architettura completamente nuova e di un engine completamente inedito, realizzato sfruttando alcuni elementi di Burnout 3. Ed è esattamente la stessa cosa che sta accadendo oggi: non abbiamo riscritto ogni singola linea del codice, anche perché sarebbe una cosa senza senso.

Ogni compagnia sfrutta il meglio di quanto fatto in passato per i propri progetti. Non abbiamo preso l'intera architettura in blocco o l'intero engine, ma ci siamo limitati a sfruttare parti del vecchio codice che è poi stato necessario riformulare affinché si adattassero alla nuova architettura. È una cosa che abbiamo sempre fatto, prenendo pezzi di vecchi progetti, aggiungendone di nuovi e dando così vita ad architetture ed engine molto diversi da quelli precedenti.