PDA

Visualizza la versione completa : [C++] Creazione di videogiochi 3D


pgnvni
01-12-2006, 17:46
com'è possibile sviluppare un videogioco 3D?

In C/C++? :dottò:

oregon
01-12-2006, 18:26
Sicuramente sì ... con librerie come OpenGL o DirectX ... ma non è per niente facile ...

XWolverineX
01-12-2006, 22:53
Originariamente inviato da oregon
Sicuramente sì ... con librerie come OpenGL o DirectX ... ma non è per niente facile ...

Confermo.
Io le sto studiando da un anno e nonostante abbia imparato molto, un mio amico competente disse


Le tue conoscenze di DirectX sono il lim f(x) per x-> 0 = 0

Ossia non nulle, ma quasi!!!!

Lak3d
01-12-2006, 23:24
Originariamente inviato da pgnvni
com'è possibile sviluppare un videogioco 3D?

In C/C++? :dottò:

sì, ma non solo... la parte del motore grafico va sviluppata in linguaggi quali C/C++ (in questo settore è importantissima la leggerezza e l'efficienza) ed è qualcosa di enorme. Se non ne sei capace puoi sempre acquistare licenze da terze parti per circa 500.000 USD. Una volta fatto ciò ti devi creare tutti i tool di sviluppo. E poi non è ancora finita qui perchè dopo tutto ciò non hai ancora niente in mano che possa essere paragonato ad un gioco 3d. Artwork, modeller, level designer, mapper, sound department, motion capture, AI, coding supplementare, animazioni, texture artist ed ecco che tutto inizierà magicamente a prendere forma.

Qualcosa più o meno paragonabile alla difficoltà di creare un sistema operativo ex novo... un videogioco professionale di medie ambizioni al giorno d'oggi costa quasi come un film di Hollywood. :)

scancode
02-12-2006, 02:42
Originariamente inviato da Lak3d
sì, ma non solo... la parte del motore grafico va sviluppata in linguaggi quali C/C++ (in questo settore è importantissima la leggerezza e l'efficienza) ed è qualcosa di enorme. Se non ne sei capace puoi sempre acquistare licenze da terze parti per circa 500.000 USD. Una volta fatto ciò ti devi creare tutti i tool di sviluppo. E poi non è ancora finita qui perchè dopo tutto ciò non hai ancora niente in mano che possa essere paragonato ad un gioco 3d. Artwork, modeller, level designer, mapper, sound department, motion capture, AI, coding supplementare, animazioni, texture artist ed ecco che tutto inizierà magicamente a prendere forma.

Qualcosa più o meno paragonabile alla difficoltà di creare un sistema operativo ex novo... un videogioco professionale di medie ambizioni al giorno d'oggi costa quasi come un film di Hollywood. :)

Veramente troppo esagerato...!!!


Originariamente inviato da Lak3d
... ed è qualcosa di enorme...


a cosa ti riferisci con enorme... se fosse il codice ti assicuro che non lo è affatto basta una normale classe in un .cpp e un .h con poche righe di codice per rappresentare l'oggetto (moto per esempio) un cpp e un .h per l'AI (la parte + "D"ifficoltosa) e poche righe di codice sia per la fisica (io uso Novodex physic dell'agenia) che per il sound.
Identica cosa, anzi ancor meno codice per il netcode.

Avere delle persone che sappiano usare per esempio 3ds max o altro per la mappa del game e il modello. Ma se non si hanno puoi usare 3ds max o altro per fare delle proprie mesh anche caricare solo cubi ho sfere per capire come funziona il 3d poi un domani qualcuno + bravo ti farà i modelli.

questo sopra solo per fare una demina. Per il motore grafico e l'editor è assurdo che possa iniziare a farlo ora ma se gli piace potrà un giorno svilupparlo. Io sono al mio 2 motore grafico.

Il netcode, l'engine del sound, l'AI (la parte + difficoltosa) e le animazioni saranno integrate poi nel motore ma c'è tempo per questo. Implementare gli shader poi non è difficile.

La cosa che invece uno dovrebbe sapere è saper dove e come mettere le mani.

Quindi dico:

Io ho studiato directx e ogl e ho scelto directx.

Installati l'sdk directx 9.0 dal sito della microsoft. Trovera i tut con progetti già pronti per capire come funziona. se vuoi provare le opengl vai sul sito di nehe.

per la fisica digita per novodex dell'agenia e installati l'sdk ha dei tut ben fatti con progetti correlati scritti in ogl ma se usi directx estrapola solo ciò che concerne la fisica. Ti divertirai un sacco. Oltretutto non è + a pagamento, quindi non ci sono scuse per non usarlo.

Tutti gli esempi che trovi sono buoni per capire il 3d e cmq solo a scopo didattico.

Ti faccio un esempio per farti capire:

Se vuoi sapere come fare le "ombre" ci sono molti esempi tipo shadow map e shadow volume.

Ma se vorrai fare un game serio non possono andare si consuma troppo in cpu e succhiano risorse. Per esempio io mi sono studiato una tecnica che si chiama TSM trapezoidal shadow mapping... con google la trovi.

In definitiva con i tut ti diverti e capirai cosa è il 3d.

Non sono in postazione ma un posto dove puoi iniziare (c'è anche un ampio forum dedicato e tut infiniti) è:

http://www.gameprog.it

Qui per vedere una mia demina di studio (poche righe di codice per vedere il 3d):
http://www.twork.it/work/demo_okay.zip (demina per la fisica)

Non sono bravo con 3ds max ma è accettabile.

- devi avere le dx 9.0 giugno 2006
- non devi installare nulla solo il file del driver dell'agenia.exe
- poi avvi l'exe

- F2 vai in fullscreen
- per guidare la macchina tasti awsd
- tasti frecce per muoverti (tu sei il personaggio) mi sono messo in un box fisico 2 righe di codice e funziona alla grande invece che usare il popò di roba di cui sopra.

Mi faccio ritornare la matrice del box e ci lego la telecamera mettendomi al centro e con il mouse seguo le direzioni legato alla telecamera.

- F4 vai in wireframe, così puoi vedere i poligoni dei portoni sia della mesh che del box fisico.
- con il pulsante "add" puoi immettere sulla scena sfere e cubi sono solo primitive fisiche ma ne puoi mettere a bizzeffe.
- lo slider per dosare la gravità.

CON IL TASTO "q" si aprono i portoni per entrare nell'angar i portoni sono corpi rigidi se premi F4 vedrai i poligoni in wireframe.

La macchina l'ho fatta con un cubo e una sfera con 3ds max.

Poi c'è un cubo divertiti ad andarci addoso collidi un pò con tutto.
Novodex sarà immesso come chip sui prossimo OS per questo non è + a pagamento.

Mentre nei tut prova a vedere come si comportano i fluidi o il partocle system è una cosa imbarazzante, Non per niente l'ultimo unreal monterà sul suo motore 3d la fisica con novodex.


Edit:

Dimenticavo:
consiglio come tool net 2003 o 2005.
linguaggio c/c++

studia bene la matematica e trigonometria applicata al pc e non da scienziati.
Per l'AI per esempio per far andare 18 moto guidate dall'AI o sputi sanghe oppure risolvi con 3 spline da far seguire alle moto o mezzi intorno alla strada. 2 spline laterali e una al centro della carreggiata. L' algoritmo che ho studiato e implementati è " il raggio osculatore" lo trovi con google. In questo modo prima di una curva a secondo della sua velocità/massa la moto si piegherà di tot gradi con il suo angolo di rollio e si solleverà piano piano mentre finisce la curva.

Per concludere se 30 anni fà avessi saputo in un sol colpo tutte queste cose oggi farei del mio hobby preferito il mio lavoro... ma non mi lamento


ciao

scancode
02-12-2006, 03:45
Prima di novodex ho studiato ODE tokamak con tut ben fatti. Havock non lo conosco ma è a pagamento.

Novodex è sbalorditivo...

Lak3d
02-12-2006, 04:40
esagerato dove? un progetto serio al giorno d'oggi non costa meno di un film di Holliwood, che tu sia d'accordo o meno. E anche anni di tempo. Per progetto serio intendo però un progetto serio, non porcherie. E la stessa cosa vale per i progetti amatoriali (ovvero prendi l'sdk di qualche motore grafico e creane una total conversion, ma anche una modification che vada un attimo oltre l'indecenza) moddb.com se vuoi scoprire qualcosa.
Stessa cosa per i motori grafici che chiedono anni di sviluppo... l'Unreal Engine 3 è stato in sviluppo per anni e lo è ancora sebbene pochi titoli lo usino, il Source costa mezzo miliardo di vecchie lire di licenza e oltre ad HDR di tecnologie grafiche avanzate non ce ne sono se paragonato a engine IdSoftware o Crytek... almeno per ora... ovviamente parlo dei più famosi e sempre a progetti con finalità commerciali mi riferisco. Pur non conoscendo molto bene l'area specifica, immagino che i prezzi delle licenze non siano stati decisi dopo una serata ad alta gradazione alcolica, no?

Se lui ha intenzione semplicemente di iniziare seguirà i tuoi consigli e in due settimane creerà il suo primo motore grafico... :bhò: mia intenzione era chiarirgli a grandi linee come avviene lo sviluppo di un videogame, visto che dal post di apertura sembrava pensare che non servisse nient'altro che un linguaggio di programmazione (oddio, se vogliamo ben vedere alla radice sempre quello c'è, ma da qui a credere che serve solo conoscere il c++ ce ne passa...)

pgnvni
02-12-2006, 10:06
Ormai ho capito come fare quindi mi devo mettere a lavoro... 3D Studio Max lo tengo quindi potrei creare oggetti e mappe mentre tutto il resto è codice... Ora usando il C o il C++ mi consigliate di usare DirectX o OpenGL... Quale sono le più facili da imparare e da programmare?

Oppure ancora c'è qualche libreria in particolare da facilitarmi lo sviluppo?

Riguardo tutto questo 3D ho letto di un programma che si chiama "Maya" e ne parlano tutti bene... Che fa questo programma? :ciauz:

scancode
02-12-2006, 10:51
Originariamente inviato da pgnvni
Ormai ho capito come fare quindi mi devo mettere a lavoro... 3D Studio Max lo tengo quindi potrei creare oggetti e mappe mentre tutto il resto è codice... Ora usando il C o il C++ mi consigliate di usare DirectX o OpenGL... Quale sono le più facili da imparare e da programmare?

Oppure ancora c'è qualche libreria in particolare da facilitarmi lo sviluppo?

Riguardo tutto questo 3D ho letto di un programma che si chiama "Maya" e ne parlano tutti bene... Che fa questo programma? :ciauz:

è un tool come 3ds max. maya è all'altezza di max. io ho preferito 3ds max.

tra opengl e directx io come detto ho scelto directx le + usate sono + performanti per win complete di sound e directinput directshow per video directplay molto performanti per il netcode a basso livello e altro ancora.

Le directinput sono ferme alle 8.1 ma sono sempre incluse negli sdk mentre directplay sono "deprecated" ovvero non + sviluppate e sono ferme alle 9.0 ma saranno sempre incluse negli sdk infatti ho migrato il code da directplay a winsock.

directx girano solo su windows mentre ogl sono portabili su altri os.
directx è constantemente aggiornato e molto potente come api.

Il fatto di usare directx è che anche i tut sono ben fatti msdn e doc sono eccellenti.

Un'altro fatto importante è che fino a opengl 1.2 e non superiori potranno girare su windows. Le applicazioni in finestra gireranno al 100% mentre in full screen al 50%... questa è la politica della microsoft che guardano i loro interessi.

se vuoi usare opengl cerca "tutorial nehe opengl" anche con quelli ti divertirai


ciao

UltraBeginner
02-12-2006, 11:35
Originariamente inviato da Lak3d
sì, ma non solo... la parte del motore grafico va sviluppata in linguaggi quali C/C++ (in questo settore è importantissima la leggerezza e l'efficienza) ed è qualcosa di enorme. Se non ne sei capace puoi sempre acquistare licenze da terze parti per circa 500.000 USD. Una volta fatto ciò ti devi creare tutti i tool di sviluppo. E poi non è ancora finita qui perchè dopo tutto ciò non hai ancora niente in mano che possa essere paragonato ad un gioco 3d. Artwork, modeller, level designer, mapper, sound department, motion capture, AI, coding supplementare, animazioni, texture artist ed ecco che tutto inizierà magicamente a prendere forma.

Qualcosa più o meno paragonabile alla difficoltà di creare un sistema operativo ex novo... un videogioco professionale di medie ambizioni al giorno d'oggi costa quasi come un film di Hollywood. :)

Quoto in pieno, basta vedere le skill richieste a chi vuol lavorare da Crytek (il gruppo che sta creando Crysis, uno dei primi videogiochi a sfruttare Directx 10 e quindi HDR,bump mapping e chi piu ne ha piu ne metta!) Saluti! :ciauz: :ciauz:

Loading