Pagina 1 di 1

Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 23/04/2017, 19:06
da Giux
Ciao ragazzi,

Dopo anni di studio, credo sia giunto il momento di iniziare a fare qualcosa di interessante, e sono qui a chiedervi qualche consiglio in merito.

Dunque vorrei addentrarmi in maniera graduale nella programmazione dei videogames, in particolare usando C++, ma prima di iniziare a smanettare con un engine, vorrei capire più a fondo, dietro le quinte cosa succede; in particolare l'idea sarebbe quella di imparare nel dettaglio i principi che stanno alla base della programmazione 2D e 3D, e poi successivamente approfondire un buon motore tipo l'Unreal.

Il punto che non so bene da dove iniziare, forse dovrei studiarmi OpenGL, o altro; ma prima di iniziare vorrei avere le idee chiare sugli argomenti da trattare, voi cosa mi consigliate?

Grazie.

Re: Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 23/04/2017, 21:25
da Raptorista
So che ci sono dei libri dedicati a questo argomento specifico, ma non ne ho letto nessuno. Al Politecnico di Milano c'è un corso di programmazione per videogiochi, magari lì trovi qualche spunto; io non l'ho seguito e quindi non so se parta dalle basi o da più in alto.

Re: Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 24/04/2017, 09:52
da Giux
Grazie per la risposta, ma se volessi iniziare ad interagire con la GPU e con tutto il discorso geometrico di fondo, tu pensi che OpenGL fa al caso mio o sono necessari altri prerequisiti...

Re: Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 24/04/2017, 10:24
da apatriarca
Quali sono i tuoi obiettivi? Per imparare come funziona la pipeline grafica di un videogioco, qualsiasi API va bene. Non ha granché importanza se impari le OpenGL o le DirectX o Vulkan o Metal o .. Non c'è tuttavia alcun bisogno di conoscere tali API per usare un motore come Unreal. D'altra parte, se sei interessato ad aspetti di più basso livello, non c'è necessariamente bisogno di imparare ad usare qualcosa come Unreal. Un videogioco e poi ovviamente molto più che grafica e ci sono tantissime altre cose su cui concentrarsi.

Indipendentemente dalla tua scelta, se non disponi già di tali conoscenze, ti consiglio di dare una occhiata a nozioni di algebra lineare (in 3D principalmente) e qualcosa su trasformazioni affini e proiettive. Non serve una conoscenza granché approfondita, ma sono alla base di ogni cosa che farai in OpenGL/DirectX/Vulkan..

Re: Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 24/04/2017, 10:59
da Giux
apatriarca ha scritto:Quali sono i tuoi obiettivi?


Capire a fondo come funziona un engine, prima di usarne uno già pronto. E per questo non ho problemi sul discorso dell'algebra lineare ma più che altro sul passo "successivo da compiere", non vorrei scaricarmi ad esempio Unreal piuttosto che Ogre e smanettarci ad alto livello senza capirci nulla su cosa si cela dietro, mi piacerebbe approfondire la questione come hai accennato tu "a basso livello"..., forse allora la domanda opportuna sarebbe: quale API utilizzare? Ma una vale l'altra - o quasi?
Io amo molto programmare in ambiente linux, anche se molto spesso non posso fare a meno di utilizzare windows per cause di forza maggiore; perciò tra le diverse scelte, mi servirebbe qualcosa di molto pulito e conciso a livello di codice :roll:

Re: Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 24/04/2017, 14:31
da apatriarca
Tra le opzioni multi-piattaforma, OpenGL è la più semplice da usare e quella per cui si trovano più risorse. Alcune peró sono MOLTO datate. Troverai infatti guide, tutorial o libri sulla "fixed pipeline" che non esiste più a livello hardware (neanche nei cellulari). Ignora tutte le guide che trattano le OpenGL con versioni inferiori a 3.2-3.3 (non ricordo la versione precisa in cui c'è stato un cambiamento nelle versioni e sintassi di GLSL). Le DirectX 10-11 sono abbastanza simili a livello di funzionalità anche se le API sono ovviamente diverse.

Vulkan è più nuovo e di più basso livello. Rispetto alle OpenGL devi gestire manualmente la memoria e la sincronizzazione tra i diversi thread. Personalmente non l'ho mai usata come API, ma molti giochi moderni si stanno spostando ad API di questo tipo (DirectX 12 e Metal hanno un approccio simile).

C'è comunque un mondo tra delle API come OpenGL o Vulkan e un motore come Unreal. La grafica è in effetti una parte molto piccola. Esempi di altre attività svolte da un motore come Unreal:
1. Fisica
2. Audio
3. Intelligenza artificiale
4. Streaming dei livelli
5. Gestione dei menú e in generale della GUI
6. Networking
7. Sistemi anti-cheat
8. Gestione della memoria
9. Scheduling delle operazioni su più cpu/gpu

Ci sono poi i vari editor e strumenti che semplificano la creazione del gioco.. E se prendiamo in considerazione un gioco invece del motore, dobbiamo poi anche considerare tutto il codice scritto per implementare le meccaniche di gioco. Nessuno si aspetta che una persona conosca tutto questo e di certo non quando cerca di entrare nel mondo dei videogiochi. Cercando di comprendere tutto questo rischi solo di "perdere tempo" che potresti impiegare per imparare qualcosa con maggior dettaglio.

Nota che non tutti i giochi sono basati su un qualche tipo di motore e non tutti gli engine sono complicati quanto l'Unreal engine. Un motore può per esempio essere specializzato in un qualche tipo di gioco e quindi avere un design più semplice e meno generico di Unreal o Unity.

Re: Percorso e prerequisiti programmazione videogiochi

MessaggioInviato: 19/05/2017, 16:00
da blob84
Inizia a studiare matematica 3D e parallelamente leggiti un libro su opengl, provando gli esempi.
Continua in questo modo fino a quando non costruirai qualcosa di impegnativo.
Devi comprendere il testo in inglese perché tutta la documentazione che riguarda la computer grafica è in tale lingua.