PDA

View Full Version : Com' è programmato un videogioco


jackillox
15-11-2010, 00:56
Ciao a tutti non sò se è la sezione adatta, ma mi sembrava quella più inerente, vorrei sapere come fanno a fare un videogioco con grafica come quella di COD o come quella di altri giochi che abbiano il livello grafico di call of duty? Praticamente tutti i giochi di nuova generazione dal 2000 in poi, poi Crysis è impressionante. Che strumenti usano?

mux85
15-11-2010, 09:22
Ci sono già un bel po' di discussioni al riguardo. Una abbastanza attiva ultimamente è questa http://www.hwupgrade.it/forum/showthread.php?t=2270924
Per cui magari è il caso che chiedi li invece di aprire un'altra discussione

jappilas
15-11-2010, 12:15
magari è il caso che chiedi li invece di aprire un'altra discussionemagari sarebbe più carino leggere meglio il post dell' OP, piuttosto che partire in quarta e rimandarlo a thread che forse, non hanno molta attinenza con il quesito da lui posto - dal momento che questo riguardava le tecniche implementate e gli strumenti impiegati dagli sviluppatori di giochi AAA, mentre quel thread è l' ultimo dei tanti a tema "come iniziare" (a cominciare dalla scelta del linguaggio di programmazione, quindi dalle basi) e non tratta certo tecniche avanzate di deferred shading o ambient occlusion o volume rendering... :rolleyes:

vorrei sapere come fanno a fare un videogioco con grafica come quella di COD o come quella di altri giochi che abbiano il livello grafico di call of duty? Praticamente tutti i giochi di nuova generazione dal 2000 in poi, ora, il problema è che il quesito apre a un campo di notevole vastità (un game engine allo stato dell' arte abbraccia una pletora di aspetti anche solo per quanto riguarda la parte puramente grafica -quindi lasciando da parte la gestione della fisica ad esempio- dalla struttura globale della pipeline, al singolo algoritmo di illuminazione/tracciamento delle ombre/calcolo dei riflessi/quant' altro, alla gestione degli asset , quindi al formato di questi a sua volta dipendente da come vengono usati dal resto dell' engine) E complessità (proprio in termini di livello di sofisticazione degli algoritmi creati, e delle basi concettuali di matematica, e ingegneria sw che questi spesso richiedono anche solo per essere capiti)
quindi da una parte io ti potrei mandare (e ti mando) ad esempio su siti come gamasutra (http://www.gamasutra.com/) o su blog (http://diaryofagraphicsprogrammer.blogspot.com/) di (http://graphicsrunner.blogspot.com/) alcuni (http://pixelstoomany.wordpress.com/) sviluppatori (http://gpupro.blogspot.com/) di medio alto profilo ( e magari quelli da questi linkati), ma non vorrei che poi non riuscissi a capire un accidente di quello che vi è scritto, quando ti trovi di fronte a termini come di deferred/inferred lighting, SSAO, tonemapping ecc - o il modo in cui da un algoritmo su carta si arriva alla sequenza di istruzioni in un engine o in uno shader (che allo stato attuale è in effetti parte integrante dell' engine) ...
e dall' altra, per affrontare un engine completo anche solo in una trattazione superficiale, ci sarebbe da scrivere un libro (e infatti vengono scritti, vedi le serie gpu gems e i vari report siggraph)
per questo di solito sui forum di programmazione di solito si discute un dettaglio alla volta - oppure si parte dalle basi come nel caso del thread linkato da mux ;)
poi Crysis è impressionante per dire, su http://www.crytek.com/cryengine/presentations ci sono delle presentazioni powerpoint di feature a cui lavorano in crytek , interessanti ad esempio quelle sulla global illumination - il problema è che la terminologia contenuta, rimanda a concetti spiegati altrove (qualcosa su wikipedia c'è) e che si dà per scontato chi legge conosca
Che strumenti usano?bella domanda
innanzitutto IDE come visual studio ma anche l' sdk delle DirectX (che già include tool come PIX, che permette di fare debugging step by step degli shader)
in seconda istanza ( ma non meno importanti, anche perchè all' interno del team verranno usati da altre persone con altre mansioni), i tool sviluppati collateralmente all' engine del gioco (in house, o come parte della suite di sviluppo dell' engine, se questo è di terze parti) e necessari per la creazione / conversione degli <b>asset</b> (modelli 3d, texture, ecc) le cui caratteristiche e il cui formato dovranno corrispondere all' engine e al suo funzionamento, mantenendo anche una certa efficienza nella memorizzazione
motivo per cui il formato degli asset va di pari passo con l' engine, e gli asset devono essere ricreati (in effetti si parla di build degli asset) se l' engine cambia in modo incompatibile (cioè nella maggioranza dei casi a meno che non si tratti di bug fix)
motivo per cui in effetti si adottano (o più spesso si sviluppano in house, sulle specifiche esigenze e struttura del progetto a cui sono destinati) anche dei sistemi di tracking e versioning degli asset

Tommo
15-11-2010, 12:57
COD fa pena come grafica :D

A parte questo il topic è immenso, e si può anche guardare da lati diversi:

si può chiedere:

-"come si realizza la pipeline di rendering", cioè come i dati geometrici vengono spiattellati sullo schermo durante l'esecuzione del gioco (il classico "motore grafico")

-"come si realizza la content pipeline" cioè come vengono scritti i tools necessari a produrre i dati geometrici e di gioco, quelli usati dagli Artists per fare modelli, animazioni e textures

-"come si realizzano i contents" cioè come si fa a creare a livello artistico i "pupazzi" che finiscono alla fine nella grafica di un videogioco.

Poi te fai l'errore di considerare un videogioco come sola grafica, quando c'è anche gameplay, fisica, networking, suono, che sono aspetti che richiedono mucchi di tempo in un gioco moderno.

@Jappilas: che strumenti usano -> Visual Studio... è un tantino riduttivo :D
Se ne usano tantissimi interni ad ogni team, anche autoprodotti, e un IDE è solo il primo passo; tantopiù che su svariate piattaforme VC++ non è nemmeno la prima scelta (PS3, Wii, iPhone)

jappilas
15-11-2010, 13:25
@Jappilas: che strumenti usano -> Visual Studio... è un tantino riduttivo :D
Se ne usano tantissimi interni ad ogni team, anche autoprodotti, e un IDE è solo il primo passo; tantopiù che su svariate piattaforme VC++ non è nemmeno la prima scelta (PS3, Wii, iPhone)più o meno quello che volevo dire io nel paragrafo " innanzitutto ... in seconda istanza ... ", solo che a) per qualche motivo adesso avevo in mente solo il gaming (e lo sviluppo) su PC b) non mi so spiegare con la tua concisione :D

mux85
15-11-2010, 14:49
magari sarebbe più carino leggere meglio il post dell' OP, piuttosto che partire in quarta e rimandarlo a thread che forse, non hanno molta attinenza con il quesito da lui posto - dal momento che questo riguardava le tecniche implementate e gli strumenti impiegati dagli sviluppatori di giochi AAA, mentre quel thread è l' ultimo dei tanti a tema "come iniziare" (a cominciare dalla scelta del linguaggio di programmazione, quindi dalle basi) e non tratta certo tecniche avanzate di deferred shading o ambient occlusion o volume rendering... :rolleyes:

il mio era solo un consiglio, e se io sono partito in quarta tu sei partito in quinta. inoltre ho il dubbio che non si parlerà di questi argomenti avanzati che hai nominato tu. cmq aspettiamo jackillox così ci dirà più precisamente cosa voleva sapere.