di  -  lunedì 10 novembre 2008

GOW2Ho 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.

10 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Griso
     scrive: 

    Da programmatore del settore voglio anche aggiungere alle sopracitate considerazione che spesso gli asset sono il vero è proprio punto focale di combattimento tra lo studio di sviluppo e il publisher :P

  • # 2
    Jacopo Cocchi
     scrive: 

    in che senso Griso?

  • # 3
    Griso
     scrive: 

    Spesso ci sono problemi su chi deve generare taluni assert, spesso si lasciano scelte allo studio che poi il publisher o non condivide/ vuole modificare, ovviamente nello stesso tempo a disposizione.
    Diciamo che in teoria il publisher dovrebbe fornire al designer delle linee guida così precise che gli asset generati non dovrebbero mai avere problemi in fase di alpha e beta, putroppo questo avviene come la neve a ferragosto :)

  • # 4
    Jacopo Cocchi
     scrive: 

    più o meno i problemi che si hanno tra commerciale customer e sviluppatore.
    In un mondo idea i requisiti dovrebbero essere così dettagliati da lasciare allo sviluppatore sono la parte di implementazione…nella realtà se la documentazione esiste (dopo un paio di giorni di brainstorming per l’analisi) non coprirà mai tutti i possibili casi d’uso e quindi anche le eventuali problematiche devono essere “previste” prima di poterci mettere sopra le mani.

    Funziona come abbastanza come analogia? :)

  • # 5
    banryu79
     scrive: 

    Assolutamente interessante questo articolo di approfondimento sugli asset.
    Chi ha l’ultima parola in caso di problemi (non tecnici, intendo di specifica) con gli asset?
    Immagino il publisher, giusto?

  • # 6
    Rubatti D.
     scrive: 

    Ho sbagliato a postare!(Che gaf!”-_-)

    Francesco Carucci O_O è a dir poco magnifico leggere i tuoi articoli,davvero interessanti.
    -Che voglio fare da grande? I videogiochi.(magari)

    Ho 14 anni e mi chiedevo ma ormai è troppo tardi per iniziare a programmare?

    Soprattutto,(premesso che un linguaggio non lo si impara mai)quando può richiedere l’apprendimento di un linguaggio (tipo python)?
    Quest’ultimo è l’ideale per iniziare?

  • # 7
    Jacopo Cocchi
     scrive: 

    mamma mia se fosse tardi a 14 anni sai quanti geni che hanno iniziato ben dopo non avrebbero mai fatto vedere le proprie capacità :)

    L’apprendimento è soggettivo, comunque dei consigli utili sono venuti fuori nell’altro articolo di Francesco
    Link: http://www.appuntidigitali.it/2506/quale-linguaggio-per-imparare-a-programmare/

    ;)

  • # 8
    Rubatti D.
     scrive: 

    Grazie Mille!
    Deciso con python

  • # 9
    Videogiochi: non solo C++ - Appunti Digitali
     scrive: 

    […] esperienze piu’ vaste. Queste aspettative si traducono durante lo sviluppo in termini di più asset, più linee di codice, tecniche più complesse; problematiche che vanno affrontate da team più […]

  • # 10
    Rubatti D.
     scrive: 

    Il concetto di texture non mi è ancora chiaro:
    Praticamente serve a rifinire meglio il modello?

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.