|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
[Videogioco 3D] Percorso di apprendimento degli strumenti necessari.
Salve a tutti.
Il mio obiettivo è di dare vita a un videogioco 3d che per ora vive allegramente solo nel mio cervellino. Ennesima discussione sull'argomento, non potevi cercare un po' prima? Direte voi. In effetti ho cercato abbastanza in giro per la rete, reperendo qua e là qualche informazione ma senza riuscire a farmi un'idea definita dei vari aspetti. Ho basi discrete di C++ e di C#, ma zero riguardo alla programmazione 3D. Inizialmente pensavo di realizzarlo in C++, ma leggendo una certa discussione di battaglia tra linguaggi ho capito, grazie alle spiegazioni di Fek, che è meglio utilizzare un linguaggio più alto ed elegante e concentrarsi sugli algoritmi (che non sono per nulla semplici per quanto ho capito) e delegare al .net il lavoro al livello più basso. Trovarsi di fronte ad un nuovo argomento così vasto è disarmante e mi sono sorte 3 domande: 1) E' possibile realizzare un videogioco con una grafica dignitosa in C# che giri sulla maggior parte dei pc attuali? Se non è possibile devo ritornare sui miei passi ed utilizzare C++. 2) Sono venuto a sapere che tutta la grafica 3d si basa sul calcolo vettoriale e matriciale e pur non essendo del tutto all'oscuro dell'argomento, lo conosco solo in maniera elementare. Su internet ho trovato molti tutorial, che però spesso mancano dei concetti base e danno per scontati molti passaggi. Mi piace imparare le cose in modo sistematico, piuttosto che inferenziare i concetti da esempi, perchè credo sia il modo più veloce e più preciso. Esiste un libro (magari in italiano) che faccia una cosa del genere, spiegando gli algoritmi più ricorrenti che stanno dietro la grafica 3d? 3) Mi sapreste consigliare un libro ben fatto che parli più specificatamente delle DirectX9 e delle sue principali classi/funzioni? Grazie per l'interessamento ![]() Ultima modifica di Lanus91 : 21-05-2010 alle 14:39. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Potresti usare anche javascript, in ogni caso il 99.99% dei problemi che incontrerai riguarderà la creazione dei modelli 3D da ficcare dentro al gioco.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
Si in effetti fare i modelli 3D è una delle parti che mi piace meno, dovrò trovare qualche collaboratore o imparare a farlo bene io stesso.
Ma quello che più mi preme è come fare a gestire le collisioni. Ci dev'essere molta matematica alle spalle del processo, ma finchè non conoscerò bene l'argomento non potrò inventarmi niente. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Ma se ti appoggiassi ad engine 3d (gratuiti)? Oppure pensi che ti toglierebbero tutto il divertimento?
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ci sono delle librerie ad hoc per quello. Ad esempio se usi bullet (un set di api per la gestione della fisica) prendi i modelli 3d, crei tramite le api uno spazio di simulazione, gli ficchi dentro i modelli e sei praticamente a posto: collisioni, strusciamenti, salti, i conti li fa tutti la libreria per la gestione della fisica.
Un discorso analogo vale per gli effetti. Se cerchi in rete informazioni sul calcolo delle ombre in tempo reale trovi un sacco di bellissimi articoli tutti molto complicati ma a conti fatti non te ne frega una mazza perchè un qualsiasi motore di rendering in tempo reale tra quelli liberamente disponibili è già predisposto a proiettare le ombre senza che tu debba far altro che dire "tizio può proiettare un'ombra" dove tizio è un file che hai creato usando Blender. Idem per la temibile ripartizione dello spazio 3d: non scrivi a mano la gestione di un octree che poi si arrota per ripartire i triangoli in gruppi a sei gambe... no, è tutto precotto. Il codice che scrivi lo scrivi per coordinare le cose che hai nel gioco ed è quasi rilassante dopo che hai passato tre giorni per disegnare un robot che cammina che nella tua testa era la cosa più spettacolare mai vista e che sul tuo schermo sembra vagamente un cumulo di cubi in preda ad un attacco epilettico.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
solitamente si sviluppa un gioco 3d usando un motore grafico, e non da zero.
il discorso dei modellini 3d è molto complesso, e dovrai spenderci un po di tempo, soprattutto per quanto riguarda le animazioni. ora se però il tuo obiettivo è di fare un giochino 3d da solo, o comunque con pochi collaboratori, non credo che ti necessiti fare una grafica ad alti livelli. la mia esperienza col 3d risale a qualche mese fa, quando più che altro come sfida, ho iniziato a creare un third person shooter 3d, con anche un po di fisica, in Java, con 2 colleghi universitari (3o anno di informatica...il gioco è stato consegnato come progetto per un esame di Java e la programmazione ad eventi). il risultato di 3 mesi di lavoro (partendo da zero come conoscenza sia di java, sia di 3d, sia di modeling, sia di game programming) è questo: Last Chance abbiamo sviluppato questo giochino interamente in java, usando il motore jMonkey Engine, e la sua estensione per la fisica jME Physics la maggior parte dei modellini 3d usati nel gioco li ho fatti io da zero o quasi, così come le animazioni del personaggio (si vede direi) altri modellini li ho trovati in giro sulla rete, trovi i riferimenti nei Credits del gioco, ma li ho dovuti comunque modificare parecchio per renderli più leggeri (il framerate è già troppo basso se non si ha almeno una scheda discreta...e con schede poco potenti non funziona quasi proprio...ma capirai il perchè...). alla luce di questo, il mio personale consiglio è di informarti un po su queste librerie e considerare l'opportunità di sviluppare il tuo gioco in java...così sarà compatibile anche con i diversi sistemi operativi se invece vuoi avere maggiori prestazioni, e quindi vuoi scrivere in C++, ti consiglio di dare un'occhiata al fantastico motore grafico Ogre e se ti interessa la fisica, al motore fisico Open Dynamics Engine tutte le soluzioni che ti ho proposto sono rilasciate sotto licenza Libera, quindi puoi usarle, modificarle, ridistribuirle nella tua applicazione senza alcun vincolo. Ultima modifica di deadlyomen17 : 21-05-2010 alle 15:12. |
![]() |
![]() |
![]() |
#7 | ||
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
Quote:
Poi mi piace arrivare il più in fondo possibile nelle questioni e partire dalle fondamenta e poi costruirci il resto... non so quanto imprenditoriale sia il mio modo di ragionare, ma io lo faccio per piacere e non per soldi. Quote:
Certo realizzare tutto solo a partire dalle DirectX è difficile, ma almeno poi so come si fa ![]() |
||
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
un po masochista a mio avviso
![]() a questo punto di consiglio OpenGL e C++ DirectX è solo per sistemi Windows usando OpenGL almeno fai qualcosa di compatibile con i diversi sistemi. il divertimento comunque ti assicuro che c'è anche usando un engine...resta comunque complicato gestire una intera scena 3d, con intelligenza artificiale degli eventuali nemici, animazioni varie, collisioni etc. |
![]() |
![]() |
![]() |
#9 | ||
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
Quote:
Quote:
![]() C++ complica abbastanza il codice. Mi sapete consigliare dei manuali per masochisti come me? Ho cercato in giro ma le risposte sono per lo più di qualche anno fa. Vorrei sapere se c'è qualcosa di recente. Edit: Ho trovato questo. Che ne pensate? Ultima modifica di Lanus91 : 21-05-2010 alle 17:08. |
||
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Con OpenGL facci l'abitudine, a meno che tu non usi OpenGLES o qualcosa di nuovo per forza di cose i tutorial più famosi vanno dal vecchierrimo al deprecato.
Trovare la documentazione è forse il motivo per cui OpenGL è difficile, per il resto quando sapevo dove mettere le mani non ho avuto alcun problema. PS: ti consiglio di partire ad alto livello, altrimenti ti perderai per strada ![]() Come ha detto giustamente Fek l'argomento è vastissimo ed è progredito enormemente da quando sono state gettate le "basi". Se parti da 0 potresti buttare giù codice per mesi senza porti il problema di fare le ombre. PS: i libri in italiano dagli fuoco quindi buttali dalla finestra. ce ne sono parecchi in eng ma non ricordo i titoli... Ultima modifica di Tommo : 21-05-2010 alle 17:52. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Io avevo iniziato a leggere un po' di tempo fa 3d game engine design. E' una ribollita di palle eccezionale ma ha un che di quasi pratico (almeno a partire dal capitolo 4).
Mathematics for 3d game programming and computer graphics è un Frullamentus genitalis a livelli mai visti ma anche qui si riesce a cavarne qualcosa di concreto in modi insospettabili.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#12 | ||
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
Quote:
Il primo invece è fermo al 2000, non è che rischio di trovare dei concetti obsoleti? So che 10 anni nel mondo dei videogiochi sono moltissimi. Ah ho trovato anche questo che sembra interessante, anche se dovrebbe essere un acquisto successivo. Anche questo sembra ottimo per iniziare lo consiglia anche gamedev. Quote:
Certo il parco titoli inglese è veramente immenso, altro che quello italiano. Però anche lì ci saranno buoni prodotti e non, mi servirebbe sapere un titolo con il quale posso procedere sicuro all'acquisto, anche perchè non costano pochissimo. Ah una curiosità... ma le animazioni di solito si fanno con l'editor 3D, o vengono fatte con qualche algoritmo via script? Altra curiosità. Voi come avete iniziato? Avete frequentato corsi, avete utilizzato i tutorial su internet, avete comprato libri o altro.. Ultima modifica di Lanus91 : 21-05-2010 alle 22:32. |
||
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Le animazioni le fai con l'editor. E non ti dico che bellezza.
Il 3D math primer l'ho letto, non è che sia fatto male, anzi, però non è chi ti aiuti molto. Rispetto al mathematics for 3d game etc. ha dentro le implementazioni delle classi C++ per le mesh ma non quella per le collisioni. A prescindere nè con l'uno nè con l'altro ci fai un motore grafico, sono troppo astratti. Quell'altro più vecchio ti guida nella creazione di un tuo motore 3d (almeno nella prima parte, a un certo punto ho smesso di leggerlo per noia). Non so se ce ne siano di più aggiornati, immagino di sì, ma io ho letto solo quello - e neanche tutto.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 958
|
se vuoi usare opengl ma con c# invece di c++ ci sono vari wrapper in giro. tipo opentk, ti permette di programmare puramente a oggetti. se invece ti accorgi che preferisci concentrarti sul creare un gioco invece che il motore grafico e tutte le altre cose complicate che ci stanno sotto (che tipicamente fanno desistere un po' tutti) la scelta consigliata è udk
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
E' l'anniversario di PacMan.
Perche' per iniziare non provi a fare un bel PacMan 2D?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#16 | |||
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
Quote:
A questo punto mi sembra che da autodidatta sia quasi impossibile da imparare. Quote:
Quote:
![]() Comunque una cosa che mi piace davvero molto è realizzare qualche programma e poi cercare sempre di migliorarlo, mutuando un termine dslla poesia mi piace fare laborem limae. Voi che ne pensate, non lo trovate bellissimo? Certo forse è un po' contro tendenza, dato che il mercato richiede solo un buon rapporto qualità/velocità e non qualcosa di perfetto. Però sarebbe un altro argomento importante da discutere. Ma sto andando fuori tema. La cosa principale è che vorrei realizzare questo videogioco. Siccome penso che sia anche un esperimento didattico utile ad ampliare le mie conoscenze, vorrei partire dalle basi. A questo punto una libreria grafica e costruire il resto da me. Per farlo ho bisogno di molte conoscenze. Come fare per acquisirle? Non mi interessa tanto la velocità di apprendimento o altro, quello che mi interessa è che poi possa creare un engine consapevolmente e non ammucchiando un insieme di algoritmi di cui non capisco nulla e che magari ho rubacchiato qua e là su vari siti. Posso iniziare con quello consigliatomi da PGI-bis "3d game engine design"? O mi consigliate di partire da ancora prima, ovvero con quell'altro che tratta più specificatamente della matematica necessaria (premettendo che io non la so)? P.S.: Dovrebbero fare un bel tomo di 5000 pagine: Guida definitiva alla creazione di engine 3D. Così uno ha le idee chiare su cosa fare per entrare nel settore. ![]() |
|||
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Io adesso uso linux, quindi tu userai opengl, poche balle.
![]() Quote:
Il problema è azzeccare il libro o la combinazione di libri e avere tempo e pazienza. Il 3D math eccetera è un bellissimo libro e ci sono un sacco di cose interessanti ma anche leggendolo da capo a piedi non sei in grado di scrivere un motore 3d più di quanto non lo fossi prima di leggerlo. Dentro c'è di tutto, dal rendering alle collisioni, dal raytracing alla fisica, dai vettori ai metodi di risoluzione numerici. Ma è un libro che propone singole tecniche. Vuoi creare una normal map partendo da una texture 2d? C'è l'algoritmo. Vuoi triangolare un poligono? C'è l'algoritmo. Ombre in tempo reale? Algoritmo. Vuoi scrivere il tuo motore 3d? Ti attacchi. Che prima di inviare i dati sulle geometrie il motore 3D cerchi di eliminare quanti più poligoni possibili può anche avere un senso ma al PC non puoi dirgli "ok, adesso elimina i poligoni che non servono", devi iniziare con "in principio era la terra e venne la luce la notte eccetera eccetera". Il vecchio (di cui senz'altro occorrerebbe cercare una versione meno vetusta) ti piglia per mano e ti dice: ok, il motore ha un ciclo, dentro questo ciclo attraversa un albero, questo albero è fatto di nodi, i nodi possono essere x y, z, quando incontri un nodo x fa questo, quando incontra un nodo y fa quest'altro, eccetera eccetera.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
![]() |
![]() |
![]() |
#18 | |||
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
Quote:
Inoltre per il livello a cui lavorerai tu non credo proprio riuscirai a notare differenze. Non di meno, OpenGL è ampiamente usato anche in ambienti diversi dal gaming (anzi, nel gaming non è molto usato, rispetto a DirectX), quindi credo ti tornerebbe più utile imparare questa tecnologia che non quella Microsoft. Infine, ma non per importanza, OpenGL è uno standard aperto, mentre DirectX è un'API proprietaria Quote:
![]() il tuo scopo da ancora più senso alla scelta di usare uno standard libero. Quote:
c'è bisogno di conoscere l'algebra e la geometria anche "solo" per usare un engine, figurati per crearlo... |
|||
![]() |
![]() |
![]() |
#19 | ||
Junior Member
Iscritto dal: May 2009
Messaggi: 21
|
Quote:
![]() Quote:
![]() ahah ma io l'ho addirittura declinato all'accusativo xD Comunque si, dovrò pensarci su se utilizzare l'una o l'altra libreria grafica, secondo me è molto importante come cosa. A questo punto penso che, nonostante non mi insegni nulla di engine, il libro di matematica sia un passo obbligato. Ma forse sulla parte prettamente matematica posso anche trovare un buon manuale in italiano. Ultima modifica di Lanus91 : 22-05-2010 alle 14:45. |
||
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
opengl non è inferiore a directx, anzi opengl 4 e directx 11 sono alla pari se il tuo scopo attuale è di creare un gioco per windows dimostrativo, per studio, ecc... puoi benissimo restare sulle directx così che usi c#, developer studio per scrivere il codice, ecc... però tieni presente che prima o poi, se hai intenzione di sviluppare giochi in futuro, ti troverai le opengl tra i piedi.... opengl è usato sui mac, su linux, su ps3, wii e tutti gli smartphone praticamente directx al di fuori di windows e xbox non esiste come inizio è conveniente perchè non devo andare a cercare documentazione in giro, ma rimane il fatto che se la tua professione sarà questa allora opengl è un must |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:22.