Des moteurs 3D multi-plateformes faciles à utiliser pour le développement de jeux C ++? [fermé]

73

Je veux m'essayer à l'écriture d'un jeu en 3D. Cependant, je ne veux pas commencer à un niveau aussi bas en dessinant des triangles individuels et en écrivant mon propre chargeur d'objets 3D, etc. J'ai entendu parler de choses comme Irrlicht , Crystal Space 3D et Cafu , mais je n'ai aucune expérience de ces solutions. Je recherche des suggestions de personnes connaissant bien ces moteurs ou d’autres, sur lesquels ceux-ci sont bien écrits et faciles à utiliser, sans avoir à apprendre énormément de théorie mathématique en 3D et de savoir comment les GPU fonctionnent en interne.

davr
la source
16
Bien que la question ait été fermée, cette question m'a été très utile.
Caleb Jares
4
idem, très bon fil, je ne sais pas pourquoi stackexchange n'aime pas ce genre de questions.
steveh
2
je suppose qu'ils aiment les questions fermées
Frank Cranston
github.com/fffaraz/awesome-cpp#game-engine
Ciro Santilli a commencé à fonctionner

Réponses:

48

Mon avis (uniquement pour les moteurs 3D open source):

  • Irrlicht :
    • Moteur 3D léger
    • Nettoyer C ++ sans dépendances et sans LIST.
    • Pas très bien documenté mais il y a de bons tutoriels.
    • Très petit pour pouvoir le personnaliser facilement.
    • Aucun pilote OpenGL 3.X, Direct X 10.X ou 11.X disponible dans le SDK officiel.
    • Très bon pour le développement mobile;
    • Bonne communauté
    • Peu d'extensions disponibles
  • Ogre3D :
    • Gros moteur 3D
    • Il utilise le C ++ moderne tel que STL, les exceptions et RTTI
    • Bonne documentation (il y a des livres publiés).
    • De nombreux moteurs de rendu (OpenGL, DirectX et OpenGL ES ...).
    • Ogre3D possède de nombreuses extensions telles que l'intégration CEGUI ou Bullet, les nœuds Tree ...
    • Mais plus difficile d'étendre Ogre3D si vous voulez quelque chose de spécifique.
    • Grande communauté
    • Beaucoup d'extensions
  • Crystal space : Un design ancien et difficile à utiliser. Après quelques jours, j'ai arrêté d'utiliser ce moteur.
  • Horde3D
    • Petit moteur
    • Design moderne
    • Communauté de lumière
    • Pas d'extensions
  • Se mélanger
    • Petit moteur avec quelques dépendances
    • Design moderne avec des effets modernes comme DOF ou HDR ...
    • OpenGL seulement
    • Communauté de lumière
    • Intégration de la balle pour la physique
    • Vous utilisez lua pour piloter ce moteur 3D

TL; DR:

  • Pour un jeu de bureau (ou futur jeu commercial): Ogre3D
  • Pour un premier match: Irrlicht
  • Pour le développement mobile: irrlicht (Ogre3D est trop gros)
  • Pour des effets sexy: Blendelf
Ellis
la source
Pour être honnête, je ne recommanderais pas Irrlicht pour le développement mobile. Il effectue trop d'allocations de mémoire et offre peu d'implémentations d'allocation de mémoire personnalisées. Le temps de démarrage dû aux près de 60 000 allocations effectuées au démarrage est un gros problème.
Simon
J'utilise Irrlicht sur Android et IOS et le temps de démarrage n'est pas un gros problème ... Le chargement de texture est beaucoup plus long que l'allocation ...
Ellis
@Simon pourriez-vous expliquer à quoi vous faites référence avec les "implémentations d'allocation de mémoire personnalisées"? Qu'est-ce que c'est et pourquoi le voudriez-vous?
temporaire_utilisateur_nom
2
@Aerovistae L'allocation de mémoire nécessite des appels au système d'exploitation, il s'agit d'une opération très coûteuse. Habituellement, lors de la création d'un moteur de jeu, vous souhaitez gérer vous-même la mémoire, par exemple allouer une grande quantité de mémoire une fois, puis répartir vous-même cette mémoire dans le programme. De cette façon, vous ne faites que déplacer des pointeurs et ne pas appeler le noyau à chaque fois que vous voulez de la mémoire supplémentaire. C'est un sujet assez avancé et qui nécessite une arithmétique avancée du pointeur, en particulier si vous souhaitez une sorte de mécanisme anti-fragmentation.
dreta
3
Donc, lorsque Simon dit qu'il ne le recommanderait pas car il n'offre pas d'implémentations personnalisées d'allocation de mémoire, cela ne s'applique vraiment pas aux débutants, ni même à la plupart des développeurs intermédiaires?
temporaire_utilisateur_nom
21

La suggestion initiale évidente est Ogre3D .

Tetrad
la source
Avez-vous eu une expérience avec cela? Est-ce assez stable, bien écrit et bon pour les débutants en 3D? Je peux facilement consulter une liste de moteurs 3D (comme vous pouvez le voir dans ma question), je cherche à mieux comprendre ce qui constitue un bon choix et pourquoi. Merci.
davr
1
Mais Ogre3D n'est pas un moteur. C'est une bibliothèque de rendu 3D. Vous devez choisir un moteur construit sur ogre ou construire le vôtre.
Incendie
4
J'ai eu une vaste expérience avec Ogre3d; Il est très stable et bien écrit, et fait un excellent travail en prenant en charge des tâches banales (élimination de scènes, chargement de maillage, panneaux publicitaires / particules). Le feu est correct en ce que ce n'est pas un moteur de jeu; mais Ogre peut être (et est souvent) incorporé à d’autres bibliothèques pour en créer une. C'est une étape fantastique au-dessus de "dessiner des triangles individuels et écrire mon propre chargeur d'objets 3D", mais il ne s'agit que d'une bibliothèque de rendu. Si c'est ce que vous voulez, c'est une excellente bibliothèque avec une communauté active et solidaire.
Karantza
3
@Fire OGRE: moteur de rendu graphique orienté objet. C'est un moteur. Il a singletons partout. Certainement un moteur.
Ricket
3
@Ricket Oui, un moteur graphique , mais pas un moteur de jeu, c'est ce qu'il a probablement voulu dire, car cela est fortement souligné dans la documentation ogre. De plus, le motif (anti) singleton n’a certainement rien à voir avec le fait qu’il soit un moteur ou non.
Raoul
7

Open Scene Graph est un très bon moteur 3D multi-plateformes très bien conçu. Contrairement à Ogre3D, par exemple, il ne fournit pas de fonctionnalités de "moteur de jeu" et se concentre sur le fait d'être une très belle abstraction au-dessus d'OpenGL.

  • Il est assez léger et ne vous oblige pas à utiliser un framework: vous pouvez en utiliser autant ou autant que vous le souhaitez, et l'utiliser via SDL, SFML, wxWidgets, QT ...
  • C'est une excellente expérience d'apprentissage: au fur et à mesure que vous apprenez la bibliothèque, vous en comprenez de plus en plus sur OpenGL sous-jacent et sur la façon dont il a été conçu.
  • Presque tout à fait prêt à l'emploi: il a des chargeurs pour les formats 3D grand public
  • Shaders amical

Jetez un coup d'œil à la longue liste d'échantillons .

petit_duck
la source
4

En termes de moteurs de jeux:

  • Torque3D : Beaucoup de fonctionnalités, mais certains considèrent que le code est difficile à utiliser.
  • C4 Engine : Bon marché, excellent support de la part des auteurs, mais les outils pourraient nécessiter un peu de travail.
  • Bricolage: sélectionnez un ensemble de bibliothèques et collez-les avec votre jeu.

Depuis que Ogre3D a été suggéré, il existe également une alternative légère Horde3D .

Avantages:

  • La conception est solide et surperformera probablement Ogre3D en cas de rendu difficile (si ce n'est déjà fait)
  • API C, rendant les liaisons pour des langages tels que Python simples et faciles à gérer (le code interne est C ++)

Les inconvénients:

  • Nécessite au moins la prise en charge d'OpenGL 2.0
  • Petite communauté
  • Base de code instable (des modifications architecturales majeures sont toujours en cours)
Jason Kozak
la source
2
Évitez Torque 3D si vous valorisez votre santé mentale. Le moteur de script est un cauchemar confus, avec lequel il est très frustrant de travailler.
Jared Updike le
4

Irrlicht fournit un peu plus que Ogre3D, et en même temps est un peu plus pratique (par exemple, vous n'avez pas l'impression de "démarrer un moteur" et de le regarder tourner, vous avez plutôt l'impression d'être le une des commandes en cours, comme il se doit à mon avis).

Je pense que ce serait bien de commencer avec!

Rachitisme
la source
4

Je sais que vous avez demandé le C ++, mais Panda3D fonctionne également avec le C ++, même si au départ, il est conçu pour fonctionner avec python. C'est un moteur de jeu, mais peu importe ...

jokoon
la source
2

Le choix évident, si Ogre3D est trop bas pour vous, serait NeoAxis: http://www.neoaxisgroup.com/

Il est alimenté par Ogre, mais est une plate-forme complète de développement de jeux.

Il cible .NET afin que vous puissiez utiliser C #, C ++ géré, VB.

Alors allez-y. :)

Ogre3D est capable de fonctionner sur une gamme d'appareils mobiles, comme iPhone et Android. Donc ce n'est pas trop gros.

Ne confondez pas la taille avec la performance.

Je ne sais pas si IrrLicht a un support iPhone officiel, mais Ogre3D en a.

jacmoe
la source
Si c'est sur .NET, ne pouvez-vous pas ajouter IronPython à la liste des langues? Python est un langage de script fabuleux.
Jared Updike le
2
.NET? Cela n'exclut-il pas la multiplateforme?
davr
Net ne le fait pas, mais Neo-Axis utilise C ++ / CLI, ce qui est le cas.
Jsimmons
J'ai parlé au développeur en chef de Neoaxis aujourd'hui et ils ont annoncé la prise en charge de Mac OS X en septembre. :)
jacmoe
1

Bonnes réponses jusqu'à présent, mais j'ajouterai Marmalade . C'est assez bien mobile. Un groupe de grands studios ont publié un jeu sur console avec, il a donc des informations d'identification. Il existe même un éditeur semblable à l’unité, Shiva3D , qui permet également une multiplication des plates-formes.

BAD
la source