¿Por qué se enfatiza un motor como Unity3D sobre una biblioteca nativa como OpenGL para principiantes? [cerrado]

25

Solo soy un principiante en juegos 3D, mi plataforma preferida es Android. Publiqué una pregunta en otro foro sobre "¿Qué usar: OpenGL o Unity3d?" Todos enfatizaron Unity3D y el uso de sus funciones y herramientas integradas, que tendría que codificar yo mismo si tuviera que usar OpenGL. Pero alguien dice que la mayoría de los juegos complejos requieren motores personalizados. ¿Por qué usaría un motor como Unity3D sobre OpenGL?

Aman Grover
fuente
15
Dos palabras: gratificación instantánea. Puede hacer algo "útil" con unidad sin saber mucho, mientras que poner en marcha una aplicación OpenGL requiere bastantes líneas de código y comprender una amplia gama de conceptos.
Jari Komppa
55
Quizás podamos explicarlo en este hilo y todas las preguntas de "qué tecnología debo usar" desaparecen para siempre. también quiero un unicornio
jhocking
8
"La mayoría de los juegos complejos requieren motores personalizados" . En realidad, una cantidad sorprendentemente grande de juegos AAA altamente exitosos se construyen en motores comunes como el motor Unreal .
Philipp
2
Además de eso, un principiante no podrá hacer un juego lo suficientemente complejo como para necesitar un motor personalizado de todos modos.
Christian
Esto acaba de aparecer en Gamasutra, y aunque no es directamente una respuesta a esta pregunta, es relevante: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - en particular, será muy difícil para un proyecto desde el que se construye desde cero con OpenGL para ser un primer proyecto "modesto".
Steven Stadnicki

Respuestas:

30

Creo que ya has respondido esta pregunta tú mismo. Dijiste "Solo soy un principiante en los juegos 3D" . Además dijiste "... Unity3D y usando sus funciones y herramientas integradas, tendría que codificarme si tuviera que usar OpenGL" .

Esencialmente, esto significa que si está utilizando OpenGL solo, va a escribir un motor de juego y, potencialmente, años más tarde, escribirá su juego. Si quieres concentrarte en un juego, utiliza los recursos disponibles para acercarte lo más posible a ese objetivo. Usar un motor de juego es la mejor manera de enfocar tus esfuerzos en crear un juego, en lugar de escribir todo lo necesario para crear un juego.

Vea esta pregunta relacionada: ¿Cuál es la diferencia entre una Biblioteca y un Motor y este? ¿Qué es un marco de juego versus un motor de juego?

MichaelHouse
fuente
¿Entonces OpenGL es solo para gráficos y unity3d es un marco completo que tiene requisitos gráficos y físicos para mi juego?
Aman Grover
1
La unidad es mucho más que eso, pero sí, esa es la diferencia.
jhocking
3
@AmanGrover: también tenga en cuenta que con GL "solo para gráficos" es realmente "solo para enviar comandos a la GPU". El programador todavía tiene que hacer todo el trabajo duro de los gráficos, mientras que Unity tiene todas las características y algoritmos gráficos importantes incluidos y listos para usar.
Sean Middleditch
2
No escribas motores, escribe juegos. Eso es lo que me han dicho que me acerque. Lo que quiero decir es que alguien crea un motor de juego mientras tú creas el juego real. Entonces ese es el punto en el que no estoy de acuerdo con Byte.
LaVolpe
28

Porque los principiantes, por definición, no saben lo que están haciendo .

OpenGL tiene una gran curva de aprendizaje. Claro, puede emitir algunos comandos de glBegin, entusiasmarse por poner algunos triángulos en la pantalla, y luego salir del extremo profundo con algo más complejo que aún no está listo para asumir. Esa no es una excelente manera de aprender. Una analogía (ligeramente exagerada) podría ser aprender algo de física básica de la escuela secundaria y luego ser puesto a cargo del Gran Colisionador de Hadrones. No es hundirse o nadar, es nadar o dejar un gran agujero radiactivo en el suelo.

Se supone que la mayoría de la gente pregunta "Quiero hacer un juego, ¿qué debo usar?" la pregunta realmente quiere hacer un juego (de lo contrario, ¿habrían hecho una pregunta diferente, sin duda?) Entonces, la respuesta se adapta a la pregunta, y el uso de un kit de herramientas, marco o motor preexistente es una forma de ayudarlos a alcanzar esa ambición sin distraerse agonizando sobre si las llamadas UBO o glUniform son preferibles para actualizar una única matriz.

Esto se trata de dar un paso a la vez, facilitar el proceso de aprendizaje y darle algo gratificante al final. Tratar de aprender cómo hacer un juego y cómo usar correctamente una API 3D madura y poderosa al mismo tiempo es probablemente demasiado para un principiante. Esto es como el efecto Dunning-Kruger menos las connotaciones negativas. No sabes lo que no sabes, así que realmente no tienes ningún tipo de imagen realista de exactamente lo que estarías tomando.

Por otro lado, si tu objetivo es aprender OpenGL, ¡entonces no quieres hacer un juego! Desea aprender OpenGL, y hacerlo en el contexto de hacer un juego puede ser una forma divertida de aprender, pero hacer un juego es un medio para un fin, no un fin en sí mismo (y ciertamente no es la única forma de aprender OpenGL ) Probablemente nunca lo lanzará, y casi definitivamente lo recordará en unos años y se sentirá terriblemente avergonzado por algunas de las estupideces que hizo.

Maximus Minimus
fuente
22

Realmente depende de lo que quieras obtener de este proyecto. Si tu objetivo principal es concentrarte en el diseño del juego, entonces probablemente estés mejor con un motor preconstruido, porque eso te llevará a la parte de creación del juego mucho más rápido. Si su objetivo es aprender sobre la parte de programación de hacer juegos (especialmente si está tratando de prepararse para un trabajo en la industria), entonces probablemente encontrará que trabajar con OpenGL será una experiencia más valiosa. Tenga en cuenta que ninguna de las afirmaciones anteriores es verdadera el 100% del tiempo.

Realmente no hay una regla al decidir sobre este tipo de cosas. La mayoría de las respuestas que escucha en ese tipo de preguntas son opiniones, y muy pocas de ellas serán completamente relevantes para su propio proyecto y conjunto de habilidades.

RyNo
fuente
Gracias, y sí, estoy buscando un trabajo en esta área, así que iré con OpenGL.
Aman Grover
99
Estoy totalmente en desacuerdo con que trabajar con OpenGL 'desnudo' será más valioso para alguien que ingrese a la industria de los juegos. Unity ofrece un excelente ejemplo de un motor de juego moderno y relativamente maduro; Comprender la funcionalidad que proporciona (con miras a aprender cómo puede proporcionar una funcionalidad similar usted mismo) es una excelente manera de comprender el proceso de desarrollo del juego en sí mismo, mientras que OpenGL está lejos de ser específico del juego en cualquier sentido significativo.
Steven Stadnicki
Esto solo muestra cómo realmente no hay una regla sobre estas cosas, solo opiniones. Todo depende de lo que necesitas / quieres.
jhocking
55
@AmanGrover - ¡entonces no hagas un juego! Te resultará más fácil aprender una cosa a la vez. Haz un simulador de sistema solar. Aprende a dibujar primitivas básicas, aprende a traducirlas y rotarlas, coloca los planetas en un VBO para dibujarlas más rápido, usa algunos sombreadores para hacer nubes animadas sobre ellas y estás a una buena distancia para comprender los fundamentos.
Maximus Minimus
3
@KamikazeSoctsman Nuevamente, no estoy de acuerdo aquí. No digo que OGL sea inútil, ¡ni mucho menos! - pero en la última década he usado mi conocimiento de OpenGL solo unas pocas veces en breves instantes. Por el contrario, debido a que los motores de gráficos de juegos tienden a ser tan sensibles al rendimiento, en mi experiencia son uno de los lugares menos comunes para que comience un nuevo programador. Debes conocer las matemáticas en 3D, absolutamente, y debes entender los principios de renderizado, pero eso es algo muy diferente de aprender OGL.
Steven Stadnicki
6

La diferencia es simple. La unidad es un carro con cuatro ruedas redondas que pueden llevarte a lugares. OpenGL es aserrín que podría instalar una tienda y potencialmente usar para moldear un carro y ruedas mejorados y más modernos. Es decir, si invierte muchas horas de su tiempo en aprender lo que las personas antes hacían primero.

Su objetivo como principiante debe ser primero estudiar los carruajes existentes y sus diseños. No tiene sentido tirar todo por la ventana y comenzar desde cero. Primero aprenda lo que ya existe y obtenga un conocimiento profundo de ello. Si no lo hace, ¿cómo sabe de sus limitaciones y si no conoce las limitaciones, cómo podría superarlas? ¿Cuál es el punto de hacer algo mediocre que sea inútil e ignorante de todas las vibrantes herramientas existentes que ya están disponibles?

En mi opinión, los pasos de un desarrollador de juegos incipiente son:

  1. Domina un marco / motor moderno y obtén una comprensión profunda del mismo (esto también te ayudará a aprender los diferentes aspectos del diseño del juego, los gráficos y OpenGL no son todo lo que hay).
  2. Haz un pequeño juego con él y aprende más en el proceso.
  3. Encuentra orgánicamente obstáculos y limitaciones en el motor.
  4. Aprende más sobre el tema.
  5. Trabaja para mejorar las áreas que consideres que necesitan mejorar.

Trabajar solo para hacer algo que ya se ha hecho no lo convertirá en un desarrollador valioso para nadie porque no será productivo en verdad o un buen alumno para el caso, simplemente copiará los fragmentos de código existentes y tal vez aprenda a léelos y entiéndelos. Como dice el viejo dicho de Pokémon, "No es muy efectivo ...".

La peor parte es que este tipo de enfoque no es fácil de seguir porque no hay satisfacción en él, por lo que se está ejecutando con fuerza de voluntad cruda, que ha sido científicamente demostrado que es un recurso limitado para los seres humanos. Debe hacer algo que le brinde gratificación diaria o su voluntad probablemente no podrá continuar.

En resumen, se enfatiza un motor porque puede hacer las cosas con un motor y es mucho más probable que tenga éxito de esa manera. Incluso los grandes creadores de juegos confiaron en el trabajo previo de otra persona y esa es la naturaleza del progreso. Debes comprender el panorama general y saber cómo jugar con las piezas de Lego proporcionadas por otros antes de hacer tus propias piezas de Lego personalizadas.

Wolfdawn
fuente
4

Suponiendo que su objetivo es crear un juego, el tipo que habló sobre la necesidad de motores personalizados estaba equivocado. En todo caso, los juegos complejos requieren un motor maduro que ha sido diseñado, implementado, optimizado, probado y mantenido por profesionales que han estado en la industria durante mucho tiempo, o uno que pueda igualar su calidad (al menos para los propósitos de un juego determinado) , si eso es posible.

Los grandes desarrolladores de juegos construyen motores internos, pero aún los reutilizan en gran medida para sus futuros juegos. Pero tenga en cuenta que sus presupuestos y tamaños de equipo y muchos otros factores son muy diferentes a los de los desarrolladores independientes: puede tener mucho más sentido comercial para ellos construir su propio motor, incluso si los existentes no se quedan cortos tecnológicamente.

Por supuesto, todavía existe la idea errónea, ya que muchas características no existen de forma inmediata en los motores existentes, que no se pueden implementar en ese motor, pero eso generalmente es inexacto.

Ten en cuenta que algunos de los juegos modernos más innovadores, como Portal y Antichamber, se construyeron utilizando motores existentes. Algunos juegos en línea bastante complejos, como Aion y TERA, se construyeron utilizando motores existentes. Algunos de los juegos visualmente más hermosos, como Bioshock Infinite y Thief, se construyeron con motores existentes. Y, por supuesto, algunos no. Pero el punto es: nada de lo que he visto realmente requería un motor personalizado.

Por otro lado, si su objetivo es aprender conceptos de programación gráfica, por supuesto, OpenGL es el camino a seguir. Pero incluso entonces, tenga en cuenta que estar familiarizado con algunos motores existentes lo ayudará enormemente a comprender lo que está haciendo y a qué debe apuntar.

TC
fuente
1
-1. Grandes afirmaciones sobre la industria del juego. La mayoría de ellos son inexactos. Desearía poder rociar tu publicación con una docena de citation neededs
Panda Pyjama
1
@PandaPajama Hay casi una sola afirmación sobre la industria del juego en mi respuesta. Si te molesta mucho, puedes corregirlo o incluso eliminarlo por completo.
TC
Mi experiencia (limitada) me ha demostrado que si hay algo sobre lo que uno no puede hacer generalizaciones es sobre la industria del juego. Cada compañía tiene una forma diferente de ver las cosas, incluso diferentes equipos dentro de una compañía pueden tener políticas muy diferentes sobre todo. En este caso particular, los motores internos generan costos y aportan algunas ventajas y desventajas. Si el resultado neto es ahorro o gasto es extremadamente difícil de calcular y variará de un proyecto a otro. Además, el presupuesto, si bien es importante, no es el único elemento que se tiene en cuenta al hacer juegos.
Panda Pyjama
@PandaPajama Concedido, mira mi edición. Simplemente he dicho que puede tener más sentido comercial para ellos en general, lo que incluye el factor de presupuesto y cualquier otra cosa que ayude a dar forma a su decisión, señalando que puede no ser una limitación técnica de los motores existentes.
TC