Sotto la Scocca – Input Lag

Nulla viaggia a velocità infinita

L’input lag è un termine che ogni tanto salta fuori nelle discussioni, specialmente in contesti di gioco competitivo. Ma cos’è veramente questa bestia? Cosa sta ad indicare e quanto è importante?

Spesso diamo erroneamente per assunto due cose: che la velocità di trasferimento ed elaborazioni di dati siano infinite. In realtà non è così. Le informazioni non possono superare la velocità della luce ed elaborare dati richiede del tempo, dipendente dalla struttura dell’elaboratore. Perché facciamo questi assunti? Perché nella vita di tutti i giorni, questi lag sono sufficientemente piccoli da essere insignificanti. Facciamo un esempio numerico. Quando guardiamo i nostri piedi, non stiamo vedendo i nostri piedi ora, ma come erano 0,000000005 secondi fa, il tempo che impiega la luce ad arrivare dal piedi ai miei occhi situati a 1,5 metri di altezza, cifra che ho scelto per far venire un bel numero nella divisione.

Ora, come potete vedere, 5 nanosecondi ai nostri occhi e cervello sono una quisquilia. Pensate invece che il tempo di ciclo del processore di Switch, un Arm a 1Ghz, è 1 nanosecondo. Quindi nel tempo che la luce impiega per raggiungere i vostri occhi dai piedi, questo processore ha già fatto 5 cicli di lavoro. Questi tempi sono minuscoli se presi a se, ma provate a sommare tanti piccoli ritardi ed ecco che il risultato finale può essere consistente. Se avete problemi con i vari sottomultipli dei secondi, una ripassata su wikipedia non fa mai male.

Un insieme di effetti

Differenza del perso dei vari componenti, di una configurazione PC ordinaria, rispetto ad una con hardware più spinto.

Prima di procedere oltre, occorre un attimo fare chiarezza sulla definizione di input lag. Da un punto di vista elettronico, è la differenza temporale che intercorre dal momento nel quale viene inviato un segnale di comando a quando questo viene processato. L’output lag invece è il ritardo temporale tra l’uscita del segnale ed il suo effetto fisico. Nel gaming invece si tende a definire con input lag tutto il processo. Quanto tempo intercorre dall’invio di un comando, pensiamo ad un click del mouse o alla pressione di un tasto, alla visione degli effetti sullo schermo. Per il resto dell’articolo useremo quindi questa definizione, perché quella comune, anche se tecnicamente impropria.

I macro componenti che intercorrono nell’accumulo dell’input lag sono: il tempo di commutazione e di comunicazione del sistema di input. Il tempo di elaborazione della macchina del comando. Il tempo di elaborazione del frame di gioco. Eventuali sistemi di sincronizzazione output grafico-display. Ed infine il tempo di commutazione del display stesso.

Osservate con attenzione il ritardo tra il movimento della persona e quello del personaggio in game.

Più andiamo avanti e più rallentiamo

Partiamo dall’input. Qui abbiamo il tempo di ritardo più basso dell’intera catena. La commutazione dell’input, ovvero il tempo che la periferica impiega a cambiare il suo stato in base ai nostri comandi è in genere molto veloce. Pensate che un mouse intercetta il movimento in circa 33 microsecondi. Il ritardo maggiore in questo frangente è dato dal protocollo di comunicazione utilizzato. Ci possono volere tra gli 1 ai 4-5 ms, in base ai vari sistemi usati. Non è vero in termini assoluti che un sistema a cavo è sempre superiore ad uno wireless, come dimostrano test su controller Dualshock 4, dove vedono il controller avere minor lag in Bluetooth invece che quando è collegato via cavo.

A questo punto inizia la fase di grande incognita. Il momento di intercettazione del comando rispetto allo stato del disegno dell’immagine. Come ho spiegato in diversi articoli, un gioco a 30fps mostra immagini ogni 33.3ms, mentre uno a 60fpsogni 16.6ms. Questo tempo è impiegato dal processore e scheda grafica per disegnare l’immagine. Se l’input viene recepito mentre il frame è già stato calcolato, l’input dovrà spettare il prossimo frame per essere messo su schermo. A questo punto capite perché un gioco a 60fps è più reattivo di uno a 30. Ci sono meno attese. Immaginate i giocatori PC che spesso decantano le glorie dei 144fps, dove un frame viene sputato fuori ogni 6.9ms e capirete perché è un valore che certa gente persegue.

Un test effettuato dall’utente reddit u/Halfway_Dead, dove il Dualshock 4 via bluetooth si comporta straordinariamente

Tutta una questione di tempismo

Ovviamente in mezzo ci sono anche tutti i calcoli non di natura grafica che deve fare il software, per questo l’input lag varia da gioco a gioco ed anche da console a console. Da svariati test si può notare come l’Xbox One sia più veloce della PS4 a reagire agli stimoli. In generale le console vecchie sono molto più immediati perché ci sono meno pezzi che si devono “muovere” per recepire e processare l’input. D’altro canto, l’emulazione richiede risorse e per questo i giochi emulati reagiscono più lentamente degli originali in molti casi. A questo punto l’immagine deve essere confezionata ed inviata al monitor. Se c’è una sincronizzazione tra il refresh rate del monitor e l’invio di immagini, bisogna aggiungere 1 frame di ritardo aggiuntivo alla sua visualizzazione, quindi ancora, 33.3ms, o 16.6 o 6.9, a seconda del refresh rate del monitor.

Una volta inviato il frame, c’è il ritardo del monitor, che impiega un tempo per far cambiare il colore ai suoi pixel. Il tempo di risposta spesso indicato per fini di marketing, è il tempo di cambio di un pixel da grigio a grigio e non è rappresentativo del vero input lag del monitor quando deve gestire un’immagine completa. Le TV digitali sono lente, con decine di ms di tempo usati per la transizione. Per questo molte hanno modalità gaming, che riducono l’input lag lasciandosi per strada ottimizzazioni dell’immagine.  A questo punto ci troviamo con una finestra temporale abbastanza ampia e variabile. Chi gioca su PC su hardware spinto, può ridurre questa finestra ad appena una trentina di ms. Giochi console variano molto, diciamo tra i 60 ed i 120 ms, ma il valore medio varia in base alla tipologia dei giochi scelti.

Analisi eseguita da @Fizzi36 su Smash Melee, che mostra come i vecchi CRT siano spanne sopra ai moderni LCD in termini di input lag.

Ma se ho i riflessi di uno Slopoke?

Tutti questi numero come si confrontano con la realtà? Secondo svariati studi, il tempo che intercorre tra un’immagine che colpisce la nostra retina e la reazione del nostro corpo, oscilla tra i 150 ed i 300ms, variando da persona a persona. Può sembrare un tempo enorme, soprattutto in confronto con i numeri mostrati in precedenza. Ma noi umani abbiamo un’arma segreta. Siamo in grado di imparare e predire. Possiamo anticipare nella nostra mente eventi futuri, come l’azione che un personaggio di un gioco compirà o capire dove sarà il mio mirino prima che inizi a spostarlo. Quando l’input lag di un gioco diventa troppo elevato, la nostra capacità di predire e reagire inizia a funzionare male e l’esperienza risultante è negativa. Sembra che il valore intorno al quale questo inizi ad avvenire è circa a metà del nostro tempo di reazione.

Ma poi uno se ne accorge? A questo punto forse conviene andare un po’ sul personale. Perché come ho detto poco sopra, ognuno di noi ha la sua finestra temporale, quindi all’interno dei valori oggettivi può notare o meno la cosa. Io in questo periodo ho giocato un po’ a Smash Ultimate con amici in locale. E l’ho sempre trovato un po’… sbagliato. Lo sentivo poco reattivo. Un paio di volte mi capitò di usare i Joycon con un imput lag visibile ad occhio nudo, qualcosa come mezzo secondo di tempo di ritardo. Ma bastava scollegarli e ricollegarli e le cose si ristabilivano. Ma anche con il controller Pro e con quello Gamecube Cablato, non era giusto. Allora ho visto un po’ online.

È sempre colpa della lag

Ed effettivamente, Smash Ultimate, è lo Smash con più input lag di tutti. Parliamo di un risultato medio di 98ms, contro i 77 di Wii U ed i 58 di Melee. Tra la versione Wii U e Ultimate, ci sono 21ms di differenza, più di un frame. Usando i joycon, si arriva a quasi due frame di differenza. Ed indagando più a fondo, sembra proprio che Switch sia tra le peggiori console in termini di input lag. Splatoon 2 su Switch è praticamente il doppio più lento a rispondere del primo episodio su Wii U. Stesso con Mario Kart 8.

In un gioco come Smash dove il numero di frame nei quali è possibile effettuare una parata perfetta è pari a 5, ovvero 83ms, avere 98ms di lag si fa sentire nelle competizioni più spinte. Ora, non è che con questo Smash Ultimate e Switch fanno schifo, i problemi sono ben altri, come l’assenza di Homerun Contest.  In ogni caso, spero di aver fatto chiarezza su cosa sia l’input lag e da cosa sia composto. Tutto questo non tiene conto minimanente del lag dell’online, che si aggiunge all’input lag. Alcuni giochi introducono dei frame di lag ulteriori per processare gli input proprio per compensare la lentezza della rete.