Pregunta bastante simple: ¿Qué matemática deben tener todos los programadores de juegos para poder tener éxito?
No me refiero específicamente a la representación de las matemáticas ni a nada en las áreas específicas de la programación de juegos, más específicamente, solo cosas que incluso los programadores de juegos deberían saber, y si no lo hacen, probablemente lo encontrarán útil.
Nota: como no hay una respuesta correcta , esta pregunta (y sus respuestas) es una wiki comunitaria.
Además, si desea elegantes ecuaciones matemáticas de látex, no dude en utilizar http://mathurl.com/ .
Respuestas:
Hay muchas otras formas de matemática que son útiles, pero como mínimo absoluto necesita saber estas:
Estos son bastante básicos, pero si no los conoce, ni siquiera tendrá la oportunidad de ser un programador y mucho menos un desarrollador de juegos.
Los objetos en un mundo de juego se representan con vectores. Un vector representa cosas como la posición, la dirección y la velocidad de un objeto. Los cálculos matemáticos de vectores, como el producto de puntos , el producto cruzado y la normalización de vectores son esenciales.
¿Cómo muevo mi objeto de juego? El novicio podría decir:
"¡Lo sé! Solo haré:"
object.position.x++
.No no no. Necesitas usar un cálculo vectorial. El objeto necesita un vector de posición, dirección y aceleración que puede usar para mover el objeto. Si haces lo novato, te quedarás atrapado en un desastre inmanejable, y ¿cómo haces que se mueva en una dirección no alineada con el eje XYZ del mundo?
La razón principal por la que los juegos usan quaternions es porque representan rotaciones casi tan eficientemente en el espacio como los ángulos de Euler, sin sufrir el bloqueo Gimbal . El bloqueo de cardán comienza cuando cualquier ángulo de Euler alcanza una rotación de 90 grados alrededor de cualquier eje: inmediatamente pierde un grado de libertad. Los cuaterniones abordan este problema agregando una cuarta dimensión. Si te quedaste con los ángulos de Euler, tendrías que restringir un eje para que nunca gire más de ~ 89 grados.
Si vas a programar las matemáticas para las respuestas de física en un juego, entonces tomar una clase de física no hubiera sido una mala idea.
Razones por las que necesitará conocer ecuaciones físicas:
Si usa un motor de física (o un motor de juego que tiene el motor de física incorporado), entonces puede evitar saber muy poco sobre física. Aún así, es bastante bueno saber cuándo necesita ensuciarse las manos porque el motor de física no funciona correctamente.
fuente
Sueño con el día en que el desarrollo del juego sea tan impulsado por los datos como la producción artística. No lo veo en ninguna parte del horizonte, así que por ahora saber algo de matemáticas parece ser una necesidad.
La matemática es como la técnica, cuanto más mejor, siempre que pueda aplicarla.
Aquí está el orden de importancia que veo.
Podría seguir adelante. Cuanto más sepa, mejor, pero aprender un montón de matemáticas no significa que va a hacer un gran juego, pero puede ayudar.
fuente
Uno muy básico es el teorema de Pitágoras. También conocida como la fórmula de la distancia.
donde
a
yb
son los bordes de un triángulo rectángulo yc
es la hipotenusa. Esto significa que para encontrar la longitud de un vector, debe hacer esto:Otra nota de interés es que si solo está comparando distancias, no tiene que sacar la raíz cuadrada (que puede ser relativamente costoso). Es por eso que la mayoría de los marcos tienen una función de "distancia al cuadrado" o "longitud al cuadrado" para sus vectores.
fuente
sqrt(V dot V)
es su longitud. Entonces, la distancia entre dos puntos es:sqrt((A-B) dot (A-B))
Incluso si no eres The Graphics Guy, vas a usar vectores y matemáticas de vectores el 80% del tiempo. Son las cebollas de nuestra divertida boloñesa.
fuente
Una sólida comprensión de
+
,-
,*
, y/
. Sin ellos, estás completamente jodido.fuente
Sí, la programación de juegos tiende a ser bastante matemática. Las matemáticas que necesita dependen de en qué esté trabajando. La aritmética básica es imprescindible, por supuesto, tal como lo es en toda la programación. Más allá de eso:
La geometría es vital para cualquier trabajo gráfico. Si desea mostrar cosas en la pantalla, debe comprender los sistemas de coordenadas. Y si desea moverlos en cualquier cosa que no sean las direcciones cardinales, se perderá por completo sin una comprensión sólida de los senos, cosenos y vectores (trigonometría básica). Y si necesita trabajar en 3D, los requisitos de geometría y trigonométricos se vuelven mucho más complicados.
Si quieres modelar cualquier tipo de física remotamente realista, necesitas cálculo para eso. (Es lo que llevó a Newton a inventar cálculo, después de todo).
Cualquier tipo de cálculo de probabilidad requiere conocimiento de estadísticas y teoría de probabilidad para obtener resultados sanos sin cantidades increíbles de prueba y error.
Probablemente hay mucho más, pero eso es lo que me viene a la mente justo en la parte superior de mi cabeza.
fuente
s=u.t + a.t.t/2
. Sin embargo, necesita trigonométrico para obtener la velocidad inicial (u).Por lo menos lo necesitarás.
También querrá tener al menos un conocimiento práctico de las operaciones de Vector, y querrá saber qué es una matriz y para qué se puede usar, aunque los detalles no serán estrictamente necesarios.
Si desea entrar en la programación de gráficos, necesitará mucho más conocimiento matemático, pero hacer programación general de juegos no tiene que ser tan intensivo en matemáticas.
fuente
Sistemas de numeración binarios y hexadecimales , y cómo convertirlos a / desde números decimales.
Aunque generalmente no necesitará trabajar con números binarios sin formato, se usan con frecuencia para variables de indicador, que requieren lógica booleana y desplazamiento de bits.
Hex no es tan importante (a menos que desee procesar 0xDEADBEEF ), pero como mínimo, desearía reconocer cuándo se están utilizando y por qué.
fuente
Boolean
ybinary
confundido. No estoy seguro de que sean absolutamente necesarios para la programación del juego.¿No se mencionan las matemáticas fundamentales de la programación de computadoras? La teoría de grafos, la teoría de números, la teoría de conjuntos y las matemáticas concretas, generalmente todas agrupadas en una clase dolorosa y mal enseñada llamada "matemáticas discretas" en la universidad.
Los "trucos de bits estúpidos" ahorran todo tipo de tiempo de programa (y también suelen ser equivalentes a algunos trucos de cuerda y juegos de trucos), los tipos de gráficos y los recorridos se utilizan por todas partes (incluso si solo está seleccionando contenedores STL), y la complejidad algorítmica es clave para la optimización a medida que los idiomas llegan a niveles más altos.
fuente
Creo que la matriz de pagos es una herramienta bastante esencial. Los juegos a menudo son más divertidos cuando se acercan a un interesante equilibrio de juego limpio de suma cero, y las matrices de pagos le ayudan a cuantificar eso en casos complicados. Supongo que este artículo de Wikipedia es tan bueno como cualquier otro, y tiene el concepto básico necesario en: http://en.wikipedia.org/wiki/Normal-form_game
fuente
Comprenda el producto escalar: si dos vectores tienen aproximadamente la misma dirección (theta <90 grados), entonces el producto escalar es positivo o negativo. Se puede usar para probar siempre que el jugador esté a la vista (suponiendo que el FOV sea de 90 grados).
Y generaliza tu juego 2D a dimensiones más altas. (usar cálculos vectoriales)
Si puede implementar un motor 3D usted mismo, está listo para comenzar.
fuente
Depende de lo que estés haciendo .
Todos los programadores de juegos deben conocer al menos el álgebra de la escuela secundaria. Eso significa:
Sus programadores gráficos deben saber:
Sus programadores de física deben saber:
fuente
Además de senos y cosenos (que el 50-75% de los programadores que he conocido no sabían cómo usarlos), aprenda la función mágica del arco iris y cómo se puede usar para obtener el ángulo de cualquier vector.
fuente
atan2
ya que esto se encarga del manejo del cuadrante por sí mismo.Me sorprende que nadie haya mencionado Quaternions . No tengo mucha experiencia con diferentes motores, pero al menos JME lo usa en todas partes y tuve la impresión de que son un concepto bastante importante.
fuente
Hacer juegos se trata de llevar la vida "real" a la realidad virtual. Es mejor saber más sobre el mundo real / universo que menos :). La matemática es solo una herramienta. Y si está haciendo un plan, también debe dedicar tiempo para estudiar en los planes.
EDITADO: Vi algunos malentendidos :) .. Creo que ese conjunto de adquisiciones de matemáticas que necesita gobernar depende de cosas concretas que desea describir. Nadie lo sabe todo. Y la mejor manera de hacerlo es. No para aprender todo al principio, sino para aprender poco, usar, aprender, usar, etc. Luego, puede hacerlo durante el desarrollo, si tiene un buen plan.
fuente
Respuesta simple: MUCHO!
Respuesta detallada:
¡Álgebra aritmética, elemental y lineal, en la mayoría de los casos Trig, si estás haciendo un juego en 3D, DEFINITIVAMENTE cálculo y física (¡la física requiere cálculo)!
fuente