Al ser un programador de aplicaciones centradas en web y DB, tengo conocimiento en estructuras de datos como listas, árboles, gráficos, etc. Honestamente, uso muy poco de estos algoritmos de estructura de datos en mi codificación, excepto para ordenar cosas en matrices simples, ya que Trabajó casi por completo con marcos orientados al cliente donde se incorporaron todas las funciones principales. Sé C, PHP, Java, HTML, PL / SQL y MySQL. Actualmente estoy aprendiendo Python.
Quiero comenzar con el desarrollo del juego. He visto otras preguntas sobre sugerencias, consejos y enfoques para el desarrollo de juegos para principiantes. Entiendo estos puntos, y estoy claro con las respuestas. Unos días después de publicar, leí el artículo Escribir juegos, no motores , y me di cuenta de que debía implementar un juego antes de crear un motor de juego. Aún así, tengo preguntas.
Mi objetivo es
- Mejorar mis habilidades de programación de nivel básico, incluido el uso de algoritmos de estructura de datos, conceptos matemáticos y físicos.
- Implemente un buen motor de juego, para disfrutar de la codificación de nivel central.
- Para abrirme camino en el campo de la investigación de IA.
¿Cuáles son las matemáticas, la física, la IA y los conceptos generales específicos que un programador debe conocer para desarrollar un motor de juego?
fuente
Si bien puede ser válido preguntar qué estructuras de datos se usan más en el desarrollo del juego, es mucho más válido preguntar qué estructuras de datos se usan para problemas específicos. Puedo afirmar fácilmente que las tablas hash son muy comunes en los juegos, pero eso no le diría nada útil en términos de cuándo y dónde usar (¡y no usar!) Una tabla hash en su propio código. :)
En términos de matemáticas, debe tener una comprensión muy sólida del álgebra lineal (vectores, matrices, resolución de sistemas lineales, etc.), una comprensión muy fuerte de la trigonometría y al menos una comprensión básica del cálculo (derivadas simples e integración) . Cualquier curso introductorio de álgebra lineal de nivel universitario debería ubicarte en el camino correcto, si no te enseñará todo lo que necesitas saber para comenzar a trabajar con los principios comunes de gráficos en 3D. También enlace un libro debajo del cual puede encontrar bastante útil.
Para la física, te espera un aventón. La física se puede dividir en dos categorías diferentes: detección de colisión y respuesta de colisión. Debe saber absolutamente la matemática detrás de la detección de colisión, ya que esa matemática es más o menos idéntica a lo que necesita para hacer gráficos (especialmente para construir los árboles y mapas que necesita para la oclusión), y va a usar esas cosas para un mucha de tu lógica de juego también.
La respuesta de colisión puede variar de niveles "simples" a niveles de complejidad ridículos, e incluso las cosas simples pueden ser no intuitivas al principio. Recomiendo encarecidamente que deje esas cosas en una biblioteca existente como Bullet, Havok, PhysX, etc. (o Box2D si está trabajando en juegos 2D) hasta que se sienta cómodo con sus matemáticas y algoritmos existentes conocimiento y decidir que desea aprender cómo funcionan los motores de física. Entonces te recomendaría que construyas un motor de física 2D muy simple como primer intento. Los motores de física 3D son bestias increíblemente complejas y son (posiblemente) la parte más complicada y difícil de la programación de juegos, por lo que los motores de física son la tecnología de terceros con licencia más utilizada en los juegos. Simplemente no ves muchos juegos que no son t usando Havok o PhysX en el mundo profesional, a pesar de la cantidad de juegos que tienen motores gráficos y código de motor interno desde cero. Incluso las empresas que no hacen nada más que construir motores de juegos suelen licenciar un motor de física, por ejemplo, Unreal solo usa PhysX en lugar de incluir su propio motor de física.
Recomendaría los siguientes libros para comenzar. El primero es un libro de nivel introductorio sobre las matemáticas básicas que necesita saber como programador de juegos en 3D:
http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869
El segundo es un libro detectado para algoritmos de detección de colisión (¡no respuesta de colisión!) Que ayudará tanto con su codificación gráfica como con su codificación física:
http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323
fuente