Ho parlato spesso di asset nella recente serie di articoli sulle fasi di Sviluppo dei Videgiochi, ma senza mai entrare nello specifico riguardo a che cosa si intende precisamente quando si parla di “game asset”: non esiste una definizione univoca, ma a spanne si parla di asset tutte le volte che ci si riferisce a cio’ che non e’ puro codice di esecuzione.
Modelli, animazioni, texture, livelli di gioco, suoni, video, ma anche il testo di eventuali dialoghi oppure, a volte, gli shader sono asset usati dal codice per produrre l’esperienza audio visiva presentata al giocatore. Come in altri casi, c’e’ grande somiglianza fra gli asset usati da un videogioco e quelli usati dagli effetti speciali in un film, e le somiglianze si estendono anche alla gestione degli stessi.
Vediamo brevemente le tipologie meno ovvie di asset.
Modelli. In un gioco tridimensionale, ogni entità a video ha un modello tridimensionale associato, una collezione di punti nello spazio che formano triangoli (anche chiamati spessissimo poligoni) e gli attributi a loro associati (colori, informazioni sull’ossatura, texture associate e loro tipologia). I modelli possono essere rigidi o deformabili mediante animazioni. I modellatori creano modelli tridimensionali usando pacchettti grafici come 3D Studio o Maya.
Animazioni. Un’animazione è l’elenco delle pose che un modello deformabile assume, ad esempio, durante una camminata. Gli animatori che producono animazioni sono figure pregiate nello sviluppo, e soprattutto nel cinema, perché sono a tutti gli effetti degli attori: il modello animato letteralmente recita una parte. Spesso si aiutano con animazioni acquisite dalla cattura dei movimenti reali di un attore (motion capture), oppure con l’uso di generatori d animazioni procedurali.
Texture. Un modello senza texture appare come un pezzo di plastica colorato. Le texture catturano informazioni ad alta frequenza sulla superficie di un modello che possono variare dal colore, cio’ che comunemente si assume quando si parla di texture, oppure la microcurvatura, comunemente indicata con bump map o normal map. Sono due esempi comuni di texture, ma nella realtà, qualunque informazione che può essere associata univocamente ad ogni punto della superficie di un modello è rappresentabile da una texture.
Gli asset sorgenti prodotti da un’artista non sono direttamente usabili dal gioco, ma vanno convertiti in una forma utilizzabile comprensibile come ad esempio nel caso di un modello tridimensionale dall’engine di rendering.
Questa fase della pipeline di sviluppo, che a prima vista sembrerebbe banale, è assolutamente critica per la buona riuscita di un titolo. Ad esempio un livello di uno shooter come il recente Gears Of War 2 dipende dai modelli in esso contenuti, ognuno di questi modelli dipende dalle texture o dalle eventuali animazioni associate: immaginiamo di modificare una texture, il motore di conversione degli asset deve essere in grado di capire da quali modelli questa texture è usata e quali livello contengono questi modelli, così da convertire solo la porzione degli asset interessata dal cambiamento nel minor tempo possibile.
E’ un problema assolutamente complesso da risolvere: un bug in questo sistema può portare velocemente al blocco dell’intero team di sviluppo con enormi perdite in termini di tempo e denaro.