PDA

View Full Version : Programmazione Videogames che skill bisogna avere ?


cifa
27-02-2012, 22:41
Salve a tutti, probabilmente chiederò una pletora di domande dannatamente banali, ma se non mi levo questi dubbi adesso non lo faccio più e questo mi sembra un buon posto dove chiedere.

Posto che da quel che ho capito gran fetta della programmazione nei videogiochi è legato alla grafica, un po' di dubbi mi assalgono:

-Inanzitutto cos'è esattamente cosa fa il programmatore di grafica ? (Penso di sapere la risposta, ma preferisco avere quelle di altri :) ) Ovviamente non vi chiedo il dettaglio, ma due righe ad alto livello magari con qualche esempio banale.

- Domanda che si lega alla prima: Qual'è il confine di demarcazione tra artista 3D e programmatore 3D ? Anche questa è molto banale probabilmente, vorrei più che altro capire quanto un programmatore deve sapere smanettare con roba artistica e nel chieder questo mi riferisco ad una situazione con un grande team, non ad uno sviluppo indie con pochi ottimi a fare tutto.

- Last but not the least : Le skill pratiche che bisogna avere quali sono ? Io mi sto iniziando a guardare il C++ (all'uni abbiamo fatto un po' di C e Java, quindi procedo abbastanza velocemente), ma mi pare di aver capito che servono anche enormi competenze matematiche sopratutto di Algebra lineare, il che non mi dispiace, ma vorrei capire quali altre matematiche sono coinvolte.


Mi scuso se sono domande che possono sembrare banali e forse lo sono, ma visto che sogno questo tipo di carriera vorrei aver le idee piuttosto chiare prima di gettarmi nel buio

Vi ringrazio molto :D

Varilion
03-03-2012, 21:50
Non sono del settore, però ti direi:
a) La buona conoscenza dell'algebra lineare ti serve se vuoi andare in quel campo, quantomeno per avere idea di cosa succede sotto.

b) L'artista 3d sviluppa il modello con 3d-max o equivalenti, il "programmatore 3d" (come lo chiami tu) dovrebbe "muoverlo" o farci fare quel che serve, quindi dovrebbe conoscere le librerie grafiche (OpenGL, DirectX e via dicendo)... almeno per quanto ne so io...

Due cose pi pragmatiche:
c) puoi andare sui siti web delle software house che fanno videogame, alla sezione jobs e vedere quali sono i profili (junior) che cercano.
d) svariate università americane hanno corsi di videogame-programming. Di sicuro in internet si trova quantomeno l'elenco dei contenuti dei corsi. Anche il Polimi mi pare ne abbia un...

PGI-Bis
03-03-2012, 23:16
A livello amatoriale non serve praticamente nulla: piovono librerie e motori da tutte le parti, più che altro componi. Bastano vaghissime idee tipo gli oggetti occupano uno spazio, stanno in punto, si può fare la distanza tra punti... robe di questo livello.

Dal punto di vista professionale, pur non essendo del settore, darei per evidente che se ti vuoi occupare del motore grafico devi sapere qualcosa di geometria e affini.

Non la geometria delle medie, la geometria di quella volta che al primo anno di ingegneria meccanica lessi "domani lezione di geometria uno", pensai "uh che bello i triangoli e i quadrati" e alla prima frase del professore "Sia J un K-Spazio Vettoriale..." mi venne uno spontaneo "ma che cacchio sta dicendo questo?".

Ecco, quella geometria lì. Che parla anche di triangoli ma dopo che c'è passato sopra un camion: più che altro intuisci che sia un triangolo.

pabloski
04-03-2012, 19:35
Imho il grosso scoglio è la grafica. Cioè la realizzazione delle mash e relative texture.

In passato ho fatto qualche giochino per divertimento e il problema che ho trovato insormontabile ( non avendo nessunissimo gusto artistico nè capacità in tal senso ) è stato quello di creare scenari "decenti".

Come fa notare PGI-Bis, finchè si resta nell'amatoriale si può arrangiare praticamente di tutto, ma per uno sviluppo professionale ci vogliono pensare con know-how in varie aree. Non è possibile realizzare un gioco medio/grande da soli.

Per rispondere alle tue domande, direi:


-Inanzitutto cos'è esattamente cosa fa il programmatore di grafica ? (Penso di sapere la risposta, ma preferisco avere quelle di altri ) Ovviamente non vi chiedo il dettaglio, ma due righe ad alto livello magari con qualche esempio banale.


domanda che apre orizzonti ampi :D

si può partire dallo sviluppo di un motore grafico, con competenze che spaziano dalla geometria, algebra lineare, fino a tutti i frizzi e lazzi relativi al buon uso delle risorse hardware grafiche, fino allo scripting con blender per fare un giochino


- Domanda che si lega alla prima: Qual'è il confine di demarcazione tra artista 3D e programmatore 3D ? Anche questa è molto banale probabilmente, vorrei più che altro capire quanto un programmatore deve sapere smanettare con roba artistica e nel chieder questo mi riferisco ad una situazione con un grande team, non ad uno sviluppo indie con pochi ottimi a fare tutto.


come dicevo prima, imho sono due personaggi abbastanza differenti....l'arte è arte e difficilmente si può padroneggiare entrambe le arti ;)

per esempio nei grandi team, c'è chi sviluppa il motore grafico, chi si occupa dell'ai, chi lavora sulla fisica del motore grafico....questi gruppi non hanno nessun legame con quello che poi verrà implementato usando quel motore....per loro è questione di oggetti matematici, non forme artistiche


- Last but not the least : Le skill pratiche che bisogna avere quali sono ? Io mi sto iniziando a guardare il C++ (all'uni abbiamo fatto un po' di C e Java, quindi procedo abbastanza velocemente), ma mi pare di aver capito che servono anche enormi competenze matematiche sopratutto di Algebra lineare, il che non mi dispiace, ma vorrei capire quali altre matematiche sono coinvolte.


e anche qui vale lo stesso discorso....le competenze sono molto ampie e difficilmente si opera su tutto lo spettro di problemi relativi allo sviluppo di un gioco....chiaramente, in genere, l'informatico ha competenze che vanno da quelle matematiche/geometriche fino alla conoscenza dell'arte della programmazione....

C++ è preferito per lo sviluppo di motori grafici, Java lo si trova nello sviluppo di giochini, Python fa la parte del leone nei motori di scripting

direi che però il ventaglio di competenze è abbastanza ampio

yorkeiser
05-03-2012, 14:35
Dire "programmare videogames" al giorno d'oggi è generico, non è più come 20 anni fa quando c'erano uno/due programmatori che si occupavano di tutta la logica, supportato/i mediamente da un grafico e da un tracker per il sonoro.
Se ti muovi nel 3D ed utilizzi librerie esterne, come le citate directX o openGL o vari motori costruitici sopra (= non ti fai il motore da te) devi avere qualche nozione matematica (coordinate, assi, matrici e trasformazioni). Matematica da primo/secondo anno di ingegneria et similia. Se invece sei addetto alla fisica del motore hai bisogno sicuramente di qualche nozione in più. Bisogna anche avere una buona dimestichezza con la programmazione, gestione della memoria, ottimizzazione.
Per i linguaggi, una volta i vg erano il regno di c e asm; dall'aumento della complessità (anni '90) si preferisce adottare un modello oo, per cui c++ (preferito per banali ragioni di performance sui linguaggi managed).
Se poi vuoi fare un giochino 2D che muove qualche sprite e fa beep beep, di certo non avrai bisogno di tutto ciò e ti basta qualche rudimentale conoscenza di Java, C#, VB, Delphi o qualsiasi cosa sappia creare uno schermo/finestra e gestire qualche item grafico - probabilmente basterebbero le sole label. Se già conosci Java e vuoi provare l'ebrezza di fare qualcosa di semplice in 3D senza imparare un linguaggio nuovo (che poi arrivare ad un livello decente in c++ non è di certo immediato) puoi provare le librerie Java3D; finchè non spargi in giro troppi poligoni fanno egregiamente il loro dovere.

ingframin
05-03-2012, 15:40
Dire "programmare videogames" al giorno d'oggi è generico, non è più come 20 anni fa quando c'erano uno/due programmatori che si occupavano di tutta la logica, supportato/i mediamente da un grafico e da un tracker per il sonoro.
Se ti muovi nel 3D ed utilizzi librerie esterne, come le citate directX o openGL o vari motori costruitici sopra (= non ti fai il motore da te) devi avere qualche nozione matematica (coordinate, assi, matrici e trasformazioni). Matematica da primo/secondo anno di ingegneria et similia. Se invece sei addetto alla fisica del motore hai bisogno sicuramente di qualche nozione in più. Bisogna anche avere una buona dimestichezza con la programmazione, gestione della memoria, ottimizzazione.
Per i linguaggi, una volta i vg erano il regno di c e asm; dall'aumento della complessità (anni '90) si preferisce adottare un modello oo, per cui c++ (preferito per banali ragioni di performance sui linguaggi managed).
Se poi vuoi fare un giochino 2D che muove qualche sprite e fa beep beep, di certo non avrai bisogno di tutto ciò e ti basta qualche rudimentale conoscenza di Java, C#, VB, Delphi o qualsiasi cosa sappia creare uno schermo/finestra e gestire qualche item grafico - probabilmente basterebbero le sole label. Se già conosci Java e vuoi provare l'ebrezza di fare qualcosa di semplice in 3D senza imparare un linguaggio nuovo (che poi arrivare ad un livello decente in c++ non è di certo immediato) puoi provare le librerie Java3D; finchè non spargi in giro troppi poligoni fanno egregiamente il loro dovere.
Volendo si possono fare cose egregie anche in linguaggi managed, mai sentito parlare di C#/XNA? :sofico:
In ogni caso si puo' usare game maker, flash, HTML5+Javascript, C/SDL, e perfino Python + Pygame.
L'importante e' capire le meccaniche che stanno dietro alla costruzione di giochi e poi quelle stesse conoscenze le puoi applicare ovunque. Ti assicuro che ne scorrera' acqua sotto i ponti prima che dirai "accidenti ho bisogno di ottimizzare di piu'/cambiare linguaggio".
Un buon punto di partenza comunque e' http://www.indievault.it. Se ti iscrivi al forum troverai risorse e aiuto.
Il sito per eccellenza invece e':
http://www.gamedev.net/
In bocca al lupo!