PREMESSA
Nel Jump Point uscito recentemente è stato dedicato molto spazio ad un articolo scritto dagli stessi sviluppatori sulla strada che ha portato all’Object Container Streaming, sui progressi sull’Object Container Streaming Server-Side e quello che manca per arrivare finalmente al Server Meshing. Per correttezza verso la CIG (Jump Point è una rivista esclusiva per i Subscribers), non andremo a tradurre l’intero articolo ma riporteremo solo le informazioni più interessanti riguardo l’Object Container Streaming Server-Side e il futuro di Star Citizen.
LA STRADA PERCORSA
Allo scopo di poter espandere con libertà l’area di gioco, Star Citizen ha dovuto nel corso degli anni cambiare le fondamenta del proprio engine, che era CryEngine ed è ora il Lumberyard. Sia chiaro, il cambio di engine non ha né fatto guadagnare né fatto perdere tempo al riguardo, in quanto i due engine sono sostanzialmente identici e allo stesso modo inadeguati per portare avanti il quasi impossibile compito che Star Citizen ha dato loro: creare un MMO dalla scala e dal dettaglio mai visti prima.
Allo scopo di modificare l’Engine per rendere possibile Star Citizen, è stato necessario introdurre (la lista non è esaustiva):
- Gestione dello spazio a 64bit;
- Inserire il concetto dei contenitori di oggetti (Object Container) al posto dei semplici livelli;
- Introdurre le variabili serializzate;
- Riscrivere in C++ la parte dell’Engine scritta in LUA;
- Convertire un engine inizialmente pensato per processori dual-core ad uno che potesse sfruttare meglio tutti gli eventuali core della CPU;
- Creare un processo che gestisse le entità affinché potessero essere rimosse e reintrodotte facilmente, seguendo gerarchie e eventuali gruppi specifici.
- Introdurre il Bind Culling, o Object Container Streaming Client-Side, per ridurre considerevolmente la quantità di RAM e risorse necessarie per i client.

VERSO L’OCS SERVER-SIDE
Tuttavia non è finita qui, anzi. Star Citizen punta ad avere molti più giocatori per server, ad avere un universo più ricco di dettagli e di entità e infine punta ad avere tutti i server regionali uniti in un’unica shard, in modo da far diventare il gioco un vero e proprio MMO di nuova generazione (un server meshing single shard mondiale è possibile, ma problematico a causa della latenza).
COME FUNZIONA L’OCS SERVER-SIDE
L’idea alla base dell’OCS Server-Side è che se nessun giocatore è vicino ad un oggetto questo possa essere “congelato” per poi copiare il suo stato in un database e infine rimuoverlo dal server. In caso qualcuno si avvicini alla posizione dell’oggetto, questo verrà ripristinato nella posizione e stato indicati nel database. Questo dovrebbe permettere di poter espandere l’universo di gioco senza andare a colpire le prestazioni del server, poiché queste caricheranno solo le entità e i luoghi vicini ai giocatori.

GESTIRE IL DATABASE
Star Citizen non è conosciuto per la sua mappa ridotta ed era necessario trovare un modo per “immagazzinare” un numero enorme di entità con abbastanza informazioni da poter sapere dove poterle reinserire in un secondo momento. Per fare ciò la CIG ha adottato un algoritmo utilizzato nel mondo reale, il Geohash, adattandolo per un universo molto più grande e 3D. È stato chiamato Starhash. Per ricercare queste entità, gli sviluppatori hanno sfruttato una struttura chiamata Radix Tree, e infine hanno collegato il tutto al processo che gestisce lo streaming delle entità.
PROBLEMI DI SPAWN
Come se ciò non fosse di per sé abbastanza complesso, era necessario risolvere il problema che nasceva dal fatto che gli stessi punti di spawn fossero entità, e che quindi a loro volta sarebbero dovuti essere gestiti dal Database e inseriti nel server. Hanno dovuto creare un processo a due fasi, dove prima viene fatto generare il Location-ID (ovvero un elemento non fisicamente in gioco che indica la posizione nello spazio) dove far comparire poi tutte le entità relative, compresi i punti di spawn. Solo a quel punto verrà fatto spawnare il giocatore.

LAVORI IN CORSO VERSO LA PERSISTENZA
Attualmente non tutto l’OCS Server-Side è pronto, ma solo una parte che può essere usata parzialmente e che ha rilevato alcuni problemi che devono essere risolti.
In ogni caso, ci sono degli elementi che arriveranno dopo la prima versione dell’OCS Server-Side, in primis la persistenza. Infatti nella sua prima versione, il database sarà inserito nel server stesso, dunque non verrà mantenuto in caso di crash o cambio di server. Per rimediare a ciò, svilupperanno un sistema per conservare il database in una macchina esterna, che conserverà le entità a prescindere dal server.
SERVER MESHING
La capacità di far giocare insieme centinaia di migliaia di giocatori non verrà semplicemente migliorando le prestazioni delle singole istanze, ma si otterrà collegando insieme i vari server attraverso il Server Meshing, il quale sfrutterà proprio le tecnologie dell’OCS Server-Side per gestire le entità e i luoghi tra i server.
ELEMENTI AGGIUNTIVI
Ci sono altri due elementi su cui la CIG dovrà lavorare. Uno è il supporto dell’OCS sull’editor, che attualmente proprio per la sua mancanza soffre di lunghi tempi di caricamento e un framerate pessimo. Il secondo è Squadron 42, che ha bisogno dell’OCS Server-Side in quanto nella campagna single player il client di gioco fa anche da server per le entità. A detta degli sviluppatori, si tratta in realtà di un lavoro molto semplice.
In ogni caso, il tempo di vedere le fondamenta di Star Citizen completate si avvicina, come sempre un passo alla volta.
