¿Cuáles son las ventajas y desventajas de usar un motor 3D para juegos 2D? [cerrado]

16

¿Qué ventajas o desventajas debe tener en cuenta un principiante al decidir entre un motor de juego 2D (como Slick2D / Flixel / FlashPunk) y un motor 3D (como Unity) para el desarrollo de juegos 2D?

Recién estoy comenzando en el desarrollo de juegos independientes, aunque he incursionado un poco con Game Maker, Flash y XNA en el pasado. He escuchado muchas cosas positivas sobre Unity, y su naturaleza multiplataforma lo hace atractivo, pero según tengo entendido, es un motor 3D en su núcleo.

Para un juego estrictamente 2D, ¿hay alguna razón convincente para trabajar con un motor 3D como Unity? ¿O simplemente agregaría una complejidad innecesaria a mi experiencia de aprendizaje inicial?

mrohlf
fuente
¿Estás preguntando en el contexto de un juego puramente 2D en algo como Unity (como sprites y movimiento 2D) o un juego 3D con jugabilidad 2D (como con activos 3D pero solo moviéndose en un solo plano)?
chaosTechnician
Tengo algunos amigos que han trabajado con Unity para hacer un juego en 2D llamado Coypu Space Rumble . La parte 2D inicial fue aparentemente bastante tediosa, pediré más decisiones sobre por qué.
Jonathan Connell
Definir "motor 3D"? ¿Estamos hablando de algo que cubre el juego, o simplemente algo que se representa en 3D?
Nicol Bolas
@chaosTechnician - El primero: sprites puramente 2D, movimiento 2D, básicamente sin eje z real (solo un simple índice z para determinar el orden de representación del sprite)
mrohlf

Respuestas:

15

Depende del juego, pero en su mayor parte, será más fácil hacer un juego estrictamente 2d usando un motor diseñado específicamente para 2d.

Ahora, para algunos de los pros y los contras (algunos de estos estarán relacionados específicamente con Unity, algunos de ellos son más generales)

Contras

  1. Los motores 3D generalmente se diseñan alrededor de objetos del juego que son modelos 3D (polígonos y texturas). Si bien es ciertamente posible hacer un plano plano y aplicarle una textura, estás trabajando activamente contra el motor cuando lo haces.

  2. Además, muchos motores 3D carecen de la capacidad de manejar hojas de sprites (todos los cuadros de animación en una textura), porque esperan que la animación actúe sobre el modelo (a través de aparejos y otros métodos), no la textura. Una vez más, hay formas de evitar esto, pero de nuevo, estás trabajando activamente contra el motor para lograr esto.

  3. Complejidad añadida. Como se menciona en la respuesta de Josh Petrie, 3d es un poco más complejo que 2d, principalmente en matemática y gestión de escenas. Mover objetos y manejar el espacio en 3D es difícil, y si este es uno de tus primeros juegos, será mucho más difícil. La buena noticia: Unity resuelve algunos de estos problemas, aunque habrá algunas cosas que aún tendrá que manejar (y gran parte de la abstracción, una vez más, está destinada a modelos 3D, no a sprites 2D)

  4. La mayoría de las bibliotecas con las que viene Unity o que puede obtener están destinadas a objetos en 3D. Esto incluye cosas como iluminación, búsqueda de caminos, física, etc. Mientras tanto, box2d funcionará fácilmente con Flash, XNA o algo así (bueno, tal vez).

Pros

  1. Aceleración 3d. Las tarjetas gráficas son mucho mejores para manejar muchos objetos en una escena que una CPU, y con Unity puede obtener ese beneficio con mucha facilidad. Esto le permite mostrar miles de sprites en la pantalla, o incluir efectos de partículas fácilmente, o agregar algo divertido como sombreadores para soportar efectos geniales como deformar el espacio y el tiempo a su voluntad. Unity tiene muchos de estos efectos integrados, lo que lo hace realmente fácil. Tenga en cuenta que muchos motores 2d usan OpenGL o DirectX detrás de escena, y en muchos casos también pueden ser acelerados por hardware.

  2. Soporte para modelos. ¿Recuerdas esa cosa que antes era un problema? Sí, también puede ser un beneficio. Dependiendo del juego, poder incluir esferas giratorias o algo genial como un objeto 3D en el fondo puede ser un beneficio. También puede tener un juego hecho en 3D, pero simplemente forzado a una perspectiva en 2d, que puede darle la opción de rotar la geometría del mundo sin tener que hacer toneladas de gráficos adicionales para manejarlo.

  3. Aprendizaje 3d. Seamos realistas, muchos juegos están escritos en 3D, y si aprendes a usar Unity, podrás aplicar muchas de esas habilidades al próximo juego que puede requerir 3D. Además, a muchos artistas que salen de la escuela en este momento se les está enseñando modelado en 3D, por lo que es "más fácil" encontrar un artista en 3D que un artista de juegos en 2D tradicional (si dichos artistas son buenos ...)

Conclusión

Hay muchas desventajas, también hay una buena cantidad de profesionales. Todo dependerá del tipo de juego que quieras hacer, depende de ti decidir si vale la pena. Flash sigue siendo una opción extremadamente viable, por lo que no hay nada de malo en usar un motor 2D si eso es lo que mejor se adapta a tu juego.

thedaian
fuente
+1. Respuesta muy exhaustiva y aplicable. Tengo la sensación de que has abordado esto antes.
chaosTechnician
Gracias, justo lo que estaba buscando! Creo que continuaré centrándome en los motores 2D, ya que la mayoría de los que he visto se han construido sobre OpenGL o DirectX, y el modelado 3D está un poco fuera de mis capacidades en este momento. Me gustaría aprender Unity en algún momento, pero probablemente sea mejor abordar eso después de tener un juego 2D en mi haber.
mrohlf
Además, los motores 3D le permiten dibujar sprites con rotación arbitraria y alfa muy, muy fácilmente; más fácilmente que si tuvieras un motor 2D puro. Es por eso que muchos motores 2D modernos son realmente 3D bajo el capó; ¡también puedes escribir sombreadores personalizados!
ashes999
7

Un gran inconveniente es la complejidad adicional: los motores 3D no siempre tienen el mismo nivel de soporte de primera clase para gráficos 2D que los motores 2D dedicados. Esto significa que es mucho trabajo adicional lidiar con la composición y la gestión de una escena 2D, y / o aún tiene que lidiar con la complejidad de la tubería de transformación y matemáticas 3D. Especialmente si no está completamente familiarizado con los fundamentos de la teoría de gráficos 3D, puede encontrarse perdido y confundido cuando sus imágenes no aparecen y si no tiene cuidado, puede encontrar una "solución" que haga que su las imágenes aparecen pero no son necesariamente correctas (y por lo tanto te morderán más adelante).

Pero más allá del aspecto humano, siempre que el motor 3D tenga las herramientas que necesita para construir su juego 2D, no es una mala idea usar uno. Son mucho más frecuentes en estos días y tienden a desarrollarse de manera más agresiva, por lo que es una ventaja. Además, probablemente todavía haya un puñado de motores o marcos enfocados en 2D que no estén usando D3D u OpenGL detrás de escena y, por lo tanto, es posible que no obtengan los beneficios de las GPU modernas.

En esta pregunta relacionada , puede ver mucha discusión sobre lo que podría hacer que 3D sea más difícil (solo tendrá que lidiar con un subconjunto de eso si solo usa el motor 3D para un juego 2D).

Comunidad
fuente
2

Pro: los fabricantes de tarjetas de video dedican más esfuerzo a optimizar sus controladores 3D. No estás atascado en 2D para efectos especiales o fluorados. No tiene que simular encima y debajo de usted mismo. Cambiar de punto de vista no requiere una re-realización completa de todo su arte. Argumentaré que 3D escala mejor visualmente.

Con: las tuberías de activos probablemente tendrán que adaptarse a su motor. Algunas operaciones que son simples en 2D son más complejas en 3D. Las bibliotecas probablemente tendrán una funcionalidad adicional que nunca usará.

Patrick Hughes
fuente
0

Solo aprende Unity si puedes. Unity funciona REALMENTE bien con Blender 3D, que es de código abierto y gratuito. Hay un montón de buenos tutoriales en línea sobre cómo modelar y animar 2D en Blender con planos. También hay una TONELADA de modelos que puede descargar en línea, generalmente de forma gratuita o barata, que puede usar como punto de partida.

Por supuesto, esto supone que no eres experto en crear tu propio Game Engine. Mi juego 2D favorito en este momento es Super Meat Boy, que fue diseñado en Flash y el final de la programación se hizo a medida ... haciendo un motor de juego que se adaptara a las necesidades particulares de los juegos. Esta es la mejor manera de abordar un proyecto como ese porque te da mucha libertad. Dicho esto, toma mucho trabajo ir por ese camino.

Aesadai
fuente
En realidad, ahora que UNITY ha agregado soporte 2D, esto es aún más obvio: pcworld.com/article/2062740/…
Aesadai
1
Todavía digo que Unity apesta para los juegos en 2D. Para los juegos 2d NO es una calidad profesional para mí, solo compáralo con un motor 2D sólido como Cocos2D-swift. Eso es obvio.
Jonny