Una caratteristica essenziale per i picchiaduro. No, non parliamo della combinazione mezzaluna-pugno, bensì di un sistema di gestione del multiplayer online salito alla ribalta negli ultimi anni: il rollback netcode.
Sicuramente ne avrete sentito parlare, difficilmente invece qualcuno vi avrà spiegato che cos'è. Beh, per fortuna ci siamo qua noi. Seguiteci quindi perché vi stiamo per raccontare in cosa consiste il rollback netcode, perché è diventato così importante e che cosa c'entrano gli EVO nella sua nascita.
Un ritardo importante
Partiamo da un presupposto ineluttabile: quando si gioca online c'è sempre un ritardo nel trasferimento dei dati tra i giocatori. Per questo la pressione dei tasti non verrà mai percepita in tempo reale da tutti i giocatori e l'esperienza non sarà mai la stessa che abbiamo giocando fianco a fianco sullo stesso divano o allo stesso cabinato.
Tradizionalmente per far fronte a questo ritardo si è adottata una soluzione chiamata ">strong>delay-based netcode": si tratta di un sistema che di fatto ritarda anche i comandi dei giocatori, aspettando alcuni millisecondi prima di registrarli. Gli input vengono quindi inviati durante questo intervallo e poi eseguiti allo stesso tempo, su tutti gli schermi, dopo il ritardo dato dal trasferimento dei dati. Questo sistema permette di vedere i risultati delle azioni in contemporanea, ma paga dazio con una scarsa reattività dei comandi, che appaiono decisamente meno fluidi di quanto possiamo vedere nei match in locale. E peggiore è la connessione dei partecipanti, più la sensazione risulta sgradevole.
Da GGPO a Rollback Netcode
Come potete immaginare la questione non è da poco, e gli sviluppatori di giochi multiplayer hanno iniziato a porsi il problema già diversi anni fa. Per esempio il team dietro un vecchio sparatutto in prima persona dal titolo Starsiege TRIBES, pubblicato in Nord America alla fine del 1998, aveva messo in piedi un sistema capace di predire quale input sarebbe stato inviato dai giocatori. Al di là di questo preistorico esempio, è stato però il client GGPO il più riuscito capostipite di quello che oggi chiamiamo netcode "rollback". Siamo nel 2007 e, come anticipato, la nascita di questa "rivoluzione" ha uno stretto legame con il più importante torneo competitivo di giochi picchiaduro, ovvero l'EVO. Ma andiamo con ordine.
Nel 2006 Capcom decise di distribuire Street Fighter II: Hyper Fighting anche su Xbox 360. Una decisione che tutti i fan avrebbero apprezzato, non fosse per un piccolo problema: la modalità online era un inferno per i giocatori hardcore, un inferno fatto di lag e glitch.
Tra i giocatori di questa nuova edizione c'era anche un certo Tony Cannon. Per Tony il multiplayer di questa edizione di Street Fighter era talmente ingiocabile che decise di risolvere il problema alla radice. Realizzò il concept di un sistema che anticipasse il lag prima della mossa, invece che dopo l'effettiva pressione del tasto, usando un'animazione filler per nascondere l'effetto: già nel 2007 aveva pronta una versione funzionante del client chiamato come il famoso motto usato dopo le partite. Nasceva così il "Good Game, Peace Out", presto abbreviato in GGPO.
Riuscì persino a mostrarlo a Capcom, che provò a creare internamente una sua versione di rollback netcode già nel 2008 per l'uscita di Super Street Fighter II Turbo HD Remix. Anche se non fu sfruttato all'interno del gioco sviluppato da Backbone Entertainment, il client di Cannon non venne però abbandonato e da allora è stato utilizzato in molti prodotti non solo di Capcom, ma anche di SNK. Tra questi citiamo Skullgirls, Street Fighter III: 3rd Strike Online Edition e anche il più recente The King of Fighters XV. Tutt'ora è in circolazione e dal 2019 è diventato un software open source disponibile sotto la licenza del prestigioso Massachusetts Institute of Technology.
Resta però una questione ancora in attesa di una spiegazione: che cosa c'entra il rollback netcode con gli EVO? Beh, se siete fan del genere forse ci siete già arrivati. Tony "Ponder" Cannon non è infatti un appassionato di picchiaduro qualsiasi. Insieme a Tom "inkblot" Cannon, Joey "MrWizard" Cuellar e Seth "S-Kill" Killian è stato tra i creatori degli The Evolution Championship Series. Ovvero l'annuale evento esport dedicato ai picchiaduro comunemente noto come EVO. Ed ecco spiegato anche in che modo il rollback netcode è collegato agli EVO.
Il funzionamento del rollback
Terminata la lezione di storia, andiamo a vedere più nello specifico come funziona il netcode di tipo rollback. Abbiamo già detto che, per superare i limiti dei netcode delay-based, il rollback punta ad anticipare il lag prima della mossa, invece che dopo l'effettiva pressione del tasto, usando un'animazione filler per nascondere l'effetto. In questo modo prevede a tutti gli effetti la mossa successiva, così da inviare immediatamente gli input dei giocatori al gioco. E quando questa previsione è corretta si ha l'illusione di una rete a latenza zero.
Dovete immaginare questo sistema non come la previsione di un'indovina: l'intervallo di tempo da predire è nell'ordine di una manciata di millisecondi, quindi fare ipotesi è sostanzialmente più facile di quanto non sembri. Ma facciamo alcuni esempi pratici per rendere tutto più chiaro: se il nostro combattente in un dato frame è fermo sul posto, ci sono elevate possibilità che il frame successivo sia ancora lì; se invece si stava spostando in avanti, è molto probabile che il fotogramma successivo stia continuando a muoversi. Il rollback, insomma, ha elevate possibilità di azzeccare la propria previsione perché cerca di indovinare azioni che avvengono in intervalli di tempo molto ridotti.
Ma cosa succede quando la previsione è sbagliata? In quel caso avviene l'effettivo "rollback": il gioco "torna indietro" all'ultimo stato corretto e riproduce tutti gli input da quel momento fino al fotogramma corrente. Riprendendo l'esempio precedente, ecco cosa succede se il nostro avversario sta avanzando ma a un certo punto decide di saltare, mentre il rollback aveva previsto che in quel frame avrebbe continuato a camminare: non appena la nostra console riceverà l'informazione e capirà che la previsione era sbagliata, il gioco tornerà indietro allo stato precedente corretto, taglierà una parte iniziale dell'animazione del salto andando indietro di pochi millimetri e così recupererà il ritardo. Che in una situazione normale sarà nell'ordine di 10-50 ms e quindi difficilmente percepibile.
Nonostante questo, comunque, il problema delle previsioni sbagliate, o delle situazioni in cui l'input arriva in ritardo, rimangono il più grosso limite del rollback netcode, nonché il motivo per cui le software house sono state così restie ad applicarlo. Sistemare le tempistiche di azione del rollback richiede un'accurata fase di pianificazione e testing che non tutti possono permettersi. Inoltre occorre sviluppare i giochi con già in mente l'utilizzo di questo netcode, perché alcune caratteristiche potrebbero portare a dei glitch e, soprattutto, è importante inserire un sistema di autovalutazione della qualità della rete, cosicché i giocatori possano decidere di affrontare un avversario solo se le connessioni sono stabili.
I vantaggi di un netcode di tipo rollback ben implementato però sono molteplici. Non solo infatti permette al gioco di andare a piena velocità, correggendo solo gli errori di previsione quando si verificano, ma può anche gestire le variabili della connessione di rete, come perdite di pacchetti dati o generale instabilità.
Esempi pratici di giochi che hanno beneficiato del rollback ci sono alcuni dei picchiaduro più popolari sul mercato: Mortal Kombat 11, Guilty Gear Strive, Killer Instinct, ma anche il recente Street Fighter 6 ha puntato con successo su questo tipo di netcode, e lo stesso farà Tekken 8. Nel tempo però il rollback è stato implementato anche su generi diversi dai picchiaduro a incontri. È il caso per esempio di Stormgate, strategico in tempo reale sviluppato in Unreal Engine 5 da Frost Giant Studios, team creato da due veterani di Blizzard.
Insomma, il rollback netcode non è una miracolosa panacea a tutti i mali dei match online, ma può essere una freccia importante all'arco degli sviluppatori.