#3 Coding Error - EVE Online e il problema Boot.ini
Di come ti cancello il file di inizializzazione del sistema operativo
Benvenuti al terzo appuntamento con Coding Error, la rubrica in cui vi parlo degli errori più famosi dei videogiochi e che hanno portato anche ben più di qualche grattacapo all’utenza. Nel primo appuntamento ho sviscerato il Corrupted Blood di World of Warcraft, nel secondo abbiamo visto di come a Phantasy Star Online 2 non andassero a genio gli Hard Disk e in questo terzo articolo non ci spostiamo poi molto da quello precedente. Vi parlerò infatti sempre di un MMO e, anche in questo caso, di un curioso errore che colpiva uno specifico file del sistema operativo, facendolo morire di botto. Questo è il problema boot.ini di EVE Online.
Articoli precedenti
Come al solito, iniziamo con una breve panoramica del gioco. EVE Online è un MMO sviluppato da CCP Games a tema spaziale e con mondo persistente. Si tratta di un sandbox, di un gioco cioè dove non è presente una vera e propria storia da seguire ma dove ogni giocatore può diventare un po’ quello che vuole, senza avere dei limiti imposti, delle classi ben determinate e cose del genere. E così ci possono essere i giocatori dediti alla pirateria spaziale, quelli che invece fanno i commercianti, quelli che fanno mining e molto altro. Cuore pulsante del gioco sono le Corporazioni, l’equivalente delle Gilde in sostanza ma molto, molto più grandi e complesse. Chi gestisce una Corporazione deve pensare a svariati aspetti come la logistica, svariati aspetti di gestione economica e troppa altra roba che non ho mai approfondito abbastanza.
Vi basti pensare che, per alcuni giocatori, la gestione di una Corporazione e EVE Online stesso rappresentano una sorta di secondo lavoro, che richiede attenzione e grandi doti gestionali. Non per nulla si dice che il migliore amico del giocatore di EVE Online sia Microsoft Excel e il gioco stesso viene definito, scherzosamente, uno “spreadsheet simulator”, un simulatore di fogli di calcolo. Questo perché molte attività richiedono o traggono vantaggio dall’uso di fogli di calcolo personalizzati e strumenti di calcolo. Addirittura, nel 2022, è stata realizzata proprio una partner tra EVE Online ed Excel.
E così, dopo la pubblicazione avvenuta nel 2003, CCP Games cominciò a lavorare duramente e a sfornare diverse espansioni fino ad arrivare a quella incriminata, Trinity, pubblicata il 5 dicembre 2007. Ad oggi, molti utenti la ricordano tempestata di diversi problemi ed exploit, come potete vedere poco sotto.
Gli utenti colpiti erano quelli che eseguivano il gioco su un computer con Windows XP. I sistemi operativi Windows precedenti a Vista avevano questo file di testo, chiamato appunto Boot.ini, che conteneva le opzioni di avvio del computer. Senza scendere troppo in tecnicismi, cancellando il file non si sarebbe più avviato il PC. Le soluzioni non erano poi così complesse o articolate ma è senza dubbio ammirevole vedere un tale livello di permesso dato al gioco, che poteva accedere tranquillamente alle cartelle di sistema.
Il problema era causato dall'aggiornamento grafico introdotto con Trinity. Ogni nave, stazione ed elemento di gioco era stato completamente revisionato e il lavoro venne definito “gargantuesco”. Nelle settimane precedenti all'uscita dell’espansione, il team era impegnato a trovare una soluzione per far sì che tutta l’utenza potesse scaricare velocemente il nuovo contenuto, anche i giocatori che non erano dotati di una connessione Internet veloce. Di conseguenza, se non puoi potenziare la linea di un giocatore, come puoi risolvere o attenuare un problema del genere? Riduci il il più possibile il peso dell’update grafico.

Inizialmente venne pianificato l’utilizzo di una tecnologia di patching di terze parti, che avrebbe dovuto creare il file di aggiornamento del contenuto grafico ma, nonostante andasse bene per creare piccole patch di aggiornamento per file già esistenti, funzionava male nella compressione di nuovi file. Dato che l'aggiornamento doveva sostituire solo due piccoli file di testo contenuti nella cartella d’installazione, di cui uno dei quali era chiamato proprio boot.ini, e poi copiare 1,43 GB di nuovi file, il team decise di passare ad un’altra tecnologia di installazione che ridusse molto il download, portandolo a soli 584 MB. Il colpevole fu lo script per creare il file di installazione dell'aggiornamento. Il team, durante la scrittura del codice dello script, fece un errore supponendo che il file boot.ini a essere cancellato e sostituito sarebbe stato quello della directory di lavoro corrente e non fornì un percorso completo al file. Per chi un minimo ne mastica, ecco dov’era di preciso l’errore nel codice:
Section "EVE-ONLINE"
SetOutPath "$INSTDIR"
Delete "boot.ini" <--- Ecco l'errore. Non è stata indicata la directory.
Delete "manifest.dat"
File "boot.ini"
File "manifest.dat"
File "resDX9*.stuff"
SectionEndNon dando questa indicazione, lo script di installazione andava semplicemente ad eliminare il file boot.ini presente nella root principale dell’Hard Disk. Nel caso in cui EVE Online era installato nello stesso Hard Disk in cui era presente Windows XP si presentava il problema. L’errore, per fortuna, fu scoperto velocemente e gli sviluppatori furono richiamati al lavoro istantaneamente per indagare e risolverlo tramite una veloce correzione allo script di installazione. Successivamente, CCP Games si impegnò a rinominare tutti i file di installazione del gioco che presentavano lo stesso nome di file di Windows per evitare situazioni di conflitto. Inoltre la software house ha aiutato gli utenti colpiti prendendo accordi con tecnici esterni. CCP Games si scusò con i suoi giocatori per questa svista non notata ma che ha comunque fatto del bene dato che ha portato a una totale revisione del loro sistema di controllo degli aggiornamenti.
Terminiamo così questo terzo appuntamento con Coding Error. Nel prossimo articolo rimarremo sempre in campo MMO ma questa volta i poveri Hard Disk dell’utenza saranno al sicuro. I personaggi, in compenso, no.





