Nuova puntata dell’Around the Verse e punto della situazione sul rilascio della 3.0 in Evocati.


   

BURNDOWN

·        La scorsa settimana si è chiusa con un totale di 7 bug ancora da sistemare per il rilascio in Evocati della 3.0, di cui 3 fondamentali, 2 critici, 1 importante ed 1 moderato.

·        Nel corso della settimana si sono concentrati sulla risoluzione dei problemi rimanenti per la 3.0, alcuni dei quali riguardavano la UI, il sistema dei Contenitori Oggetti, il sistema Cargo e qualche errore di comunicazione tra i vari dipartimenti, il cui lavoro non è progredito in maniera sincronizzata.

·        Stanno ancora puntando a rilasciare una build Evocati mirata a testare il gameplay dello spostamento tra i vari punti di interesse di Stanton (le lune, le stazioni spaziali, Levsky, ecc), ma vogliono che almeno questa esperienza di gioco sia il più stabile possibile.

·        Tra gli ultimi bug riscontrati ce ne era uno che causava un netto rallentamento nei movimenti dei personaggi ed era dovuto ad un problema di comunicazione tra client e server.

o   La spiegazione tecnica è che i movimenti dei personaggi vengono campionati ad intervalli fissi, e questi campionamenti vengono utilizzati per verificare lo stato di comunicazione tra client e server, sincronizzare i client e via dicendo.

o   Nel far questo di base non tengono conto della latenza dei client, perché si tratta di un’informazione asimmetrica, ovvero il tempo necessario al client per comunicare con il server non è necessariamente uguale al tempo richiesto al server per mandare un pacchetto al client.

o   Per questo motivo, l’informazione riguardante la latenza dei client non viene acquisita direttamente, ma viene ricostruita tramite regressione lineare con il metodo dei minimi quadrati partendo dalle informazioni campionate ad ogni intervallo.

o   Il bug in questione era dovuto al fatto che ogni tanto il server si ‘perdeva’ uno di questi punti di campionamento, per cui la latenza stimata tramite regressione lineare risultava essere enorme ed il server cercava di compensare, determinando il rallentamento di cui sopra.

o   Per sistemare questo problema, faranno in modo che i punti di campionamento vengano acquisiti sempre in coppia, compensando così per la perdita di qualche informazione.

·        Il bug della demo del GamesCom era legato ai token che il server rilascia ai personaggi quando questi prendono il controllo di una postazione di una nave: hanno visto che, in caso di disconnessioni causate da crash, a volte il server non ripulisce questi token, per cui gli altri giocatori non sono in grado di prendere il controllo delle funzionalità della postazione in cui si trovava il personaggio che è crashato.

·        Un altro problema che hanno riscontrato di recente è il fatto che, a volte, dopo un viaggio quantistico le navi si ritrovano in punti estremamente lontani dalla destinazione prescelta, oppure finiscono su un sistema di coordinate che non è più quello del sistema solare, cosa che innesca tutta una serie di bug in cascata.

·        Il 27 Settembre avevano soltanto due problemi da risolvere, uno dei quali riguardava la Persistenza, mentre l’altro era collegato ad un crash dei server che si verificava quando una nave despawnava dal gioco. Per la fine della giornata, il numero dei bug totali era sceso a zero.

·        Tuttavia, il 28 Settembre hanno scoperto un nuovo problema legato alla cache della Persistenza: il sistema di compilazione delle build non era in grado di comunicare ed aggiornare i dati interni del gioco, cosa che causava svariati crash, oltre che una serie di problemi minori, come oggetti che non comparivano nei negozi.

o   Purtroppo questo problema, assieme ad altri che sono stati scoperti analizzando il bug in questione, ha rimandato il rilascio della 3.0 in Evocati, in quanto la frequenza dei crash dei server/client era troppo elevata per permettere un’esperienza di gioco stabile.

·        Il totale dei problemi ancora da risolvere prima del rilascio in Evocati della 3.0 è sceso a cinque, sebbene in settimana si fosse azzerato.

o   Tuttavia, nel corso dei prossimi giorni continueranno a tenere delle riunioni giornaliere per decidere se le nuove build candidate al rilascio saranno sufficientemente stabili da poter essere inviate ai giocatori.

 

DIETRO LE QUINTE: OGGETTI UTILIZZABILI

·        Lo sviluppo del Sistema degli Oggetti Utilizzabili è iniziato dopo il GamesCom del 2016 come misura per migliorare ed ottimizzare il comportamento dei singoli oggetti con cui sarà possibile interagire in gioco (nonché il processo di creazione di questi elementi).

o   Durante questi lavori, si sono accorti che avevano anche bisogno di un sistema intermedio che permettesse ai personaggi di interagire con gli oggetti utilizzabili, cosa che ha portato alla nascita del Sistema Oggetti 2.0.

·        Grazie al nuovo Sistema degli Oggetti Utilizzabili sono adesso in grado di programmare un maggior numero di logiche di comportamento degli oggetti, funzionalità che in precedenza non erano disponibili o sviluppabili con i sistemi nativi del CryEngine.

o   Un esempio di una logica che non sarebbe stato possibile implementare senza questo sistema è il meccanismo di riparazione dei componenti delle navi e degli oggetti in generale, in quanto necessitava di un’architettura di richieste totalmente nuova e differente da quella già esistente.

o   Discorso simile vale anche per il meccanismo di trasporto delle scatole in gioco.

·        Il primo insieme di oggetti utilizzabili su cui hanno lavorato è stato quello della sala mensa, con tutti i tavoli, i vassoi, i piatti e gli altri oggetti che potevano essere presi e trasporti in giro, i quali hanno richiesto di sviluppare sia la logica di interazione, che le animazioni ad essa correlate ed il flusso delle azioni.

o   Lo sviluppo di questo sistema è stato più complicato di quanto inizialmente previsto, ma nel tempo lo hanno migliorato ed ampliato con nuovi componenti, realizzando un’esperienza sempre più realistica e completa.

o   Per creare qualcosa che sembrasse il più naturale possibile, hanno dovuto programmare il posizionamento degli oggetti sul tavolo, le varie animazioni di ingresso ed uscita dalle sedie/panche (ed i punti di accesso correlati) e via dicendo.

o   In precedenza si erano occupati di cose molto più semplici, come il laptop da usare per hackerare il database criminale di Kareah, per cui sono rimasti un poco spiazzati dalla complessità di qualcosa apparentemente di poco conto come la sala mensa.

o   Tuttavia, potrebbero comunque continuare ad arricchire, ad esempio, le possibilità di interazione con il laptop per conferire ai giocatori l’abilità di distruggere il portatile stesso e renderlo inutilizzabile ad altri, per cui nulla è completamente definito e sarà sempre passabile di ulteriori modifiche.

·        Un esempio della complessità di programmazione dei comportamenti degli oggetti è data dalle animazioni: ciascuna di esse necessita di un punto di inizio ed uno di fine riproduzione (oltre che eventuali punti intermedi), i quali vanno definiti manualmente e con attenzione per ottenere un risultato qualitativamente elevato.

o   Questo lavoro andrà ripetuto per tutti gli oggetti utilizzabili che dovranno essere implementati nel gioco, che sono migliaia, in quanto altrimenti l’universo di Star Citizen potrebbe risultare troppo scarno o vuoto.

o   In alcuni casi, diverse varianti degli stessi oggetti potrebbero presentare delle animazioni o dei comportamenti leggermente differenti per conferire una maggiore varietà all’esperienza di gioco.

o   È per questo motivo che è molto importante ottimizzare tutto il processo di sviluppo degli oggetti utilizzabili, perché anche se devono preparare tutte queste risorse, la loro creazione non può richiedere troppo tempo. Gli sviluppatori devono avere a disposizione tutti gli strumenti necessari per velocizzare il loro lavoro.

·        Lo sviluppo degli oggetti utilizzabili è stato lungo e non facile, perché spesso hanno dovuto sbagliare qualcosa, o rompere intere build, per capire quale fosse l’approccio migliore da perseguire per creare una logica di comportamento degli oggetti che fosse adeguata alle loro necessità. Di ogni iterazione hanno conservato soltanto le componenti migliori, che quindi hanno utilizzato come base su cui costruire altre funzioni ed elementi, arricchendo l’intero sistema.

o   Un esempio di tutto questo è stato il meccanismo di allineamento dei personaggi/delle animazioni con gli oggetti con cui questi dovevano interagire, che è stato modificato e rivisto tantissime volte.

o   Un altro elemento delle animazioni su cui hanno dovuto lavorare parecchio per ottenere delle interazioni che risultassero il più naturali possibili sono le transizioni, ovvero punti di alterazione di un’animazione che determinano un passaggio graduale ad un altro set di movimenti.

o   Infine, la logica di utilizzo degli oggetti ha richiesto di creare una serie di elementi lato server per permettere di gestire l’assegnazione della proprietà degli oggetti alle persone che li avrebbero utilizzati, evitando bug o comportamenti strani.

Redazione a cura di Darnos.
Articolo originale disponibile presso le Roberts Space Industries.