Comencé a escribir un motor de juego muy simple para poder aprender OpenGL 3.x mejor, pero debido a mi inexperiencia y mi escaso conocimiento de cómo debería diseñarse un juego 3D, generalmente me meto en problemas cuando me doy cuenta de que debería haber diseñado mis clases. diferentemente. Otros problemas a los que me enfrento es cómo hacer un seguimiento del tiempo de manera concisa en el juego y actualizar el movimiento según sea necesario y cómo decirle al renderizador que necesita volver a dibujar. También sigo necesitando realizar funciones Get y Set para pasar varias banderas de un objeto a otro, ¿es una mala práctica?
Entonces, como dice el título, estoy interesado en cualquier libro o artículo / tutorial y fuente que pueda ayudarme y explique algunos patrones de diseño comunes en el diseño del juego (es decir, controladores de estado del juego, fuentes, etc.).
Por cierto, todavía estoy usando Freeglut, ¿recomendaría que me mude a un mejor sistema de ventanas antes de progresar o después de obtener una mejor comprensión de OpenGL?
fuente
Respuestas:
Escribiré una respuesta adecuada ya que estuve en tu etapa hace aproximadamente 2 meses.
No te preocupes por eso. Con su falta de experiencia, nunca podrá pensar en todas las posibilidades y formas en que se utilizará una clase determinada en su motor. Es mejor si considera las características principales de la clase, la implementa y la reestructura más tarde. No intentes pensar demasiado, estarás perdiendo el tiempo en esta etapa. Mi primer juego fue un completo desastre, estoy seguro de que fue el caso para la mayoría de las personas.
Lo que necesitas es saber qué es un bucle de juego. Este es un buen lugar para comenzar. Una vez que comience a escribir código más complejo, como el manejo de la física, es posible que desee considerar bucles con tiempos de fotogramas variables, pero comience con poco. Un bucle de juego de marco fijo simple debería ser suficiente por ahora.
Esta es más una pregunta de ingeniería de software. Con el tiempo verá qué datos necesita proteger y cuáles son seguros. Probablemente sea mejor si solo implementa una función y luego ve lo que no está expuesto fuera de ella y puede tratarse como datos públicos.
Todo es cuestión de experiencia. Escribirás una clase de cámara, luego verás qué funcionalidad quieres de ella al lado de las matrices de transformación. Si desea algún consejo inmediato, debo decir, implemente huesos desnudos, extienda más tarde.
Artículos y libros:
Estos libros hablan sobre la arquitectura de los motores y las tuberías de juegos modernos. Le darán una buena visión general de la tecnología subyacente. Recomiendo el primer libro si tiene que elegir, es menos "sesgado" hacia ciertas tecnologías, aunque al final es probable que desee obtener ambas, ya que son excelentes fuentes de conocimiento.
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/papers/collision/collision.pdf
(Estoy vinculando esto porque me resultó difícil encontrar artículos sobre cómo se realiza la detección de colisión 3D adecuada).
Hay más libros, pero cuando hayas terminado con esto (especialmente la arquitectura de Game Engine), sabrás mejor lo que quieres.
WinAPI, si siente que tiene tiempo y ganas de aprender programación de Windows (si está desarrollando para Windows). FreeGLUT está bien para aprender, pero eventualmente querrás más funcionalidad. Sin embargo, si desea tomar la ruta completamente diferente, puede iniciar OpenGL con bibliotecas como SFML o SDL. Quédate con FreeGLUT, a menos que seas terco como yo. Fui directo a WinAPI.
fuente