Il monitor si ricordava
Mauro ha aperto il gioco per la prima volta e ha trovato l’interfaccia che tremava. Non il tremolio che bisogna guardare due volte per esserne sicuri: quello che dopo un minuto costringe a voltare la testa.
Ha fatto la cosa che fa un tester serio. Ha registrato lo schermo dal computer, per farci vedere di cosa stava parlando.
Nella registrazione non c’era niente. Immagine ferma, testo nitido, nessuna traccia di quello che aveva davanti agli occhi.
Poi ha cercato da solo e ha trovato la causa. Nel pannello della sua scheda NVIDIA la sincronizzazione verticale era impostata su «Veloce», e non per il nostro gioco: per qualunque programma girasse su quella macchina. L’ha rimessa a posto, e il difetto è sparito.
Qui la storia poteva finire. Un’impostazione infelice su un computer solo, sistemata da chi ce l’aveva. Si ringrazia e si passa oltre.
La risposta che ha impedito di archiviare
Gli abbiamo mandato sette domande, perché prima di dire «è il driver» conviene sapere di cosa si parla. La prima era la più ovvia: succedeva anche fuori dal gioco?
No. Non sul desktop, non in altre applicazioni, da nessuna altra parte.
Quella risposta rovescia il ragionamento. Se fosse stato il driver e basta, avrebbe tremato tutto quanto. Tremava solo il nostro. L’impostazione da sola non produce niente: ci vuole qualcosa dalla nostra parte che la faccia scattare.
E ce n’era una seconda che restringeva il campo. Il difetto stava nel menu e nello schermo di gioco, mai nell’intro. L’intro è un video, il menu è un’interfaccia disegnata: due modi diversi di arrivare sul vetro.
Riprodurlo, prima di curarlo
Su una macchina con la stessa scheda abbiamo messo la sincronizzazione verticale su «Veloce», in globale come ce l’aveva lui, e abbiamo aperto il gioco.
Tremava.
Averlo in mano cambia tutto: si smette di ragionare per ipotesi e si comincia a misurare. E la prima cosa da capire era perché la registrazione di Mauro fosse pulita, perché quella stranezza dice già dove abita il guasto. Una cattura di schermo registra il fotogramma che il gioco consegna, e quello per definizione è a posto. Il difetto vive più avanti, sul vetro.
Così l’abbiamo ripreso in un altro modo: telefono in mano, puntato sul monitor acceso. Lì si vedeva, ed era la conferma che il guasto sta dove il filmato dal computer non arriva.
Riprendere uno schermo con un telefono, però, produce sempre un battimento fra l’otturatore e la frequenza dello schermo. «Si vede tremare nel video» non prova niente da solo. La prova sta nel confronto dentro lo stesso filmato: la telecamera è una costante, quindi se un tratto oscilla e un altro no, la differenza viene dallo schermo.
Abbiamo misurato la luminosità media di ogni singolo fotogramma. Sulla copertina del gioco l’oscillazione fra un fotogramma e il successivo era di 17 livelli su 255. Venti secondi dopo, sul menu, era di due decimi. Un fattore cento, stessa stanza, stessa ripresa.
Cosa c’era davvero sul vetro
Estratti sei fotogrammi consecutivi del tratto peggiore, il difetto ha smesso di essere un tremolio ed è diventato un’altra cosa.
Il monitor alternava due schermate intere. La copertina del gioco e la pagina di avvertenze per i tester, quella che si attraversa all’avvio e che a quel punto era stata chiusa da minuti. Avanti e indietro, cinque fotogrammi di periodo, regolare come un metronomo.
Quelle due pagine il gioco non può disegnarle insieme. Sono rami alternativi della stessa condizione: o l’una o l’altra, mai tutte e due. Non esiste alcun fotogramma prodotto da noi che le contenga entrambe.
Per esserne certi abbiamo chiesto al gioco di fotografare quello che stava disegnando in quel preciso istante, mentre l’occhio vedeva la pagina sbagliata. Ne è uscita la copertina, intera e corretta.
Il gioco disegnava bene. Era il monitor a mostrare altro.
La parte che si muoveva era l’unica sana
A quel punto avevamo un’idea abbastanza precisa, e sbagliata.
Le schermate che tremavano erano quelle con qualcosa di animato. Quelle ferme non tremavano. Quattro casi su quattro. La conclusione veniva da sé: le animazioni innescano il difetto, si mette un interruttore per spegnerle e chi ha il problema sta meglio.
Poi Simone ha notato una cosa guardando lo schermo che tremava. C’era un rettangolo che stava fermo: quello attorno alla scritta «premi un tasto». Cioè esattamente l’unico elemento animato della schermata.
È il contrario di quello che pensavamo, e spiega tutto. Quando un elemento è animato, il motore grafico gli assegna una corsia sua e la ridisegna a ogni fotogramma. Quella corsia arriva sempre fresca. Il resto della pagina non cambia mai, quindi non viene ridisegnato mai, e le copie che il monitor pesca restano piene di quello che c’era prima.
Le animazioni non sporcavano lo schermo. Erano l’unica zona che restava pulita.
La cura
Se il problema è che una superficie ferma non viene mai riconsegnata, la si fa riconsegnare. Adesso il gioco tiene sopra tutto uno strato invisibile che cambia di quattro millesimi a ogni fotogramma. Non si vede, non toglie niente, e costringe l’immagine intera a essere ridisegnata a ogni aggiornamento dello schermo.
Con la sincronizzazione verticale ancora su «Veloce», copertina, menu e schermo di gioco sono tornati fermi. Nessuna animazione spenta, nessuna scelta chiesta a chi gioca.
Vale la pena dire perché non abbiamo messo l’interruttore. Tre quarti delle animazioni del gioco non decorano: dicono qualcosa. Il pallino che segnala una nota nuova sul diario, la barra del segnale, il punto in cui ti trovi sulla mappa. Spegnerle avrebbe tolto informazione a chi ne ha già poca, e in cambio avrebbe curato un difetto di cui non erano la causa.
L’esperimento che riesce troppo bene
C’è un passaggio che merita di essere raccontato perché per venti minuti ci ha fatto credere di aver capito male.
Tolto lo strato, il tremolio non è tornato.
Sembrava la smentita di tutto. Era invece la conferma: lo strato aveva riempito tutte le copie con la stessa immagine, quindi l’alternanza continuava, ma fra copie identiche. Invisibile. La prova è arrivata da sola al passaggio successivo, avviando una partita: il primo fotogramma della sequenza d’apertura non compariva più, perché il contenuto era cambiato e le copie vecchie erano tornate a galla.
Da qui una regola che vale oltre questo caso. Un rimedio del genere deve essere sempre acceso. Se aspettasse di accorgersi del problema, arriverebbe sempre in ritardo di una schermata.
Quello che resta
L’interfaccia è a posto. La sequenza d’apertura no: i filmati viaggiano su una corsia separata che questo strato non tocca, e con quell’impostazione attiva la prima clip continua a non presentarsi. È un difetto imparentato con l’altro, non lo stesso, e avrà bisogno di una cura sua.
Mauro poteva tenersi la sua impostazione sistemata e non dire altro. Ha invece risposto a sette domande, ha proposto lui stesso di provare a riprodurre il difetto, e ha avuto ragione. Quella configurazione ce l’ha chiunque giochi a sparatutto competitivi e abbia toccato il pannello della scheda video una volta nella vita. Se è capitato a lui, ricapiterà.
Ora, almeno questo tipo di problema non dovrebbe più presentarsi.