Analisi tecnica dettagliata di Ghost of Yōtei

0 0
Analisi tecnica dettagliata di Ghost of Yōtei

Sucker Punch offre un approfondimento sugli aspetti tecnici che hanno dato vita al coinvolgente viaggio di Atsu. 

Realizzare Ghost of Yōtei è stata un’opera d’amore, e siamo felici di poterla condividere con tutti voi. Ora che i giocatori hanno avuto un assaggio del gioco, è il momento di parlare un po’ della tecnologia che ci ha aiutato a raggiungere questo risultato.

Sulla scia dei traguardi raggiunti con Ghost of Tsushima, l’idea alla base del progetto Ghost of Yōtei era porre un’enfasi ancora maggiore sul senso di libertà del giocatore nella natura selvaggia. Ciò significava trovare modi meno invadenti per guidare i giocatori, ambienti spettacolari con distanze visive ancora maggiori, un sistema di combattimento più flessibile e momenti di trama emozionanti. Riuscire in tutto questo e allo stesso tempo mantenere un buon frame rate è impegnativo, naturalmente.

Detto questo, iniziamo ad approfondire qualche aspetto della tecnologia impiegata nella creazione di Ghost of Yōtei!

Vagare in un mondo selvaggio

Mentre sperimentavamo modi per rendere l’esplorazione libera, ci siamo resi conto che la chiave era lasciare ai giocatori la possibilità di ammirare un paesaggio mozzafiato e farsi guidare dalla curiosità per lanciarsi alla scoperta del gioco. Dal punto di vista tecnico, trasmettere quella sensazione richiedeva visuali a perdita d’occhio, e ciò significava una migliore resa grafica di erba, terreni e montagne visti in lontananza.

Abbiamo migliorato l’aspetto delle montagne lontane trasformando modelli e materiali del terreno in texture dettagliate, così da mostrarle a una risoluzione più alta. Abbiamo anche raddoppiato la quantità di erba ed elementi visibili che il nostro sistema di rendering GPU può produrre. Nella foto seguente, le montagne distanti con più di un milione di alberi, rocce e cespugli sono ridotti a circa sessantamila elementi singoli che abbiamo poi renderizzato per generare i G-buffer e costruire l’immagine finale. 

Abbiamo utilizzato tecniche procedurali assistite per la creazione dei contenuti, facendo ampio affidamento sul sistema GPU per elaborare tutte le istanze in maniera efficiente senza avere necessità della CPU. Ciò comprende diverse operazioni di calcolo per determinare la superficie nascosta, allocare la memoria e compilare i registri di disegno prima di integrare le informazioni nella CPU per assemblare le liste di comandi definitive e creare il frame. Per farvi percepire la grandezza del progetto, ecco l’animazione di una sequenza simile in cui tutti gli elementi gestiti dalla GPU prendono posto. Utilizziamo queste tecniche anche per i dati generati durante l’esecuzione del gioco, come gli enormi campi di fiori e a volte persino per altri elementi come corde e catene. 

Per conferire unicità a ogni zona del mondo di gioco, abbiamo creato dei sistemi di interazione che ne sottolineano i tratti caratteristici. Gran parte dell’ambiente è ricoperto di erba o piccole piante, che oltre a muoversi in base al vento e al movimento dei personaggi, reagiscono anche ai fendenti delle armi grazie a un sistema che li registra chiamato “buffer del taglio”. Il buffer viene quindi letto dagli elementi grafici “tagliabili” e utilizzato per creare particelle nella sezione sopra il punto del taglio. Ciò consente ad Atsu di poter tagliare gran parte di erba, fiori e piccole piante nel gioco. 

Gli inverni dell’Hokkaido sono i più estremi del Giappone, per cui volevamo rappresentare in modo realistico l’interazione dei personaggi con la neve fitta. Per rendere possibile tutto ciò abbiamo realizzato un sistema di tassellatura del terreno in grado di aumentare il livello di dettaglio e di deformarsi dinamicamente in tempo reale. Per riuscirci, abbiamo registrato le particelle e gli elementi a schermo in un buffer di spostamento quando il personaggio cammina, rotola o combatte sul terreno. La flessibilità di questo sistema ci ha consentito di ampliarlo per permettere ai personaggi di scuotere via la neve da alberi e cespugli, generando particelle di neve. Combinando il tutto con un effetto di scintillio della neve supportato dalla tecnica dello “stable screen-space noise”, il risultato è il seguente: 

Le montagne alte come il monte Yōtei sono spesso coperte da nuvole, per cui abbiamo dovuto ideare un sistema che permettesse di renderizzare le nuvole davanti agli elementi del mondo di gioco, cosa che non era possibile con il motore grafico di Ghost of Tsushima. Volevamo anche dare l’idea di un clima instabile e tempestoso aumentando la velocità di spostamento delle nuvole. Per ottenere uno spostamento più rapido che non risultasse palesemente artefatto, abbiamo registrato la profondità media visibile di ciascun texel nella mappa delle nuvole (rispetto alla telecamera), e ciò ci ha consentito di creare profondità nelle nuvole durante il loro scorrimento senza aumentare i poligoni. (Abbiamo anche combinato tre frame di nuvole anziché due, ottenendo un movimento ancora più fluido). Registrando anche la profondità media al quadrato nella mappa delle nuvole, siamo stati in grado di ricreare una semplice distribuzione statistica della loro opacità lungo ogni raggio, riuscendo così a stabilire quanto le nuvole dovessero coprire elementi del mondo come le montagne. 

Nebbia e scattering atmosferico hanno giocato un ruolo chiave nella creazione dello stile artistico di Ghost of Tsushima, e per Ghost of Yōtei abbiamo voluto proseguire su questa strada aggiungendo il supporto a volumi di nebbia locali. Il sistema sfrutta le istruzioni GPU a 16 bit in virgola mobile per eseguire questi calcoli in maniera efficiente. Come effetto collaterale delle ottimizzazioni sulle nuvole, abbiamo generato una mappa d’ombra delle nuvole nello spazio della luce, il che rende visibili i raggi crepuscolari (“raggi divini”) nella nebbia volumetrica, anche a grande distanza dalla telecamera. Inoltre, abbiamo consentito agli artisti di posizionare dei “punti luce per raggi divini” nel mondo di gioco, così che siano illuminati più frequentemente dalle aperture nelle nuvole. 

Personaggi e movimenti

Uno dei nostri obiettivi principali era rendere vivo il mondo di gioco di Ghost of Yōtei. Volevamo che il vento facesse muovere ogni elemento a schermo , tra cui i vestiti dei personaggi, i dettagli ornamentali sulle armi e i panni appesi nei villaggi. L’obiettivo era far sì che, durante le rotolate e i combattimenti, i giocatori sollevassero polvere e foglie, sporcandosi di fango e sangue per aumentare il senso di immersione nel mondo di gioco.

Gli elaborati completi di Atsu si muovono in maniera realistica solo grazie al nuovo sistema di stratificazione che abbiamo inserito nel motore grafico di simulazione tessuti GPU ad alte prestazioni. Oltre ad aggiungere il supporto per più strati di tessuto simulato (come nell’immagine qui sotto), il sistema gestisce le collisioni tra i vari tessuti e sfrutta delle euristiche calibrate per simulare in modo efficiente un gran numero di abiti. Ecco un esempio di Atsu che indossa uno dei suoi completi più elaborati, circondata da tessuti in movimento. 

GIF ghost_of_yotei_06_cloth_sim.gif

Le particelle della GPU sono stati il punto di forza di Sucker Punch dai tempi di Infamous Second Son. In Ghost of Yōtei abbiamo ampliato il nostro repertorio, consentendo alle particelle di campionare materiali del terreno, le deformazioni e il flusso dell’acqua. Per esempio, questa foto mostra delle particelle che si depositano sull’acqua e scorrono lungo un fiume. 

Non volevamo che fossero solo i personaggi ad avere un impatto sul mondo di gioco, ma che anche il mondo restituisse tale impatto. Per far ciò, abbiamo distribuito i dati su una griglia direzionale deformata intorno al personaggio, che ci ha consentito di applicare diversi effetti di texture per far sì che il personaggio risulti bagnato, insanguinato, infangato o ricoperto di neve. 

Abbiamo utilizzato il sistema di particelle anche per consentire ai giocatori di viaggiare istantaneamente nel passato per scoprire la storia della famiglia di Atsu. Per passare dal presente al passato e viceversa, abbiamo modificato lo scheletro e la geometria di Atsu assicurandoci di mantenere coerenza sullo stato del personaggio e sulle animazioni. Abbiamo anche modificato degli elementi di sfondo e l’illuminazione grazie alla velocità della SSD e a un accurato prefetching. Il tutto avviene dietro una cortina di particelle animate che utilizzano come riferimento una copia del frame buffer appena precedente alla transizione. 

Ray tracing e potenziamenti per PS5 Pro

Essendo un gioco concepito per PS5, volevamo sfruttare le nuovissime tecnologie della piattaforma per migliorare la qualità delle immagini. Con l’uscita di PS5 Pro, abbiamo voluto prendere una direzione che ci sarà utile anche per i giochi futuri. Grazie al solido supporto dei team tecnologici di PlayStation, ci siamo concentrati su due grandi ambiti: il ray tracing e il miglioramento delle immagini (upsampling) tramite PSSR.

Considerando che Ghost of Yōtei è ambientato nella natura selvaggia dell’Hokkaido del XVII secolo, ci sono poche superfici a specchio che possono beneficiare dei riflessi generati con ray tracing. Per questo, abbiamo deciso di utilizzarlo per migliorare il realismo dell’illuminazione globale. L’approccio è stato duplice: abbiamo prima sviluppato un modello di illuminazione baked migliorato e automatizzato, che abbiamo arricchito in un secondo momento con un’illuminazione globale a breve distanza calcolata tramite ray tracing (RTGI – Ray Traced Global Illumination). Ciò ha richiesto modifiche significative al formato di streaming delle mesh, così da consentire la decompressione dinamica delle strutture di accelerazione utilizzate dall’hardware di ray tracing. Utilizzando l’hardware di ray tracing di PS5 Pro dalle prestazioni più efficienti, i giocatori possono attivare l’RTGI sulla console puntando a mantenere i 60 frame al secondo. 

Per Ghost of Yōtei abbiamo riprogettato il frame, utilizzando un algoritmo di risoluzione dinamica più generico, con upsampling, in modo da poter sfruttare il PSSR. Ci siamo trovati molto bene con il PSSR grazie a qualche leggera modifica, tra cui l’utilizzo della rasterizzazione conservativa per le piccole particelle. Rispetto a questo, il nostro algoritmo di upsampling standard ha bisogno di molti più input e indicazioni per arrivare a buoni risultati. Ecco un confronto diretto tra i due. Ingrandendo l’immagine (fino a 16 volte prima della compressione gif), si nota che il PSSR ricostruisce in maniera più precisa i piccoli dettagli di architettura e vegetazione. Inoltre, risulta più stabile in movimento. 

Velocità di caricamento

È da anni che Sucker Punch può vantarsi di far accedere i giocatori ai propri giochi il più velocemente possibile. In Ghost of Yōtei abbiamo continuato questa tradizione impegnandoci ancora di più sulla velocità dei tempi di caricamento.

Abbiamo ottimizzato i caricamenti pre-elaborando i dati, così che servano solo poche letture di SSD e operazioni di patch per ogni zona o porzione di terreno per caricare i dati rilevanti relativi al gameplay. Dopodiché abbiamo calcolato e caricato solo i mip delle texture e i LOD delle mesh necessari a renderizzare il primo frame, con una singola lettura per ogni elemento. Ecco un caricamento dall’estremo sud all’estremo nord senza transizione a schermo oscurato. (Da notare che il processo è un po’ più lento di quanto sarebbe se non fosse necessario renderizzare costantemente il mondo di gioco). 

Durante lo sviluppo, ci siamo “cibati” di questi sistemi invece di utilizzare modelli di caricamento diversi per le versioni finali.  Nella lingua dei programmatori, “cibarsi” significa che ogni programmatore, artista e designer collauda personalmente ciò che consegna per migliorarne la qualità.

Conclusioni

Vi abbiamo dato un piccolo assaggio del lavoro tecnico che svolgiamo a Sucker Punch. Realizzare videogiochi è molto più difficile di così, è un enorme sforzo di squadra in cui l’arte influenza la tecnologia e la tecnologia influenza l’arte in tutto il percorso di sviluppo.

Cinque anni fa, quando abbiamo iniziato questo progetto, l’obiettivo era realizzare un mondo di gioco in cui i giocatori si sarebbero persi volentieri. Molte delle nostre decisioni tecniche sono state prese in base a quella che è l’essenza di Ghost of Yōtei, e cioè la storia di una guerriera errante pronta a fare i conti con il proprio passato. Siamo emozionati di vedere le nostre idee diventare realtà e i giocatori condividere le loro esperienze pubblicando istantanee della schermata e video pazzeschi grazie alla modalità foto.

Siamo certamente orgogliosi del risultato, e speriamo che i giocatori si divertano a vagare nella natura selvaggia di Ghost of Yōtei.

Per ulteriori approfondimenti sulla tecnologia utilizzata da Sucker Punch e il processo di sviluppo, date un’occhiata alle nostre presentazioni in conferenze come GDC e SIGGRAPH. Contiamo di condividere ulteriori dettagli nel 2026.

Un ringraziamento speciale a Jasmin Patry, Doug Davis e Eric Wohllaib che mi hanno aiutato a editare e preparare i contenuti per questo articolo, nonché a tutti i membri del team di Sucker Punch di cui ho rappresentato il lavoro in questa sede.

Unisciti alla conversazione

Aggiungi un commento

Non essere inappropriato!

Sii gentile e costruttivo. Segnala commenti inappropriati a PlayStationBlogModeration@sony.com

Lascia un commento

Inserisci la tua data di nascita.

Date of birth fields