Percorso e prerequisiti programmazione videogiochi

Messaggioda Giux » 23/04/2017, 19:06

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.
La matematica è la regina delle scienze e la teoria dei numeri è la regina della matematica.
(Carl Friedrich Gauss)
Avatar utente
Giux
Average Member
Average Member
 
Messaggio: 188 di 517
Iscritto il: 01/10/2012, 09:49

Re: Percorso e prerequisiti programmazione videogiochi

Messaggioda Raptorista » 23/04/2017, 21:25

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.
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4347 di 9616
Iscritto il: 28/09/2008, 19:58

Re: Percorso e prerequisiti programmazione videogiochi

Messaggioda Giux » 24/04/2017, 09:52

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...
La matematica è la regina delle scienze e la teoria dei numeri è la regina della matematica.
(Carl Friedrich Gauss)
Avatar utente
Giux
Average Member
Average Member
 
Messaggio: 189 di 517
Iscritto il: 01/10/2012, 09:49

Re: Percorso e prerequisiti programmazione videogiochi

Messaggioda apatriarca » 24/04/2017, 10:24

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..
apatriarca
Moderatore
Moderatore
 
Messaggio: 4610 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Percorso e prerequisiti programmazione videogiochi

Messaggioda Giux » 24/04/2017, 10:59

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:
La matematica è la regina delle scienze e la teoria dei numeri è la regina della matematica.
(Carl Friedrich Gauss)
Avatar utente
Giux
Average Member
Average Member
 
Messaggio: 190 di 517
Iscritto il: 01/10/2012, 09:49

Re: Percorso e prerequisiti programmazione videogiochi

Messaggioda apatriarca » 24/04/2017, 14:31

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.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4611 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Percorso e prerequisiti programmazione videogiochi

Messaggioda blob84 » 19/05/2017, 16:00

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.
blob84
Junior Member
Junior Member
 
Messaggio: 102 di 196
Iscritto il: 01/12/2009, 17:57


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite