Seconda puntata di Bugsmashers! In questa serie, Mark Abent ci guida alla scoperta (e risoluzione) di alcuni dei bug più strani o particolari mai riscontrati durante lo sviluppo di Star Citizen. E per questa occasione, ha in serbo per noi qualcosa di davvero particolare: un bug che permette ai motori di continuare a funzionare anche in assenza di energia!


Mark continua a scatenare la sua furia sui bug. Nessun glitch è al sicuro quando lo spacca glitch è in giro… Scusate, stavamo provando dei nuovi nomi.

 

Articolo originale disponibile presso le Roberts Space Industries.


Breve Riassunto

Il compito di Mark è di sistemare i bug. Cose tipo motori che non richiedono energia, che rimangono accesi anche in assenza di energia.

Inoltre, in questa puntata Mark descrive tutti gli strumenti che utilizza nel suo lavoro.

E Disco Lando ha modificato parecchio il filmato, ridendosela tantissimo.

Trascrizione

Salve a tutti e benvenuti al secondo Episodio di Bugsmashers. Non è stato ancora cancellato, che è un’ottima notizia, soprattutto grazie a voi ragazzi ed a tutti i feedback ed al supporto che mi avete dato in seguito alla prima puntata. Abbiamo letto tutti i commenti che ci avete mandato, perlustrandoli per capire cosa desideriate vedere, cosa vorreste cambiare, cose del genere, per cui stiamo cercando di provare qualche nuovo approccio, e si spera che non lo show non venga cancellato per via di questi nuovi elementi.
Non si sa mai, ma li proveremo. Partiamo.

Bene.

Salve a tutti, dopo il primo episodio di Bugsmashers abbiamo ricevuto un mare di commenti in cui ci veniva chiesto come fossimo in grado di avviare contemporaneamente diverse sessioni del gioco.
In particolare, avete domandato le specifiche della macchina su cui lavoro, perché per fare una cosa del genere dovrebbe essere, a vostro avviso, qualcosa di pazzesco. Dunque, come potete vedere, ho un paio di sessioni del gioco attive sul mio server dedicato, che gira piuttosto bene per essere una build di sviluppo. Lasciate che vi mostri cosa ho qui.

Dunque, ho un i7 3930, che è fondamentalmente un 6 core con 12 thread, che mi permette di far girare il gioco senza troppi problemi, e la mia scheda video è una Nvidia GTX 780, non male. Penso che anche un paio di voi ragazzi li abbia.

Allora, finché si tratta di Dogfight, sono in grado di avviarlo abbastanza agevolmente. In realtà, è l’Hangar ad uccidere il mio sistema quando ho un paio di sessioni aperte. Per cui questo sistema è una piccola belva. La domanda successiva che credo mi abbiate fatto riguarda la maniera in cui svolgo il mio lavoro e quali strumenti io utilizzi. Eccovi accontentati.

Innanzitutto, tra le varie cose, potrebbe accadare che il gioco si blocchi quando non sono in visual studio, ed in questi casi in genere si ricorre al gestore dei processi standard ma, qualora si voglia avere qualche informazione aggiuntiva su quello che sta succedendo per quanto riguarda le risorse ed i thread, sarà necessario utilizzare un software più avanzato, che vi mostrerà cosa sta succedendo all’interno di ciascuno dei thread della vostra CPU. Qualche interessante informazione extra.

Lo strumento sucessivo che utilizzo riguarda… Io lavoro con un mare di cartelle sparse un po’ ovunque, e qualora aprissi più cartelle, la mia barra dei processi diventerebbe un inferno.

*Salve a tutti, benvenuti alla seconda puntata di Bugsmashers, non hanno ancora cancellato lo show, il che è una buona cosa… Dannazione.*

*Disco Lando – Non sarà cancellato se non è possibile farlo *risata* [NdT: è un pezzetto tagliato e reinserito da Disco Lando per prendere in giro Mark, succederà un paio di volte durante questa puntata]

Dunque, un altro strumento che utilizzo in questa evenienza è il Total Commander, che mi permette non soltanto di tabulare diverse directory, ma persino di avere finestre multiple e di copiare ed incollare liberamente gli oggetti.

Un altro strumento che utilizzo, magari lo avrete visto nella prima puntata, è un emulatore di rete che mi permette di simulare la connessione, la rete DSL e qualsiasi altro tipo di strane impostazioni internet. Posso causare la perdita di pacchetti dati, farli laggare, per cui quando ho un server dedicato attivo su un’altra macchina, posso connettermi ad esso come se stessi utilizzando un modem da quattro soldi o in qualsiasi altro modo per testare la robustezza della nostra rete. E’ uno strumento piuttosto divertente.

Ancora, utilizzo la Telemetria. Questo strumento è piuttosto figo: mi mostra cosa stia accadendo all’interno di una certa finestra temporale. Fondamentalmente, questi sono una serie di thread, per cui questo è il thread principale tra le finestre 57 e 58: posso vedere cosa sta succedendo e quale processo stia richiedendo più tempo per calcolare qualcosa. In questo caso, questo processo è veeeeeeeeeeeeeecchio, ha richiesto un po’ di tempo, circa 1300 millisecondi, ma può darsi che fosse un debug veloce, perché si tratta di un vecchio profilo.

Lo strumento successivo che utilizzo è qualcosa che chiamiamo ‘molto assonnato’. E’ un ottimo strumento per analizzare nel dettaglio il funzionamento interno di un programma e cosa questo stia facendo su ogni thread, per cui se si verificasse un crash nel thread fisico mentre ci troviamo in quello principale, potremmo vedere un po’ di spazzatura in Visual Studio. A questo punto potremmo lanciare ‘molto assonnato’, dare un’occhiata al processo, passare al thread fisico e vedere cosa stia succedendo. E’ piuttosto utile. In genere lo utilizziamo soltanto quando abbiamo a che fare con problemi complicati, perché visual studio fornisce più informazioni sul crash di quante ne potrebbe dare ‘molto assonnato’, ma se visual studio non può darvi alcuna informazione, allora ‘molto assonnato’ vi permetterà di capire cosa sia successo.

Uno strumento molto importante è visual studio. Lo uso per scrivere e compilare il codice. Dal momento che abbiamo un fottiglione di progetti e file di soluzione e milioni di linee di codice, la compilazione richiede tanto, tanto tempo. La realizzazione di una build richiede circa 45 minuti, che è ridicolo, per cui abbiamo questo meraviglioso software chiamato incredibuild che utilizza tutti i computer della stanza per compilare il gioco per me. In questo modo, qualcosa che normalmente richiederebbe 45 minuti, adesso ne impiega solo 10.

Un altro strumento divertente è chiamato recode. Mentre mi trovo sui server di gioco Live, sono in grado di modificare il codice sorgente in questo modo, premere re-code, ed il programma compilerà ed inserirà il nuovo codice e quindi potremo lanciare il gioco; così facendo, possiamo realizzare delle modifiche Live. Non è necessario chiudere il gioco, compilarlo e quindi riavviarlo. Ci risparmia tanto tempo.

Infine, utilizzo diversi strumenti di produttività. Questi mi permettono di avere questa barra di scorrimento, di vedere parte dei messaggi, alcuni avvisi e cose di questo genere. Mi permettono persino di effettuare dei copia-incolla nelle mail e formattarle mantenendo tutti i colori.

Dunque, questi sono alcuni degli strumenti che utilizzo, spero che vi siate goduti il giro turistico, ed ora passiamo al bug.

Ho qui con me un piccolo e semplice bug che mi è stato segnalato da Brandon Evans, il nostro ragazzo dell’HUD. Stava lavorando sul nostro piccolo schermo dell’energia quando… Se rimuovete tutta l’energia mentre siete in volo, fondamentalmente spegnendo il generatore, i propulsori perderanno potenza, ma saranno ancora in grado di funzionare. Il sistema dei collegamenti, però, indicava che i propulsori non avevano alcun problema, per cui continuavano a funzionare regolarmente.

Se entrassi in una piccola e divertente sessione di debug del sistema dei collegamenti, e vi mostrassi la mia nave mentre ondeggia, e quella soltanto, rimuovendo questo, per cui il vostro schermo risulterà piuttosto appannato, o forse no… Ma lo vedrete nella porzione alta dello schermo… Ecco il mio mouse… Sostanzialmente, se guardate queste zone, le vedrete cambiare colore, e ciascuna di queste scritte verdi…

*Do per scontato che farai tanti tagli e modifiche.*

*Disco Lando – Le faccio sempre*

…è un propulsore, mentre quelle arancioni e rosse sottostanti rappresentano le riserve di energia, che si stanno lentamente prosciugando. E sotto questi ultimi c’è un altro gruppo di scritte, che costituiscono lo stato dei collegamenti, i quali indicano che non riscontrano alcun problema. Dunque, una volta che la riserva si sarà azzerata, e quindi la nave fondamentalmente sarà rimasta senza energia, il sistema dei collegamenti mi continuerà a dire che non ci saranno problemi, per cui, come potete vedere, sarò ancora in grado di volare e manovrare la nave. Non così bene come vi immaginiate, ma comunque… Non va bene. Dunque, questa cosa è strana: cosa sta accadendo? Il sistema dei collegamenti sembra funzionare, per cui passiamo a controllare lo script.

Ho aperto lo script ed ho visto questa piccola marachella qui. Queste sono le definizioni dei collegamenti, ed al loro interno ci sono le nostre riserve di energia ed i nostri stati. I nostri stati sono… Essenzialmente, ci dicono se stiamo volando o se siamo nello stato di default, mentre altri stati inviano delle richieste e bla…

Credo che questa volta stiamo davvero riprendendo.

In questo caso, lo stato di default, ovvero qualsiasi stato di default, richiederà sempre zero energia. Per cui, se sto richiedendo zero, ed è quello che ottengo, allora tecnicamente non ci sono problemi, perché sto ricevendo quanto ho richiesto. Cosa che, da un punto di vista logico, ha senso. Ma se avete un collegamento, e volete richedere energia, non potete davvero richiederne zero. Non avrebbe senso.

Per cui sono andato dai designer e gli ho chiesto cosa stessero facendo, ed apparentemente questo problema è dovuto a qualche bug collegato alla maniera in cui è stato generato lo script. Sarà sistemato, ma nel mentre ho impostato entrambi i propulsori in maniera tale che ricevano almeno un po’ di energia. Come potete vedere, sto ricaricando i miei oggetti e sto respawnando nuovamente nel gioco.

Se scegliessimo una di queste scritte verdi… Prendiamo questa, è un propulsore mobile. Funziona correttamente, perché ha una riserva di energia, ma la sua normale capacità di drenare energia non funziona, per cui la sta prendendo dalla riserva. Per cui attualmente non ci sono problemi, perché la riserva contiene ancora energia, ma una volta che questa sarà terminata e tutte le scritte saranno diventate rosse, che vorrà dire che non sarà in grado di ricevere energia nè dal generatore, nè dalla riserva, allora non dovrei essere in grado di fermare la mia rotazione.

Allora, imposto questi ragazzi a -10, in maniera tale che assorbano 10 di energia, e torniamo sulla mia Hornet, azzeriamo il generatore, ed addio energia. Si è azzerata, e guardate i nostri collegamenti, stanno drenando energia, e tutti i componenti sono morti. O quantomeno i propulsori.

Uno dei miei propulsori ha ancora energia, il mio motore principale, ma non sono in grado di virare. Non posso fermare la mia virata. Se togliete energia ai propulsori, continuerete a muovervi nella direzione che avevate in precedenza in quanto non ci sarà nulla a fermarvi. Gente, è fisica newtoniana.

Awww fermati.

Okay, avete visto il piccolo bug di oggi. Il buon vecchio sistema dei collegamenti compie sempre qualche marachella. Questa volta, i designer hanno impostato il sistema dei collegamenti in maniera tale che, se venisse richiesta zero energia, e questo fosse quanto richiesto da un componente, tecnicamente le condizioni sarebbero rispettate, e quindi i propulsori erano in grado di rimanere attivi anche senza energia.

Che marachella.

Dunque la correzione di questo problema è stata semplice, in quanto richiedeva semplicemente di modificare un paio di elementi nel file XML, per cui i designer ripuliranno tutto il file e le cose andranno a posto da se.

Voglio soltanto dirvi che apprezzo tutte le vostre domande, i vostri commenti, le preoccupazioni riguardanti l’ultimo episodio, e non vedo l’ora di vedere cosa direte riguardo a questa puntata.

Se avete delle domande correlate allo sviluppo del gioco, alla programmazione, alla risoluzione dei bug o a qualsiasi altra cosa cui possiate pensare, mandatemele, forse potrò rispondervi nel prossimo episodio. Fino ad allora, ci vediamo nel ‘Verse.

E’ ancora un problema?

*lunga attesa*

Salve a tutti, benvenuti ad un altro episodio di %$$*!

*Disco – Non conosci neppure il nome dello show!*

Traduzione a cura di Darnos.
Trascrizione originale disponibile presso ImperialNews.