Aliens Colonial Marines: come un typo passa inosservato e rompe l’IA

Su ResetEra, discutendo di un recente sconto sulla versione PC di Aliens Colonial Marines (2013) di Gearbox e Sega, si sono accorti di un interessante intervento sulla piattaforma di modding ModDB: un modder ha scoperto nel 2017 di poter migliorare la pessima Intelligenza Artificiale del gioco correggendo un typo, un errore di ortografia, in un file di configurazione del gioco.

Nel file PecanEngine.ini, in Documenti\My Games\Alien Colonial Marines\PecanGame\Config\ c’è un errore di ortografia nella linea ClassRemapping=PecanGame.PecanSeqAct_AttachXenoToTether -> PecanGame.PecanSeqAct_AttachPawnToTeather che andrebbe sostituita con ClassRemapping=PecanGame.PecanSeqAct_AttachXenoToTether -> PecanGame.PecanSeqAct_AttachPawnToTether. Potete farlo voi stessi aprendo il file con un editor di testo.

L’errore di ortografia (Teather al posto di Tether) causerebbe un problema nell’IA dei nemici, che perderebbero sostanzialmente la capacità di sfruttare l’ambiente intorno a loro, non capirebbero quale sia la zona di combattimento e dove siano le possibili uscite, agendo quindi in modo scomposto e senza la capacità di aggirare il giocatore e gli altri avversari.

Parliamo di un errore noto sin da ottobre 2017 e semplicemente poco conosciuto sinora, e non è la prima volta che scopriamo qualcosa di simile perché, se vi ricordate, un errore di ortografia in Civilization 6 (yeild al posto di yield) trasformò le civiltà avversarie in fanatici religiosi cambiando per sbaglio le loro priorità nello sviluppo.

Non mi è chiaro quanto correggere questo errore influisca davvero sull’Intelligenza Artificiale. Anche guardando i confronti che circolano online mi sembra evidente che ci siano degli effetti, ma il cambiamento non è così netto. Correggere questo errore non renderà buona l’Intelligenza Artificiale di Aliens Colonial Marines e non sistemerà il gioco, renderà migliori i nemici ma continuerete a vedere tante delle situazioni che avete visto in passato, con le orde di Alien che si precipitano liete di farsi uccidere a fucilate.

Come è potuto accadere?

Molti si sono però stupiti che un simili errore possa accadere e che non venga scoperto durante i test prima del lancio del gioco o durante il supporto dopo il lancio del gioco, ma siccome creare videogiochi è un po’ più complicato di come spesso viene raccontato e pensato ho deciso di chiedere aiuto a Giuseppe Navarria, senior programmer a Splash Damage, dopo aver visto un suo thread su Twitter dedicato proprio a spiegare come possano succedere simili cose durante lo sviluppo di un videogioco [Disclosure: conosco personalmente Giuseppe Navarria, ho editato la conversazione e aggiunto i grassetti].

Come può accadere un simile errore?

“Intanto quello che molti non hanno capito è che il problema è in un file di configurazione di Unreal 3” mi spiega Navarria. “Praticamente capita spesso che magari vuoi rinominare una classe, e Unreal ha un sistema che si chiama class redirect che dice semplicemente [al gioco] che quando trovi un certo nome lo cambi con quest’altro.

La classe era stata cambiata da Xeno ad un più generico Pawn, soltanto che oltre a cambiare quello hanno anche messo quel typo. Probabilmente qualcuno aveva fatto il typo nel nome della classe, poi l’ha corretto, ma non l’ha cambiato sul file di redirect. Comunque alla fine sono cose che capitano giornalmente in un team di sviluppo e posso citarti centinaia di errori del genere

Il problema è che il gioco funzionava ugualmente e evidentemente o non dava errori, oppure magari registrava l’errore su un file pieno zeppo di altra roba e nessuno l’ha notato. Di conseguenza il problema è in realtà in Unreal, che non ti avvisa in modo decente se una cosa simile sta succedendo.

È anche un errore figlio di una mentalità dove il gioco non deve crashare per nessun motivo, qualsiasi cosa vada storta il gioco deve comunque cercare di continuare a funzionare, visto che un bug è meglio di un crash. Il gioco riusciva comunque a funzionare anche con quella roba mancante, e evidentemente non dava errori. In questo caso un crash sarebbe stato meglio, perché almeno se ne sarebbero accorti.”

Chiedo a Navarria se accade spesso di non avere modi per sapere o controllare se tutto stia davvero funzionando come dovuto in grandi videogiochi. “Sempre, è un problema comune di qualsiasi software grosso con migliaia e migliaia di righe di codice scritte da tante persone in magari tanti anni, non solo nei giochi.

Ma sono sicuro che quasi tutti i giochi hanno bug, ovviamente non gravi come questo ma che sono roba veramente stupida nel codice che nessuno si aspetta possa accadere. Spesso cambi un sistema e magari c’è codice scritto 4 anni prima che si aspetta che una cosa funzioni in un certo modo e tutto continua a funzionare ma si introducono strani casi limite o problemi che si verificano in condizioni particolari.”

Come è possibile che nessuno si sia accorto del problema?

Ma come è possibile che nessuno si sia accorto del problemi durante la fase di test (QA, Quality assurance)? “Riguardo il QA ci sono alcune ipotesi: non sappiamo se avevano un QA interno, se facevano fare il QA ad una società esterna o se c’era solo il QA di Sega (perciò QA del publisher) Nei casi in cui è una società esterna o il publisher, il QA non lavora a stretto contatto con gli sviluppatori, perciò magari non capiscono quando una AI è rotta e qui non si sta parlando di bug che rompono completamente il gioco, si parla di comportamenti stupidi dei nemici, cose che possono sembrare anche un po’ soggettive.

È poi possibilissimo che il QA si sia accorto del problema, ma non potendo sapere che è un intero pezzo di AI che è stato disattivato avrà registrato bug minori tipo i nemici ogni tanto si bloccano in questo punto o il nemico non mi attacca tanto come prima.

Nel primo caso un bug del genere semplicemente finisce nella lista di roba da fare e in base a come viene classificato per priorità può finire ad essere il bug numero 560 da sistemare prima della release, se ci si arriva. Nel secondo esempio che ho fatto invece magari il bug viene passato a un coder o a un designer, che magari prova il gioco in una piccola mappa di test, non si accorge di nessun problema ovvio e lo chiude come risolto.

Non sappiamo alla fine se il bug è stato notato o meno, secondo me è molto facile che siano stati notate varie cose strane ma di impatto minore se prese singolarmente e di conseguenza magari nessuno è risalito alla causa principale. Magari erano vicini all’uscita, magari era un periodo dove cambiavano spesso cose nel gioco e altri cambiamenti hanno mimetizzato il problema.

Poi c’è da aggiungere al tutto il fatto che Sega ha tagliato ogni legame con Gearbox subito dopo la release. Di conseguenza questi hanno probabilmente rilasciato il gioco e non hanno avuto neanche il tempo di fare un passo finale di polishing e bugfixing. Ci sono tanti fattori che probabilmente hanno contribuito, è una di quelle situazioni che sembra paradossale ma si crea solo quando si combinano insieme tante cose che vanno male per un motivo o un altro.”

Lo sviluppo di Aliens Colonial Marines

Questo in effetti è uno dei problemi che può aver avuto Aliens Colonial Marines, un gioco che comunque ha avuto diversi inghippi sin dal suo sviluppo, lungo sei anni.

Secondo quello che so, durante lo sviluppo Aliens Colonial Marines fu momentaneamente cancellato da Sega perché venne scoperto che Gearbox stava intanto sviluppando Borderlands (2009) e Duke Nukem Forever (2011, in sviluppo presso Gearbox almeno dal 2010) trascurando il suo lavoro, per cui veniva intanto regolarmente pagata, e affidando intorno al 2010 lo sviluppo di Aliens Colonial Marines a un altro studio, TimeGate.

Nel 2012, dopo aver lanciato Borderlands 2, Gearbox riprese in mano da TimeGate il lavoro trovandolo in una pessima condizione: TimeGate avrebbe rifatto praticamente da zero la campagna single-player buttando via tutto quello che Gearbox aveva creato prima di appaltare il lavoro e il risultato finale non piaceva allo studio, che a sua volta buttò via gran parte di quello che TimeGate aveva creato per ricominciare nuovamente da capo mentre Sega si lamentava dei ritardi e minacciava persino azioni legali. Secondo Gearbox lo studio dovette pagare di tasca la fine dello sviluppo di Aliens Colonial Marines.

Nel 2013, dopo il lancio di Aliens Colonial Marines, Gearbox e Sega si trovarono coinvolti in una causa per aver mentito nel materiale pubblicitario, e soprattutto su una demo che doveva mostrare il gameplay del gioco. Gearbox accusò Sega di essere la responsabile della promozione del gioco e Sega accusò Gearbox e il suo presidente Randy Pitchford di aver mentito ai videogiocatori e scelse di pagare 1,25 milioni di dollari. Qua avvenne la rottura definitiva tra le due compagnie.

Come è possibile che non sia stato corretto dopo il lancio?

In tutta questa confusione è già un miracolo che Alien Colonial Marines abbia ricevuto delle patch dopo il lancio. Ma magari, chiedo a Navarria, chi ci ha rimesso mano dopo l’uscita neanche aveva esattamente idea di dove andare a cercare? “Esatto, sempre se qualcuno ci ha mai rimesso mano. Alla fine il modder stesso che ha trovato il problema stava moddando roba che toccava quei componenti e ha notato la stranezza per caso, se no non se ne sarebbe probabilmente accorto neanche lui.

Diciamo che una volta che un errore del genere è dentro al gioco più tempo passa più è facile che nessuno ci faccia più caso, vuoi perché la gente inizia a pensare che sia sempre stato così, vuoi perché chi ha lavorato su quella cosa passa a fare altro… se non c’è un sistema automatico di errore che ti avvisa è facile che una cosa simile succeda”.

Riassumendo

Quindi, riassumendo: quella linea del file di configurazione serviva a rinominare una classe che conteneva la parola Xeno in una classe che conteneva la parola Pawn, e facendolo gli sviluppatori (di Gearbox o di TimeGate) han sbagliato a scrivere una parola e non c’era un sistema che dicesse loro che avevan rinominato una classe in una classe vuota/mancante. I problemi sorti durante e dopo o sviluppo han fatto il resto, rendendo difficile capire l’origine dei problemi dell’Intelligenza Artificiale, problemi che questa correzione neanche risolve totalmente.

You might also like More from author

Leave A Reply

Your email address will not be published.