Motori 3D multipiattaforma facili da usare per lo sviluppo di giochi in C ++? [chiuso]


73

Voglio provare a scrivere un gioco 3D. Tuttavia, non voglio iniziare a un livello così basso di disegnare singoli triangoli e scrivere il mio caricatore di oggetti 3D e così via. Ho sentito parlare di cose come Irrlicht , Crystal Space 3D e Cafu , ma non ho alcuna esperienza con nessuno di loro. Sto cercando suggerimenti da persone che hanno esperienza con questi o altri motori su cui sono ben scritti e che sono facili da usare, senza dover imparare una tonnellata di teoria matematica 3D e come funzionano le GPU internamente.


16
Anche se potrebbe essere stato chiuso, questa domanda mi è stata molto utile.
Caleb Jares,

4
idem, ottimo thread, non so perché stackexchange non piace questo tipo di domande.
Steve

2
a loro piace chiudere le domande suppongo
Frank Cranston,


Risposte:


48

La mia opinione (solo per motori 3D open source):

  • Irrlicht :
    • Motore 3D leggero
    • Pulisci C ++ senza dipendenze e senza STL.
    • Non molto ben documentato ma ci sono buoni tutorial.
    • Molto piccolo in modo da poterlo personalizzare facilmente.
    • Nessun driver OpenGL 3.X, Direct X 10.X o 11.X disponibili nell'SDK ufficiale.
    • Ottimo per lo sviluppo mobile;
    • Buona comunità
    • Poche estensioni disponibili
  • Ogre3D :
    • Grande motore 3D
    • Utilizza C ++ moderno come STL, eccezioni e RTTI
    • Buona documentazione (ci sono libri pubblicati).
    • Molti renderer (OpenGL, DirectX e OpenGL ES ...).
    • Ogre3D ha molte estensioni come integrazione CEGUI o Bullet, nodi Tree ...
    • Ma è più difficile estendere Ogre3D se si desidera qualcosa di specifico.
    • Grande comunità
    • Molte estensioni
  • Spazio cristallino : un design antico e difficile da usare. Dopo alcuni giorni, ho smesso di usare questo motore.
  • Horde3D
    • Piccolo motore
    • Design moderno
    • Comunità leggera
    • Nessuna estensione
  • Blendelf
    • Piccolo motore con alcune dipendenze
    • Design moderno con effetti moderni come DOF o HDR ...
    • Solo OpenGL
    • Comunità leggera
    • Integrazione di proiettili per la fisica
    • Usa lua per pilotare questo engine3D

TL; DR:

  • Per un gioco desktop (o futuro gioco commerciale): Ogre3D
  • Per una prima partita: Irrlicht
  • Per lo sviluppo mobile: irrlicht (Ogre3D è troppo grande)
  • Per effetti sexy: Blendelf

Ad essere sincero, non consiglierei Irrlicht per lo sviluppo mobile. Fa troppe allocazioni di memoria e offre implementazioni di allocazione di memoria personalizzate scarse o assenti. Il tempo di avvio dovuto alle quasi 60.000 allocazioni fatte all'avvio è un grosso problema.
Simon,

Uso Irrlicht su Android e IOS e il tempo di avvio non è un grosso problema ... Il caricamento delle texture è molto più lungo di alloc ...
Ellis

@Simon potresti spiegare a cosa ti riferisci con "implementazioni personalizzate di allocazione della memoria"? Cos'è, e perché lo vorresti?
temporaneo

2
@Aerovistae L'allocazione della memoria richiede chiamate al sistema operativo, è un'operazione molto costosa. Solitamente quando si crea un motore di gioco, si vorrebbe fare la propria gestione della memoria, ad esempio se si allocasse una grossa fetta di memoria una volta e poi si distribuirà quella memoria nel programma. In questo modo si spostano solo i puntatori e non si chiama il kernel ogni volta che si desidera memoria aggiuntiva. È un argomento abbastanza avanzato e richiede un'aritmetica avanzata del puntatore, specialmente se si desidera una sorta di meccanismo anti-frammentazione.
dreta,

3
Quindi, quando Simon dice che non lo consiglierebbe perché non offre implementazioni personalizzate di allocazione della memoria, davvero questo non vale per un principiante, o anche per la maggior parte degli sviluppatori intermedi?
temporaneo

21

L'ovvio suggerimento iniziale è Ogre3D .


Hai avuto qualche esperienza con esso? È abbastanza stabile, ben scritto e adatto ai principianti in 3D? Posso facilmente consultare un elenco di motori 3D (come vedi dalla mia domanda), sto cercando ulteriori informazioni su quale sia una buona scelta e perché. Grazie.
davr

1
Ma Ogre3D non è un motore. È una libreria di rendering 3d. Devi scegliere un motore che si basa sull'orco o crearne uno tuo.
Fuoco

4
Ho avuto una vasta esperienza con Ogre3d; È molto stabile e ben scritto, e fa un ottimo lavoro nel prendersi cura di compiti banali (abbattimento scene, caricamento mesh, cartelloni / particelle). Il fuoco è corretto in quanto non è un motore di gioco; ma Ogre può essere (e spesso è) incorporato con altre librerie per crearne uno. È un passo fantastico sopra "disegnare singoli triangoli e scrivere il mio caricatore di oggetti 3D", ma è solo una libreria di rendering. Se è quello che vuoi, è una grande biblioteca con una comunità attiva e solidale.
Karantza,

3
@Fire OGRE: motore di rendering grafico orientato agli oggetti. È un motore. Ha singletons dappertutto. Sicuramente un motore.
Ricket,

3
@Ricket Sì, un motore grafico , ma non un motore di gioco che è ciò che probabilmente intendeva in quanto questo è fortemente enfatizzato nei documenti di Ogre. Anche il modello singleton (anti) certamente non ha nulla a che fare con il fatto di essere un motore o meno.
Raoul,

7

Open Scene Graph è un ottimo motore 3D multipiattaforma molto ben progettato. Contrariamente a Ogre3D, ad esempio, non fornisce funzionalità di "motore di gioco" e si concentra sull'essere un'astrazione molto bella su OpenGL.

  • È abbastanza leggero e non ti impone un framework: puoi usarne il meno o tanto quanto vuoi e usarlo tramite SDL, SFML, wxWidgets, QT ...
  • È un'ottima esperienza di apprendimento: mentre impari la libreria, capisci sempre di più sul sottostante OpenGL e sul modo in cui è stato progettato
  • Praticamente pronto per l'uso: ha caricatori per i principali formati 3D
  • Shader amichevole

Dai un'occhiata all'ampio elenco di campioni .


4

In termini di motori di gioco:

  • Torque3D : molte funzionalità, ma alcune considerano il codice difficile da utilizzare.
  • Motore C4 : economico, eccellente supporto dell'autore, ma gli strumenti potrebbero richiedere un po 'di lavoro.
  • Fai da te: seleziona un set di librerie e incollale insieme al tuo gioco.

Da quando Ogre3D è stato suggerito, esiste anche un'alternativa leggera Horde3D .

Professionisti:

  • Il design è solido e probabilmente supererà Ogre3D per il rendering pesante (se non lo fa già)
  • API C, rendendo i binding per linguaggi come Python semplici e facili da mantenere (il codice interno è C ++)

Contro:

  • Richiede almeno il supporto OpenGL 2.0
  • Comunità più piccola
  • Base di codice instabile (si verificano ancora importanti modifiche all'architettura)

2
Evita Torque 3D se apprezzi la tua sanità mentale. Il motore di scripting è un incubo confuso, molto frustrante con cui lavorare.
Jared Updike,

4

Irrlicht fornisce un po 'più di Ogre3D, e allo stesso tempo è un po' più pratico (ad esempio non sembra che tu stia solo "avviando un motore" e guardandolo funzionare, sembra più che tu sia il uno in esecuzione di comandi, come dovrebbe essere secondo me).

Penso che sarebbe fantastico iniziare!


4

So che hai richiesto C ++, ma Panda3D funziona anche con C ++, anche se inizialmente è mirato a funzionare con Python. È un motore di gioco, ma qualunque cosa ...


2

La scelta ovvia, se Ogre3D è troppo basso per te, sarebbe NeoAxis: http://www.neoaxisgroup.com/

È alimentato da Ogre, ma è una piattaforma di sviluppo di giochi completa.

Si rivolge a .NET in modo da poter usare C #, C ++ gestito, VB.

Quindi vai per quello. :)

Ogre3D è in grado di funzionare su una vasta gamma di dispositivi mobili, come iPhone e Android. Quindi non è troppo grande.

Non confondere le dimensioni con le prestazioni.

Non sono sicuro se IrrLicht abbia un supporto ufficiale per iPhone, ma Ogre3D ha.


Se è su .NET, non puoi aggiungere IronPython all'elenco delle lingue? Python è un linguaggio di scripting favoloso.
Jared Updike,

2
.NETTO? Non esclude quello multipiattaforma?
davr

.Net no, ma Neo-Axis usa C ++ / CLI che lo fa.
jsimmons,

Ho parlato con lo sviluppatore capo Neoaxis oggi e stanno annunciando il supporto di Mac OS X a settembre. :)
jacmoe,


1

Buone risposte finora, ma aggiungerò Marmalade . Funziona abbastanza bene sul cellulare. Un sacco di grandi studi hanno rilasciato un gioco per console, quindi ha le credenziali. C'è anche un editor simile a un'unità costruito su di esso, Shiva3D , che consente anche multipiattaforma.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.