Overwatch

Gli Environment State in Overwatch 2: dietro le quinte con il team tecnico

Gli Environment State in Overwatch 2: dietro le quinte con il team tecnico

Ciao a tutti! Sono Marco Alamia, programmatore software del team di Overwatch. Dal momento che abbiamo appena finito di mettere a punto una nuova tecnologia per Overwatch 2, abbiamo pensato che sarebbe stata una grande opportunità mostrare alla community un assaggio di cosa significa migliorare un motore di gioco. Ad assistermi in questo compito ci saranno anche altri due sviluppatori del team di Overwatch: Bruce Wilkie e Fabien Christin.

La nuova tecnologia che abbiamo aggiunto al motore di gioco si chiama Environment State ed è rapidamente diventata un caposaldo nella creazione e nella progettazione delle mappe. Anche se questa funzione è stata sviluppata e rifinita all'interno del motore e degli strumenti di Overwatch 2, l'idea viene dalla mente di uno dei nostri talentuosi artisti dell'illuminazione, Fabien. Gli ho chiesto di aiutarci a capire come ha avuto l'idea che ha rivoluzionato il modo in cui il team crea le mappe e di accompagnarci nel suo processo di progettazione.

Tuffiamoci negli Environment State!


Il concepimento dell'idea

Fabien: Overwatch è ambientato in un mondo luminoso e colorato e molti dei suoi personaggi trovano espressione nelle mappe. La creazione di una mappa inizia quando i progettisti dei livelli inventano l'intera architettura del luogo usando grandi blocchi grigi per produrre una dinamica di gioco interessante e bilanciata. La cosa più importante a questo stadio è progettare una mappa divertente da giocare! Dopo molte ore di test, i grafici degli ambienti trasformano i blocchi temporanei in edifici accurati e dettagli ambientali che danno vita ai luoghi veri e propri che visiteranno i giocatori. 

Insieme all'ambiente, creiamo gli effetti luminosi che supportano la storia che la mappa sta raccontando. Per Overwatch 2 volevamo creare nuove sfumature interessanti che cambiassero completamente la percezione di un luogo. Immaginate di visitare Numbani e vedere questa città futuristica illuminata dal caldo sole africano, o approdare in una Parigi piovosa, ma piena di negozietti dall'atmosfera calda e invitante, pronti a offrire un croissant per attendere la fine del maltempo.

Questo è esattamente quello che gli Environment State sono stati progettati per fare. Con questo nuovo sistema, siamo riusciti a separare tutti i componenti principali di illuminazione, suoni e modelli temporanei, che possono essere combinati per formare quelli che chiamiamo "scenari ambientali". Possiamo estenderli a tutta la mappa o avere scenari multipli all'interno della stessa.

Prendiamo per esempio la frenetica mappa Deathmatch di Necropoli. Probabilmente l'hai giocata nel suo scenario notturno, il cui freddo blu del cielo contrasta con il luminoso arancione delle torce poste lungo gli edifici.

Diciamo che vogliamo sperimentare uno scenario diverso, decidendo di provare i colori caldi del deserto del Tempio di Anubi. Con il nuovo sistema, tutto ciò che dobbiamo fare è prendere l'Environment State del Tempio di Anubi e applicarlo a Necropoli. 

L'effetto è già fantastico! Comunque, possiamo migliorarlo ancora riposizionando la direzione dei raggi del sole per creare ombre più interessanti. Per farlo, creiamo un nuovo Environment State che sovrascrive solamente la direzione dei raggi del sole e posizioniamo questo nuovo "blocco" in cima a quello del Tempio di Anubi. 

Fatto!

Grazie alla flessibilità e alla facilità di utilizzo degli Environment State, possiamo creare nuovi prototipi di illuminazione per le nostre mappe in poche ore. Poterli iterare rapidamente ci permette di sperimentare di più, di essere più creativi e di produrre più varietà per tutte le nostre mappe.

Ma c'è dell'altro. Anche se gli esempi di prima sono essenzialmente estetici, gli Environment State possono essere combinati dinamicamente per sviluppare nuove ed emozionanti dinamiche di gioco. Immagina di trovarti in missione a Necropoli per ripristinare la connessione di un satellite di Overwatch, difendendoti da un attacco del Settore Zero, quando una tempesta di sabbia si avvicina rapidamente aggiungendo un nuovo Environment State oltre a quello dello scenario base soleggiato, aumentando lentamente la copertura delle nuvole e la densità dell'effetto sabbia.

 

Con questa nuova tecnologia possiamo creare ogni sorta di cambiamento climatico, come tempeste, nevicate e altri emozionanti scenari ambientali per rendere il gioco diverso a ogni partita.

Torniamo da Marco, ora, e vediamo l'aspetto più tecnico dietro al sistema degli Environment State.

L'implementazione degli Environment State

Marco: La visione di Fabien era ambiziosa, quindi abbiamo dovuto progettare un sistema potente per poter raggiungere quello che Overwatch 2 aveva bisogno per i suoi ambienti. Dopo qualche riunione, abbiamo deciso di permettere a diversi Environment State di coesistere allo stesso tempo, ordinati in una pila. Questa pila può cambiare dinamicamente, quindi un Environmental State può essere aggiunto o rimosso in ogni momento. La magia prende forma quando il motore di gioco analizza questa pila e unisce tutti gli Environment State insieme per produrre l'ambiente finale. Se hai mai usato Photoshop, è come avere molti livelli collegati per produrre un'immagine finale.

L'idea è che ogni Environment State descriva alcuni aspetti dell'ambiente stesso, come la forza del vento e la direzione o il colore del sole. Quando vengono messi nella pila, solo gli aspetti forniti contribuiscono al risultato. Per esempio, questa è una pila del club di Lúcio a Rio, dove un Environment State cambia l'esposizione della telecamera e la gradazione dei colori:

 

L'Environment State di base fornisce tutti gli aspetti della mappa, mentre quello sopra di esso sovrascrive la gradazione di colore per produrre un'atmosfera sinistra e minacciosa nell'area di Diablo. Gli Environment State possono essere aggiunti e rimossi da una pila dinamicamente durante il gioco, facendo apparire le mappe più vive ed energiche.

Aspetti

Sotto la guida del team artistico e di Fabien, abbiamo identificato molti aspetti chiave da definire attraverso gli Environment State. La prima funzione a essere convertita in un aspetto è stata il post-processing. Il post-processing è un ingrediente di tutti i motori moderni: è usata per applicare vari filtri ed effetti, come i controlli di contrasto, luminosità e saturazione dell'immagine finale. Regolare queste variabili dinamicamente a seconda di quello che sta succedendo nel gioco può rendere un'immagine estremamente più vivida, e non sarebbe stato possibile avere questa funzione in Overwatch 2 senza gli Environment State.

L'aspetto della nebbia è un altro strumento potente del nostro nuovo sistema. Cambiando i suoi parametri possiamo modificare l'aspetto e la percezione della nebbia, il che permette al team grafico di far evolvere l'ambiente a seconda della modalità di gioco, della posizione dei giocatori o persino del tempo. Per esempio, possiamo rendere una mappa più sinistra per Halloween, avere una nebbia più concentrata in una determinata area della mappa o far sì che si sviluppi una tempesta di sabbia durante una delle nuove Missioni Eroe.

Abbiamo diversi aspetti che toccano altre proprietà grafiche, come le ombre delle nuvole sulla mappa, e persino non grafiche, come la forza e direzione del vento. Due degli aspetti più importanti che possiamo cambiare sono il sole e il cielo. Questi ci permettono di cambiare alcune proprietà chiave dell'ambiente, come la posizione e il colore del sole, il tipo di nuvole che stiamo usando e il fatto che sia giorno o notte. Come è facile immaginare, è una funzione molto potente dell'Environment State perché ci permette di cambiare l'aspetto e la percezione della mappa in modi spettacolari.

Questi due aspetti (il sole e il cielo) influenzano una delle aree più avanzate del nostro motore: il sistema di illuminazione. La luce è estremamente importante in Overwatch 2, perché ci aiuta a impostare l'aspetto, la percezione e l'atmosfera dei nostri ambienti. Detto questo, ogni cambiamento a questo sistema può gravare su memoria e prestazioni, quindi dobbiamo stare molto attenti a ciò che vogliamo permettere. Fortunatamente, abbiamo un grande programmatore con una vasta esperienza sui sistemi di illuminazione nel nostro team, Bruce Wilkie, che può aiutarci a creare qualcosa di fantastico mantenendo al contempo le prestazioni di alto livello di cui un gioco competitivo come Overwatch 2 ha bisogno.

L'illuminazione

Bruce: C'è così tanto lavoro e dedizione nella grafica vibrante e colorata di Overwatch! Ogni volta che gioco in una delle nostre bellissime mappe, mi ricordo di quanta attenzione ai dettagli abbiamo dato all'illuminazione di ogni ambiente. La luce del sole fa capolino nelle stanze, i fari illuminano le rovine e i festival notturni prendono vita con i loro colori sgargianti. Questi sono solo alcuni esempi di come la luce giochi un ruolo così importante nell'aspetto e percezione del nostro gioco. Quando abbiamo creato il motore di Overwatch, abbiamo lavorato insieme al team artistico per impostare proprietà legate all'illuminazione necessarie a portare i bozzetti 2D in un mondo 3D ricco di dettagli come superfici in grado di riflettere la luce (chiamata spesso illuminazione globale), metalli in grado di riflettere immagini del mondo attorno a loro e luci in grado di muovere oggetti apparentemente statici. Queste funzioni richiedono molti calcoli, spesso molto gravosi per la CPU, che vanno eseguiti al frame rate che vogliamo che il motore raggiunga. Per permettere a Overwatch di girare a frame rate alti e al tempo stesso di avere queste funzioni d'illuminazione avanzate, computiamo preventivamente quante più informazioni sulla luce possibili, le impacchettiamo e usiamo questi dati nel client. 

Diamo un'occhiata più da vicino ai dati che usiamo in Overwatch per abilitare alcune di queste funzioni d'illuminazione. Per cose che non si muovono, come muri, pavimenti e pareti, creiamo diversi dati. Il primo dice al motore quanta luce colpirà la superficie e da quale direzione proviene. Generalmente, questo dato viene chiamato "mappa della luce" e diversi motori immagazzinano diverse "sfumature" di dati nelle proprie mappe della luce.  

 

In questa immagine, è possibile vedere un esempio di come le mappe della luce vengono generate per le superfici di una mappa. Sulla sinistra c'è il risultato finale con tutte le luci. Al centro, solo le tracce sono renderizzate sulle superfici. I nostri artisti usano questa visuale per assicurarsi che abbastanza dati sull'illuminazione siano immagazzinati per le superfici in modo da raggiungere il risultato che vogliamo ottenere. A destra, ecco un esempio di come il motore impacchetta queste mappe della luce per minimizzare l'impatto sulla memoria.

Quando abbiamo pubblicato Overwatch, abbiamo generato colore e direzione di tutte le luci che colpiscono una superficie. Usiamo i dati sulle direzioni per variare il colore sulle superfici irregolari (più una superficie punta verso una direzione, più colore riceve). Per Overwatch 2, ora generiamo tre direzioni della luce, il che ci permette di variare ciascuno dei canali di colore (rosso, verde e blu) in modo indipendente. Avere direzioni aggiuntive rende più profonda la brillantezza della luce ambientale, aumentando la qualità dell'immagine.

Per gli oggetti stazionari, generiamo dati che dicono all'oggetto quanto riesce a vedere dell'ambiente circostante. Generalmente, questi dati sono chiamati occlusione ambientale. Abbiamo iniziato a generarli in molte mappe dopo la pubblicazione di Overwatch, come Parigi e L'Avana. Per Overwatch 2, tutte le mappe genereranno questi dati, aumentando la qualità grafica. 

 

 

Per gli oggetti in movimento, come i personaggi, generiamo molte posizioni di riferimento e codifichiamo i dati dell'illuminazione per ciascuna di esse, similmente a come faremmo per degli oggetti stazionari. Quando un oggetto mobile si avvicina a uno di questi punti, ne acquisirà i dati per illuminarsi. In Overwatch 2 abbiamo campionato molte più posizioni, specialmente in aria, il che significa che gli oggetti in movimento avranno un aspetto migliore che mai.  

 

Se hai guardato la nostra conferenza alla BlizzConline, avrai visto un'anteprima delle mappe che hanno diverse illuminazioni ambientali. Per ogni ambiente vogliamo condividere quanti più dati possibile per mantenere le dimensioni di download e installazione ragionevoli. La tecnologia degli Environment State permette al motore di raggruppare molte illuminazioni ambientali per una mappa, permettendo alla maggior parte dei dati precomputati menzionati poco sopra di venire condivisa da questi raggruppamenti di illuminazione ambientale. Questo abbassa enormemente l'impronta dei dati, il che significa che i giocatori non dovranno scaricare e installare molti dati per ogni variante. Avremo una qualità dell'illuminazione più alta, luci più varie e meno dati da gestire... tutto grazie agli Environment State.


Grazie agli Environment State, Overwatch 2 apparirà più dinamico, migliorando allo stesso tempo il lavoro dei nostri artisti e consentendo loro di creare un mondo colorato e divertente. Aspettati avventure immersive in giro per il mondo con ambienti mutevoli e una grafica mozzafiato in Overwatch 2!

Articolo successivo

Notizie in evidenza