He notado una tendencia de desarrolladores independientes que se alejan de los frameworks y motores, y se mueven hacia el uso de OpenGL desnudo, o el uso combinado con SDL / SFML2. Como desarrollador independiente, no puedo ver lo que OpenGL de bajo nivel puede ofrecer en motores o marcos separados.
La mayoría de los motores y marcos decentes le brindan la funcionalidad que necesita y nunca se interponen en su camino. También pueden abrir la opción de tratar con OpenGL directamente. ¡Algunos incluso ofrecen la funcionalidad para compilar multiplataforma!
Entiendo la aspiración de aprender lo que está sucediendo debajo del capó, pero no veo ninguna ventaja que OpenGL pueda ofrecer a los desarrolladores independientes sobre motores o marcos.
¿Podría explicar el razonamiento detrás de la creación de juegos desde cero usando OpenGL?
Respuestas:
Esta es en gran medida una pregunta / respuesta basada en la opinión, por lo que en realidad no es necesariamente ideal para esta plataforma, pero de todos modos:
¿Por qué no hay framework / motor como indie? Aquí están mis dos centavos:
fuente
¿Ellos? Eso más bien depende exactamente de lo que estás haciendo, gráficamente hablando.
Para muchos tipos de juegos, hay respuestas estándar para preguntas gráficas. El juego 2D promedio, por ejemplo, puede manejarse bien con la destreza 2D de, por ejemplo, XNA / MonoGame. Son solo sprites, que pueden venir en lotes por terreno, pueden rotarse, etc.
Pero, si su juego solía ser un juego 2D promedio, entonces lee sobre alguna técnica genial, como usar un mapa de altura para construir un impostor que tenga la apariencia de profundidad en relación con la pantalla. Y tú quieres hacer eso.
Ahora está empleando el mapeo normal e incluso posiblemente el mapeo de paralaje. Todo en el mismo contexto de "renderizado de sprites", pero requiere más de lo que pueden manejar muchos motores 2D puros. Específicamente, requiere un "sprite bliting" multitexturado, que no es algo que muchos motores 2D puedan hacer.
¿Qué haces si tu motor no puede adaptarse contigo? Eso significa que tienes que hacer múltiples pases, uno para el color y otro para la iluminación a través del mapa normal. Pero eso no funciona, porque necesita el campo de altura del mapa normal para emplear el mapeo de paralaje en la búsqueda de color. ¿Y ahora que? Necesita el alfa para hacer transparencia, por lo que no puede robar el alfa. Y el motor simplemente no admite múltiples texturas.
Por lo tanto, debe elegir uno de los siguientes:
Solo como ejemplo, tome Geometry Wars. La mayoría de los motores 2D succionarían este tipo de imágenes, ya que la mayoría de ellos se basan en dibujar sprites, no en líneas. Es un juego que necesita un tipo de renderizador muy especializado.
Al final del día, debes asumir la responsabilidad de los elementos de tu juego que son importantes para las necesidades de tu juego. Si el aspecto visual de su juego se desarrolla principalmente por el estilo artístico de las imágenes y modelos que usa, en lugar de los efectos específicos, entonces usar una solución preempaquetada está bien. Pero si el estilo visual de su juego se define significativamente por el código de representación personalizado, es muy probable que un motor estándar pueda convertirse en una limitación seria si decide hacer cosas que están fuera de la caja.
Además, hay un problema muy práctico: no todos los motores de juego son igualmente portátiles.
Con el reciente aumento de las plataformas móviles, el mercado de juegos se extiende a través de numerosos sistemas operativos y dispositivos de interfaz de usuario. No todos los motores funcionan en todos los dispositivos. Y si su motor no funciona en una plataforma, ciertamente no se tomará el tiempo para hacerlo funcionar en una. Después de todo, por eso usaste un motor en primer lugar, ¿verdad?
Si es importante para usted que su juego funcione en una plataforma en particular, entonces nuevamente debe asumir la responsabilidad. Y la forma "más fácil" de garantizar el éxito con esto es hacerlo usted mismo. Para construir un motor que pueda funcionar en múltiples plataformas, quizás empleando marcos más simples específicos de la plataforma donde sea necesario para manejar algunos detalles de bajo nivel. De esa manera, si se rompe, es su código; eres la mejor persona para poder solucionarlo.
fuente