
Oggi Mark ci mostra come risolvere alcuni bug segnalati dagli utenti che causano il crash del gioco.
So let’s get started! *bugsmasher*
Come al solito Mark estende a video Visual Studio e ci mostra il codice incriminato. Lui si trova in un nuovo ufficio che somiglia un po’ a una prigione.
Il primo bug causa un crash del gioco ogni volta che si tenta di sparare con un cannone su cui non è posta la canna. Sfortunatamente, abbiamo alcune armi che non ne dispongono e questo fa sì che il gioco crashi. Questo problema è stato risolto da Jesse negli uffici inglesi; correggerlo non è stato particolarmente difficile: è bastato modificare alcuni file xml per verificare la presenza della canna sul cannone, eliminando così il crash dei nostri server dedicati.
Il secondo bug che Mark vuole risolvere è causato dalla geometria dei carrelli d’atterraggio, che in alcuni casi sono rotti o del tutto assenti, e l’effetto non è proprio carino. Mark ci spiega che i carrelli non sono vere e proprie entità: sono delle figure geometriche controllate da una sola entità master. Quindi abbiamo molte geometrie e poche entità. Se la nave viene incidentata, basta nascondere le figure geometriche che rappresentano i carrelli, ma i pezzi che vogliamo nascondere sono comunque legati alle animazioni del veicolo e, qualora venissero danneggiati, dovrebbero apparire come detriti attorno alla nave. Tuttavia, il gioco crasha perché sono ancora collegati alle animazioni e il sistema prova ad accedervi, inutilmente. Per risolvere questo problema, Mark si affida a una porzione di codice che gli ha spedito Steven, sempre dagli uffici in UK. Questo permette di ripulire ogni animazione collegata al pezzo danneggiato; una volta fatto, è possibile staccarlo senza causare il crash. Yey!
L’ultimo bug è un po’ più complicato ed è stato risolto da Paul Rendell. La situazione è questa: abbiamo il nostro client che spedisce informazioni sulla posizione del nostro veicolo al server e il server spedisce informazioni al client, tutto sotto forma di istantanee. Non c’è bisogno di inviare troppe istantanee, perché ciò causerebbe lag eccessiva. Ma se, per esempio, abbiamo una Constellation o una Retaliator e una Hornet che decide di schiantarsi sull’altra nave, allora la Hornet entrerà nella griglia locale della Constellation, causandone l’esplosione o la rottura. Quando ciò accade, il server riceve comunque informazioni riguardanti la posizione della Hornet, ma la fisica pensa si tratti di informazioni locali. In pratica, il client invia delle coordinate 2000x2000x2000 ad un sistema che ne prevede solo, per dire, 2000×2000, mandandolo in overflow. Paul Rendell ha sistemato questo problema inserendo nelle istantanee anche l’informazione su quale griglia (locale o globale) si trovi il veicolo.
Secondo Mark, questo è stato un bel bug da risolvere e le cose vanno sempre meglio. Anche negli studi di Francoforte si lavora sodo per sistemare altri problemi e bug che vengono costantemente segnalati dagli utenti.
Infine, Mark vuole ringraziare proprio queste persone che spendono del tempo per segnalare i problemi, e ringrazia anche i vari studi che vi lavorano incessantemente o, come dice lui, “fix after fix after fix”.
Arrivederci al prossimo episodio di Bugsmasher!