Blog sviluppatori: ottimizzare la Landa

0
1067

Quando abbiamo iniziato a definire le priorità della nuova Landa, sapevamo che le prestazioni sarebbero state una delle sfide più importanti. Del resto, a cosa serve un aggiornamento spettacolare se poi ti fa esplodere il computer? Con queste premesse, abbiamo deciso che la nuova Landa degli evocatori avrebbe dovuto avere almeno le stesse prestazioni di quella attuale, su tutte le macchine. Stiamo lavorando all’ottimizzazione sin dall’annuncio dell’aggiornamento e vogliamo parlare degli ultimi dettagli con voi.

 

Arte e ingegneri

 

Solitamente, quando i giocatori pensano alle prestazioni di un gioco, considerano principalmente la tecnologia del gioco stesso. In realtà le prestazioni derivano da una stretta collaborazione tra artisti e ingegneri, mirata a trovare modi per implementare l’arte nel modo più efficiente possibile. Nella nuova Landa degli evocatori, i nostri ingegneri hanno lavorato per dare agli artisti tutti gli strumenti e le informazioni necessari a creare un paesaggio tanto bello quanto performante.

L’obiettivo del team artistico, ossia quello di avere una fedeltà grafica più alta senza ridurre le prestazioni della Landa originale, ha richiesto un set minimo di funzioni altamente ottimizzate, da usare come punto di partenza per creare una mappa dipinta a mano. In pratica, gli ingegneri hanno dovuto creare da zero un nuovo renderer che garantisse prestazioni più alte.

In parole povere, un renderer serve a creare le geometrie del gioco sullo schermo, e il nuovo renderer della Landa semplifica il processo, portando a prestazioni più alte, soprattutto sulle schede grafiche più vecchie. Inoltre ci permette di regolare accuratamente le specifiche di come le varie schede renderizzano l’ambiente, rendendoci più precisi, veloci e migliorando le prestazioni. Per finire, il renderer ci dà più controllo sui formati delle texture della mappa, riducendo l’uso della memoria video.

 

Minimalismo

 

Andando oltre l’ingegneria, i nostri artisti hanno cercato anche dei modi creativi per risparmiare risorse. Uno dei primi aspetti presi in esame è stato il conteggio dei poligoni, soprattutto per quel che riguarda le creature della giungla. Di sicuro lo sapete già, ma specifichiamo che i poligoni sono una serie di punti nello spazio che definiscono una superficie.

In particolare, ci siamo concentrati sui triangoli, i poligoni più semplici. Spesso nei giochi si usano molti triangoli per creare superfici complesse, e il numero di triangoli su schermo è un buon indicatore del carico di lavoro della scheda. Le macchine meno potenti soffrono molto, al crescere del conteggio dei triangoli. Abbiamo lavorato per ridurre i triangoli (e in generale i poligoni), garantendo sostanziali aumenti di prestazioni.

Abbiamo considerato anche il “conteggio delle ossa”. Pensate alle “ossa” come alle giunture di uno scheletro, e al fatto che influenzano ciò che le circonda, muovendosi o ruotando. Nel caso della computer grafica, le ossa permettono di articolare le animazioni: avendo delle ossa in punti precisi di un mostro della giungla, per esempio, possiamo animarlo al meglio. Come è ovvio che sia, il numero di ossa è inversamente proporzionale alle prestazioni, quindi abbiamo cercato di minimizzare le ossa negli elementi mobili dell’ambiente.

Queste due migliorie hanno contribuito alle creazione di un’altra opportunità di ottimizzazione. Abbiamo notato che gli elementi della mappa, come i minion e le torri, erano inefficienti nelle “deformazioni” (ossia nel movimento dei poligoni in base alle ossa), e avevano molte più connessioni “ossee” del necessario, usando la nuova architettura. La riduzione di poligoni e ossa ha ridotto radicalmente il numero di ossa connesse ai poligoni individuali, permettendoci di risparmiare risorse su quello che solitamente è un processo pesante.

 

Minore della somma delle sue parti

 

Un altro passo importante per il miglioramento delle prestazioni è stato implementare un processo chiamato “atlassing”. Il processo combina il “texturing” (quello che “dipinge” l’aspetto di un modello) e l'”UV mapping” (la proiezione di una texture su un modello 3D) in un modo che ottimizza al meglio le prestazioni.

Lo spazio UV di un modello determina come legge le texture e quali parti delle texture appariranno in superficie. Normalmente c’è uno spazio in eccesso tra l’UV, il modello e le texture:

L’atlassing combina più texture in una texture più grande, che possiamo comprimere o espandere a seconda del livello di dettaglio desiderato. Questa possibilità è preziosa quando vogliamo risparmiare memoria. Per esempio, invece di caricare cinque texture da 1024×1024, possiamo caricarne solo una da 2048×2048 e risparmiare sulle prestazioni.

 

Senza parlare dei piccoli dettagli

 

Speriamo di avervi dato un’idea di cosa sta succedendo dietro le quinte della nuova Landa, in attesa che arrivi sui server live. Ovviamente non abbiamo coperto tutti i dettagli dei nostri sforzi sul fronte delle prestazioni: abbiamo cambiato i contorni dei personaggi, la nebbia di guerra, le mesh di navigazione e abbiamo schiacciato tantissimi bug. Terremo sempre gli occhi aperti per occasioni di ottimizzazione. Avere un gioco compatibile anche con le macchine meno potenti (che chiamiamo affettuosamente i “tostapane”) è stato il nostro obiettivo sin dall’inizio, e continueremo a percorrere questa via con la beta pubblica e in tutto il futuro della Landa.