Skip to main content

I celebri problemi di stuttering dei giochi FromSoftware sono stati risolti, ma solo su console PS4 hackerate

Una correzione di tre righe di codice migliora drasticamente Elden Ring, Bloodborne e molto altro ancora: qual è il problema?

Uno dei misteri tecnici più sconcertanti dell'ultima generazione di console è semplicemente questo: perché tutti i titoli di From Software per PlayStation 4 e Xbox One presentano uno stuttering così evidente? Dal titolo di debutto dello studio su PS4 nel 2014, Bloodborne, fino a Elden Ring di quest'anno, la soluzione di From Software per il frame-rate a 30fps non sembra funzionare bene in nessuno dei suoi giochi.

Noi del Digital Foundry chiamiamo questo fenomeno "frame-pacing incoerente": anche se si ottengono 30 nuovi fotogrammi al secondo, l'erogazione incoerente di ogni nuovo fotogramma dà l'illusione di prestazioni molto inferiori. Ma ecco il problema: esistono patch non ufficiali per tutti i giochi From sulle PlayStation 4 hackerate e, sorprendentemente, si tratta di una semplice e rudimentale correzione del codice. Abbiamo testato queste patch e funzionano bene, producendo un effetto molto più fluido e privo di stuttering. Tutto ciò ci ha portato a chiederci perché From Software non abbia sistemato i propri giochi se è così semplice. Ci sono dei problemi relativi a queste patch?

Abbiamo sentito parlare per la prima volta di questa storia da un noto "archeologo del codice" di From Software. Lance McDonald, creatore della patch a 60fps per Bloodborne che funziona perfettamente tramite retrocompatibilità su PlayStation 5. Stava mettendo in evidenza il lavoro di un hacker chiamato Illusion, il cui blog contiene un gran numero di patch per sbloccare le prestazioni di una vasta gamma di titoli per PlayStation 4, o miglioramenti della qualità della vita come correzioni del frame-pacing per ogni titolo From Software su PS4.

Un video completo di questa storia straordinaria in cui è possibile vedere gli effetti del lavoro di correzione operato da Illusion.Guarda su YouTube

Il funzionamento di queste patch non è un processo adatto ai deboli di cuore: prima di tutto, è necessaria una console PlayStation 4 con firmware 9.0 o inferiore che richiede un exploit eseguito attraverso il browser web della PS4 che installa un payload da una chiavetta USB. Questo permette agli utenti di installare codice non ufficiale in modo simile ai devkit forniti da Sony. Tuttavia, l'installazione dell'exploit è solo l'inizio dei compiti richiesti: oltre a questo, è necessario eseguire il dump e decodificare i giochi che si intende patchare prima di installarli sulla macchina hackerata. Niente di tutto ciò è particolarmente semplice e, ai fini di questo articolo, ulteriori spiegazioni non sono rilevanti. Nel caso dei titoli From Software patchati, si tratta semplicemente di un mezzo per mettere alla prova una teoria: il limite dei 30fps, tipico dello studio, può essere effettivamente risolto?

Secondo Illusion, il problema è piuttosto semplice. Il limite di frame-rate di From fa poco più di quanto suggerisce il nome: garantisce che non vengano presentati più di 30 fotogrammi al secondo. Ciò che non fa è considerare quando ogni nuovo fotogramma deve essere mostrato. In teoria, un gioco a 30 fps dovrebbe visualizzare un nuovo fotogramma ogni due refresh dello schermo (circa ogni 33,3 ms) ma invece i titoli From vedono le nuove immagini visualizzate a intervalli di 16,7 ms, 33,3 ms o 50 ms. Questa è la classica nemesi del Digital Foundry: un frame-pacing incoerente.

Nel video incorporato qui sopra, abbiamo cercato di spiegare e dimostrare il problema ma, se non potete guardarlo, date un'occhiata all'immagine qui sotto che confronta la versione non patchata di Bloodborne con l'alternativa patchata di Illusion. Abbiamo omesso il grafico del frame-rate perché è irrilevante: entrambe le versioni girano a 30fps. La cosa più importante è il frame-time. A sinistra, si può vedere la frequenza di aggiornamento della versione vanilla con una trasmissione di fotogrammi incoerente che, in realtà, dà l'illusione di prestazioni molto inferiori. A destra, con la patch di Illusion, la linea è perfettamente diritta. Ogni singolo fotogramma arriva ogni 33,3ms. Si tratta di una limitazione a 30 fps allo stato dell'arte.

Ecco come gli strumenti grafici del Digital Foundry visualizzano il frame-pacing stutter/inconsistente (a sinistra) e come la versione patchata rraggiunge un solido 33ms per frame (a destra).

Questa è la spiegazione tecnica, ma qual è l'impatto sulla qualità dell'esperienza? Abbiamo giocato alle versioni patchate di ogni singolo gioco di From Software e la differenza è spesso trasformativa. Lo stuttering su Bloodborne, Dark Souls 3 e Sekiro è sparito e gli unici cali delle prestazioni sono dovuti ad autentici bottleneck a livello della GPU nelle scene più impegnative. Solo il test di rete di Elden Ring può essere esaminato su una PlayStation 4 hackerata (il nuovo gioco gira su un firmware superiore al 9.0 sfruttato) ma, anche in questo caso, l'esperienza risulta più consistente, anche se le prestazioni sono generalmente più penalizzate a causa delle maggiori esigenze dell'open world. Anche in questo caso, la versione patchata è comunque un miglioramento rispetto al gioco di partenza. Tutto sommato, in tutti i titoli che abbiamo provato, è difficile vedere la versione patchata come qualcosa di diverso dall'esperienza che avremmo dovuto provare.

In effetti, si tratta di un cambiamento così drastico nella presentazione del gioco da far pensare a una sostanziale rielaborazione del codice di gioco: il miglioramento è davvero pronunciato. Tuttavia, le modifiche apportate da Illusion sono molto semplici: la patch elimina il limite dei 30 fps di From, sostituendolp con una libreria di sistema di Sony chiamata SceVideoOutFlipRate che implementa un frame-pacing coerente laddove l'alternativa di From, semplicemente, non riesce. Invece di fornire un nuovo fotogramma per l'aggiornamento successivo del display, qualunque esso sia, la soluzione di Sony garantisce che ogni singolo fotogramma venga fornito a intervalli di 33,3 ms. La patch è davvero così semplice: cambiare letteralmente un'istruzione nel codice con un'altra?

"Si tratta di una correzione in due righe", ci ha detto Illusion su Discord. "Fondamentalmente, il precedente limite incoerente dei 30fps deve essere prima eliminato e poi al suo posto c'è la chiamata API dell'SDK di sistema... [di solito] il totale delle istruzioni patchate è di sole tre righe".

From ha abbandonato il frame-rate sbloccato sulle console "pro" della scorsa generazione e sulle macchine della generazione attuale ma c'è ancora un problema di coerenza. La modalità Qualità Elden Ring supera un refresh costante di 33,3 ms, mostrando fenomeni di stuttering. Nel frattempo, la modalità Prestazioni non è in grado di sostenere un frame-time di 16,7ms, con cali di 33,3ms che mostrano ancora più incertezze. Per la cronaca, la modalità Qualità funziona a 35 fps, la modalità prestazioni a 55 fps. Questo dato può variare drasticamente, aumentando ulteriormente la sensazione di incoerenza.

Illusion ipotizza, sul suo blog, che From possa aver scelto questa implementazione dei 30fps rispetto alle soluzioni specifiche della piattaforma per facilitare lo sviluppo multipiattaforma ma si scopre che Microsoft ha una propria libreria per ottenere 30fps coerenti, IDXGISwapChain::Present per le console Xbox One e Xbox Series X|S. Non c'è nessun hack o exploit per l'hardware della console Microsoft ma è possibile che siano applicabili patch simili per le versioni Xbox One di Dark Souls 3, Sekiro e Elden Ring.

Naturalmente, From Software stessa ha abbandonato i limiti dei 30fps. Ha iniziato con il supporto per le console potenziate della scorsa generazione, dove lo sviluppatore è passato a un frame-rate sbloccato, un miglioramento rispetto ai 30fps, ma ancora lontano dall'ideale. In Elden Ring su console current-gen, l'idea del frame-rate sbloccato è stata mantenuta, ma con modalità di qualità e prestazioni. La prima non è il massimo, in quanto si presenta come un gioco a 30fps con un ulteriore intoppo. La seconda non è l'ideale, perché ci sono troppi cali rispetto ai 60fps promessi.

Il remake di Demons Souls di Bluepoint Games è in grado di garantire la giusta divisione tra qualità e prestazioni: frame-rate bloccati e frame-time solidi. Entrambe le modalità sono coerenti e prive di stuttering.

È a questo punto che il brillante Remake di Demon's Souls di Bluepoint Games per PlayStation 5 entra nel discorso. Offre una modalità di qualità 4K che gira a 30 fotogrammi al secondo perfettamente coerenti, insieme a un'alternativa a 1440p temporalmente upscalata che gira splendidamente a 60fps. Demon's Souls dimostra che sbloccare semplicemente le prestazioni non è la soluzione migliore: puntare sulla fedeltà a 30fps costanti può dare ottimi risultati ma dedicare tempo e fatica per puntare a raggiungere 60fps quasi bloccati con l'upscaling TAA fa la differenza. È il modo in cui questi giochi dovrebbero essere presentati per ottenere un effetto ottimale.

Tornando al problematico limite dei 30fps di From Software, se avete la sensazione che le patch di Illusion sembrino troppo belle per essere vere, beh, avete ragione. Queste patch, purtroppo, aggiungono un significativo input lag. Prima di provarlo, ci è venuto in mente il rilascio della beta originale del primo Destiny, dove il Digital Foundry ha preso di mira Bungie per il suo frame-pacing incoerente e, successivamente, l'azienda che raccoglie la sfida risolvendo il problema, dichiarando che farlo mantenendo un basso input lag non era facile. Ciò ci fa supporre che la loro soluzione fosse più di una semplice patch per richiamare la libreria di sistema.

Le telecamere ad alta velocità possono essere utilizzate per confrontare l'input lag. Sincronizzando i feed della telecamera alla pressione di un pulsante, vediamo che il Bloodborne non patchato (in alto) è ben avviato nell'animazione di attacco prima che il primo fotogramma dell'animazione entri in funzione nella versione patchata (in basso). Su più campioni, la differenza si attesta su una media di 78 ms a favore del codice originale.

I test sull'input lag hanno dato risultati notevoli. Mentre l'input lag variava molto sul codice retail, in media Bloodborne patchato era più lento a rispondere di 78 ms, scendendo a 50 ms su Elden Ring (anche se il gioco successivo è apparentemente più lento di Dark Souls 3 e Bloodborne). Questo ci pone di fronte a un dilemma: senza un'ottimizzazione simile a quella operata da Bungie, le patch offrono fondamentalmente un gioco molto più bello, ma a spese di un feedback più lento da parte dei controlli. Bluepoint ha risolto il problema con il suo remake di Demon's Souls? Non crediamo sia il caso: la modalità a 30fps di quel gioco si traduce in un imput lag simile a quello delle patch e, sorprendentemente, l'input lag si riduce di 85ms (!) passando alla modalità performance, il modo in cui il gioco dovrebbe essere giocato. Se possedete Demon's Souls Remake, provate la modalità a 30fps: è molto simile all'esperienza della patch From su macchine last-gen.

Cosa abbiamo imparato da questa esperienza? I giochi From della scorsa generazione evidenziano come i 30 fps non siano coerenti con un gioco che in realtà non gira a 30 fps. L'aspetto è pessimo e ha rovinato un'intera generazione di giochi. Da questo punto di vista, la possibilità di giocare a questi titoli con una presentazione fissa è una vera e propria rivoluzione: non eravamo preparati a quanto i giochi diventassero più belli. Tuttavia, questa soluzione a tre righe di codice porta solo fino a un certo punto e l'impatto sull'input lag è molto alto. Crediamo che il remake di Demon's Souls abbia indicato la strada che From dovrebbe seguire: livelli di prestazioni costanti in entrambe le modalità, con l'obiettivo dei 60 fps ma sembra che persino Bluepoint abbia avuto problemi di input lag nella sua modalità Qualità 4K30, altrimenti impeccabile. Nella remota possibilità che lo studio stia lavorando a un remake di Bloodborne, sarebbe auspicabile che questo aspetto venisse affrontato!

Altre lezioni apprese? Una prima incursione nel lavoro con una PS4 hackerata apre una serie di affascinanti mod e patch, molte delle quali provengono da Illusion stesso e sono tipicamente disponibili su Github. DriveClub con frame-rate sbloccato si avvicina in modo stuzzicante ai 60fps su PlayStation 4 Pro grazie alla modalità Boost, mentre è interessante vedere il ridimensionamento della risoluzione lavorare in concerto con lo sblocco del frame-rate su titoli del calibro di Assassin's Creed Unity e Batman Arkham Knight. Quanto si spinge GTA5 oltre il suo limite di 30fps? Il codice patchato lo rivela. Gli svantaggi sono evidenti: il rischio di essere bannati dal PlayStation Store e l'impossibilità di eseguire giochi oltre il firmware 9.0, per citarne solo due. In genere, dovrete anche compilare le vostre patch: non è facile e non è assolutamente consigliato per la vostra console PS4 principale.