¿Motores 3D multiplataforma fáciles de usar para el desarrollo de juegos C ++? [cerrado]

73

Quiero probar suerte escribiendo un juego en 3D. Sin embargo, no quiero comenzar con un nivel tan bajo de dibujar triángulos individuales y escribir mi propio cargador de objetos 3D, etc. He oído hablar de cosas como Irrlicht , Crystal Space 3D y Cafu , pero no tengo experiencia con ninguno de ellos. Estoy buscando sugerencias de personas que tengan experiencia con estos u otros motores en los que estén bien escritos y que sean fáciles de comenzar a usar, sin tener que aprender un montón de teoría matemática 3D y cómo funcionan internamente las GPU.

davr
fuente
16
Si bien puede haber sido cerrado, esta pregunta fue muy útil para mí.
Caleb Jares
44
Lo mismo, muy buen hilo, no sé por qué stackexchange no le gusta este tipo de preguntas.
steveh
2
les gusta cerrar preguntas, supongo
Frank Cranston
github.com/fffaraz/awesome-cpp#game-engine
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

48

Mi opinión (solo para motores 3D de código abierto):

  • Irrlicht :
    • Motor 3D ligero
    • Limpia C ++ sin dependencias y sin STL.
    • No está muy bien documentado, pero hay buenos tutoriales.
    • Muy pequeño para que pueda personalizarlo fácilmente.
    • No hay controladores OpenGL 3.X, Direct X 10.X u 11.X disponibles en el SDK oficial.
    • Muy bueno para el desarrollo móvil;
    • Buena comunidad
    • Pocas extensiones disponibles
  • Ogre3D :
    • Gran motor 3D
    • Utiliza C ++ moderno como STL, excepciones y RTTI
    • Buena documentación (hay libros publicados).
    • Muchos renderizadores (OpenGL, DirectX y OpenGL ES ...).
    • Ogre3D tiene muchas extensiones como integración CEGUI o Bullet, nodos Tree ...
    • Pero es más difícil extender Ogre3D si quieres algo específico.
    • Gran comunidad
    • Muchas extensiones
  • Espacio de cristal : un diseño antiguo y difícil de usar. Después de unos días, dejé de usar este motor.
  • Horde3D
    • Pequeño motor
    • Diseño moderno
    • Comunidad ligera
    • Sin extensiones
  • Blendelf
    • Pequeño motor con algunas dependencias.
    • Diseño moderno con efectos modernos como DOF o HDR ...
    • Solo OpenGL
    • Comunidad ligera
    • Integración de bala para física
    • Usas lua para pilotar este motor 3D

TL; DR:

  • Para un juego de escritorio (o futuro juego comercial): Ogre3D
  • Para un primer juego: Irrlicht
  • Para desarrollo móvil: irrlicht (Ogre3D es demasiado grande)
  • Para efectos sexys: Blendelf
Ellis
fuente
Para ser sincero, no recomendaría Irrlicht para el desarrollo móvil. Realiza demasiadas asignaciones de memoria y ofrece implementaciones personalizadas de asignación de memoria poco o nada. El tiempo de inicio debido a las casi 60 000 asignaciones realizadas en el inicio es un gran problema.
Simon
Yo uso Irrlicht en Android y el IOS y la hora de inicio no es un gran problema ... cargando textura es mucho más largo que alloc ...
Ellis
@ Simon podría explicar a qué se refiere con "implementaciones personalizadas de asignación de memoria"? ¿Qué es eso y por qué lo quieres?
temporary_user_name
2
@Aerovistae La asignación de memoria requiere llamadas al sistema operativo, es una operación muy costosa. Usualmente, al crear un motor de juego, querrás hacer tu propia administración de memoria, por ejemplo, asignar una gran cantidad de memoria una vez y luego distribuir esa memoria en el programa tú mismo. De esa manera, solo mueve los punteros y no llama al núcleo cada vez que desea memoria adicional. Es un tema bastante avanzado y requiere una aritmética de puntero avanzada, especialmente si desea algún tipo de mecanismo antifragmentación.
Dreta
3
Entonces, cuando Simon dice que no lo recomendaría porque no ofrece implementaciones personalizadas de asignación de memoria, ¿realmente esto no se aplica a un principiante, o incluso a la mayoría de los desarrolladores intermedios?
temporary_user_name
21

La sugerencia inicial obvia es Ogre3D .

Tétrada
fuente
¿Has tenido alguna experiencia con eso? ¿Es bastante estable, bien escrito y bueno para principiantes en 3D? Puedo buscar fácilmente en Google una lista de motores 3D (como puede ver en mi pregunta), estoy buscando más información sobre cuál es una buena opción y por qué. Gracias.
davr
1
Pero Ogre3D no es un motor. Es una biblioteca de renderizado 3D. Tienes que elegir un motor que esté construido sobre ogro o construir el tuyo propio.
Fuego
44
He tenido una amplia experiencia con Ogre3d; Es muy estable y está bien escrito, y hace un gran trabajo al ocuparse de las tareas mundanas (eliminación de escenas, carga de mallas, vallas publicitarias / partículas). El fuego es correcto porque no es un motor de juego; pero Ogre se puede (y a menudo se incorpora) con otras bibliotecas para crear una. Es un paso fantástico sobre "dibujar triángulos individuales y escribir mi propio cargador de objetos 3D", pero es solo una biblioteca de renderizado. Si eso es lo que quieres, es una gran biblioteca con una comunidad activa y solidaria.
Karantza
3
@Fire OGRE: motor de renderizado de gráficos orientado a objetos. Es un motor Tiene singletons por todo el lugar. Definitivamente un motor.
Ricket
3
@Ricket Sí, un motor de gráficos , pero no un motor de juego, que es lo que probablemente quiso decir, ya que esto se enfatiza fuertemente en los documentos de ogro. Además, el patrón singleton (anti) ciertamente no tiene nada que ver con que sea un motor o no.
Raoul el
7

Open Scene Graph es un motor 3D multiplataforma bastante bueno y muy bien diseñado. Contrariamente a Ogre3D, por ejemplo, no proporciona características de "motor de juego" y se concentra en ser una abstracción muy agradable además de OpenGL.

  • Es bastante liviano y no te impone un marco: puedes usar la cantidad que desees y usarlo a través de SDL, SFML, wxWidgets, QT ...
  • Es una gran experiencia de aprendizaje: a medida que aprende la biblioteca, comprende cada vez más sobre OpenGL subyacente y la forma en que se ha diseñado
  • Prácticamente listo para usar: tiene cargadores para formatos 3D convencionales
  • Sombreadores amigables

Echa un vistazo a la extensa lista de muestras .

pequeño_duck
fuente
4

En términos de motores de juego:

  • Torque3D : muchas características, pero algunas considerarían difícil trabajar con el código.
  • Motor C4 : económico, excelente soporte de autor, pero las herramientas podrían necesitar un poco de trabajo.
  • Bricolaje: selecciona un conjunto de bibliotecas y pégalas con tu juego.

Desde que se sugirió Ogre3D, también existe una alternativa ligera de Horde3D .

Pros:

  • El diseño es sólido y probablemente superará a Ogre3D para el renderizado pesado (si aún no lo hace)
  • C API, haciendo que los enlaces para lenguajes como Python sean simples y fáciles de mantener (el código interno es C ++)

Contras:

  • Requiere al menos soporte OpenGL 2.0
  • Comunidad más pequeña
  • Base de código inestable (todavía se están produciendo cambios arquitectónicos importantes)
Jason Kozak
fuente
2
Evita Torque 3D si valoras tu cordura. El motor de secuencias de comandos es una pesadilla confusa, muy frustrante para trabajar.
Jared Updike
4

Irrlicht proporciona un poco más que Ogre3D, y al mismo tiempo es un poco más práctico (por ejemplo, no parece que solo estés "arrancando un motor" y viendo que funciona, se siente más como si fueras el uno ejecutando comandos, como debería ser en mi opinión).

¡Creo que sería genial empezar!

Ricket
fuente
4

Sé que solicitó C ++, pero Panda3D también funciona con C ++, incluso si al principio está diseñado para trabajar con Python. Es un motor de juego, pero lo que sea ...

jokoon
fuente
2

La elección obvia, si Ogre3D tiene un nivel demasiado bajo para usted, sería NeoAxis: http://www.neoaxisgroup.com/

Funciona con Ogre, pero es una plataforma completa de desarrollo de juegos.

Está dirigido a .NET para que pueda usar C #, C ++ administrado, VB.

Así que ve por eso. :)

Ogre3D puede ejecutarse en una variedad de dispositivos móviles, como iPhone y Android. Entonces no es demasiado grande.

No confundas el tamaño con el rendimiento.

No estoy seguro de si IrrLicht tiene un soporte oficial para iPhone, pero Ogre3D sí.

revs jacmoe
fuente
Si está en .NET, ¿no puede agregar IronPython a la lista de idiomas? Python es un fabuloso lenguaje de secuencias de comandos.
Jared Updike
2
.¿RED? ¿No descarta eso multiplataforma?
davr
.Net no lo hace, pero Neo-Axis usa C ++ / CLI que sí.
jsimmons
Hablé con el desarrollador principal de Neoaxis hoy, y anunciarán la compatibilidad con Mac OS X este septiembre. :)
jacmoe
1

Buenas respuestas hasta ahora, pero agregaré Marmalade . Funciona bastante bien en dispositivos móviles. Un grupo de grandes estudios han lanzado juegos de consola con él, por lo que tiene credenciales. Incluso hay un editor similar a la unidad construido sobre él, Shiva3D , que también permite plataformas cruzadas.

ADB
fuente