Durante nuestra preparación académica estamos obligados en algún momento a cursar alguna materia que involucre matemáticas. Nadie es ajeno a las matemáticas. Una ecuación aquí, algún teorema, sumas de Riemann o derivadas por allá. Muchas personas a lo largo de su preparación pueden preguntarse en qué utilizarán aquellas clases, pues ellos serán abogados, músicos, médicos o periodistas. Pese a que en un principio no te dejen un uso evidente, las matemáticas ayudan a desarrollar el pensamiento abstracto y la optimización de distintos problemas.
Durante el desarrollo de un videojuego las aplicaciones matemáticas envuelven todo el proceso. Se utilizan operadores y símbolos matemáticos para la programación, sin embargo, hace falta tener una noción clara de elementos geométricos, algebraicos y hasta físicos para elaborar un videojuego. A continuación veremos un poco sobre algunas aplicaciones en el videojuego, pero comencemos dando un poco de contexto.
¿Qué son las Matemáticas?
Las matemáticas se encargan de estudiar estructuras de entes abstractos como son los números y sus operadores. Sin embargo, no solo estudia “la naturaleza de los números”; fueron diseñadas para aplicar y ahí tiene su valor más evidente. Las matemáticas aplicadas son aquellas que buscan cuales ecuaciones te ayudan a resolver de manera correcta distintos problemas. La física, la biología, ingeniería y computación son solo ejemplos en los cuales se puede aplicar matemáticas. Un chef riguroso y muy formal tomaría las medidas exactas necesarias para elaborar tal o cual platillo, tal como lo haría un químico para crear mezclas. El simple acto de medir es una acción matemática.
Ahora, es un hecho que los videojuegos las necesitan, veamos entonces un poco del porqué. Si queremos utilizar un arco en The Las of Us veremos cómo se forma una parábola que nos indica la trayectoria de la flecha. Aparte de física para que sea realista el vuelo del proyectil, se calcula con la ecuación de la parábola la distancia a la que llegará o su punto máximo de parábola, esto se hace con las ecuaciones que modelan el tiro parabólico. Damas y caballeros, les presento la ecuación modelo del tiro parabólico:
Y representa la posición del objeto respecto al eje vertical del plano. X respecto al eje horizontal. Si se deseara obtener el alcance máximo de un proyectil se necesitaría obtener el tiempo de vuelo. Este se obtiene igualando a cero la componente vertical del objeto. Es así porque en cero el proyectil estará en el suelo o a una altura cero. Sabiendo lo anterior se sustituye el tiempo t en la ecuación X y listo. Angry Birds es quizás el ejemplo más claro de estas ecuaciones.
Para los físicos, esas serían las ecuaciones que describen el movimiento parabólico. Con esa ecuación se pueden graficar infinidad de parábolas, incluidas aquellas que vemos en los videojuegos. Alguien podría decir que eso es solo en 2D, sin embargo, cuando se dispara en el videojuego se apunta sobre un mismo plano. Esto porque la parábola que describe la flecha puede «dibujarse» sobre un plano compartido entre el arma y el objetivo. Por lo tanto, termina siendo un problema resuelto en dos dimensiones. Ahora, terminada la introducción, entremos en materia.
Stage 1: Variables de Estado
Usualmente en este apartado se utilizan operaciones sencillas: suma y resta. Estas conforman datos que finalmente procesará el HUDS o Head-up Display. El HUDS es todo aquello que vemos en las pantallas de nuestros juegos y nos indican una cantidad o magnitud. En juegos de carreras puede ser la velocidad a la que vamos, en el Advance Wars puede ser la cantidad de ciudades tomadas.
En el ejemplo de las balas se utilizan declinaciones lógicas para el conteo de los proyectiles. Esto podría ser representado como: número_balas= n_balas-m, donde m sería la cantidad de balas disparadas y n la cantidad de balas que tenemos antes de disparar. Dándonos como resultado la cantidad de municiones que nos quedan.
En la imagen anterior obtenida de Halo 5 podemos ver el conteo de balas en ambas armas, los puntos que llevan el equipo azul y el rojo, así como la posición de nuestros compañeros en el radar. Este último con coordenadas polares y con ecuaciones que miden la distancia entre puntos. También podemos ver la cantidad de granadas y la barra de salud y de escudos.
Esta parte es esencial en el gameplay porque nos ayuda a administrar nuestros recursos, así como medir nuestras acciones en una batalla o carrera. Podemos conocer el porcentaje de desgaste de un arma o cantidad de lunas obtenidas. Podemos tomar un papel más agresivo o defensivo dependiendo del rumbo que está tomando la partida. En resumen, las variables de estado nos sirven para decidir cómo actuar en el juego.
Stage 2: Geometría Analítica
Nuevamente hay que dar un poco de contexto. ¿De qué estamos hablando? La geometría se dedica al estudio de la medida de figuras en planos o en el espacio. Cuando hablamos de las curvas hiperbólicas usadas por Gaudí en La Sagrada Familia hablamos de geometría. La simple acción de moverse en un videojuego implica geometría.
Movimientos como el planetario realizados en nuestro espacio, que está en tres dimensiones, pueden ser reducidos a dos si se piensa en los planetas como cuerpos puntuales. La naturaleza elíptica de esta acción permite la facilidad de representarse la trayectoria en un plano. Es esta cualidad geométrica, de reducir la dimensión de los problemas, de gran ayuda para simplificar las cuentas y despejar un poco el campo de trabajo.
En el videojuego siempre se ha utilizado geometría, desde los plataformeros inmortales como Mario Bros hasta el genial Hollow Knight. Como se dijo antes, problemas en 3D pueden ser reducidos a 2D bajo ciertas condiciones. Estas pueden ser:
- Poder representar los cuerpos involucrados como partículas puntuales. Es decir, que el problema no implique necesariamente todas las propiedades físicas del cuerpo.
- No necesitar involucrar el volumen de los cuerpos involucrados.
- Que los cuerpos implicados puedan habitar en el mismo plano.
Un primer buen acercamiento a la materia es el plano cartesiano.
Una coordenada se conforma por pares ordenados, siempre que hablemos en 2D, de la siguiente manera: (x,y). Estas variables pueden tomar cualquier magnitud, tanto positiva como negativa para ubicar a un punto en el espacio.
Lo anterior es importante porque usualmente podemos ubicar a un sprite como un punto. Este punto puede indicar una esquina de la hitbox, de la cual hablaremos más adelante. Ahora bien, matemáticamente hablando, cuando nuestro punto P=(x,y) que representa nuestro sprite se mueve, entonces este punto P cambiaría a P=(x+m,y) si se mueve hacia la derecha. Caso contrario, a la izquierda sería P=(x-m,y), si va hacia arriba P=(x,y+m) y cambiando de signo para ir hacia abajo. De tal manera que si va en diagonal, subiendo y a la derecha, queda P=(x+m,y+n). A este movimiento también se le puede asignar una velocidad. Un ejemplo muy claro de un plano con puntos para ubicar elementos es Advance Wars.
En esta imagen podemos notar en el agua como está cuadriculado el mapa. Esta partición representa cada coordenada del campo de batalla. Cuando se mueve a cualquier elemento del ejército este debe recorrer una cierta cantidad de casillas.
Sin embargo, con saber ubicar un punto en el plano no es suficiente. Siempre hay movimiento en el videojuego, por lo tanto se tienen métodos para calcular la distancia recorrida. Para calcular distancias, en esos juegos en los cuales asignamos un destino y en el HUDS nos muestra cuantos metros nos faltan, se utiliza el famoso Teorema de Pitágoras.
Vamos a recordarlo: El teorema establece que, en un triángulo rectángulo, la suma de los cuadrados de los catetos es igual al cuadrado de la hipotenusa. Este teorema es válido para los triángulos rectángulos, es decir, aquellos con un ángulo de 90 grados o π/2 radianes. Esto está fundamentado y podemos demostrarlo con geometría, sin embargo esto se queda al lector. ¿A alguien se le ocurre?
Muy bien, ¿cómo es que el Teorema de Pitágoras nos ayuda a conocer la distancia? Pues bueno, si tomamos un punto de inicio llamado A y queremos ir a uno de destino B, pues hay un solo segmento de recta que pasará entre aquellos dos puntos. Vamos a ver la imagen de abajo, ahí veremos como claramente se pinta solo el Teorema.
Perfecto, ahora solo faltaría hacer algunas manipulaciones algebraicas, vamos a ubicar en el espacio a nuestros puntos. Estos nos van a quedar A=(10,5) y a B=(5,5) entonces los sumamos entrada con entrada, esto es, sumamos la entrada que pertenece al eje X de ambos puntos y las del Y de ambos puntos, los elevamos al cuadrado y listo, tenemos c2=(10+5)2+(5+5)2
Lo mejor del teorema es que se puede aplicar en cualquier plano y en cualquier número de puntos. De lado izquierdo se puede ver un ejemplo más claro.
Sabiendo lo anterior, revisemos algo de suma importancia para las inteligencias artificiales de los enemigos. Nombren cualquier videojuego y este tendrá enemigos con radios de visión o detección de tu personaje. Los radios de visión son los encargados de «avisar» a la IA del guardia cuando se acerca el jugador. Si tomamos como ejemplo juegos de plataforma, estos tendrían un radio de detección que podría ser representado con un rectángulo o un triángulo. Para juegos en 3D se utilizan figuras sólidas como las esferas o segmentos de esferas. Todas estas figuras geométricas tiene un eje focal, es decir, el punto donde sale la vista o sensor de detección. El perímetro que detecta al jugador podría ser de cualquier figura, no necesariamente algo circular.
En videojuegos en 3D ya veríamos esferas o polígonos ovalados. Estos radios de visión están programados para poder detectar a tu personaje. Se pueden agregar líneas de código para que en el momento en que salga del radio el guardia regrese a su posición o que busque por la zona donde vio al protagonista. Además se pueden agregar comandos para que no se detecte cuando en guardia está de espaldas.
Con el tiempo ha evolucionado la IA de los enemigos, llegando al punto de detectarte si haces mucho ruido al correr. Juegos como Splinter Cell además programaron enemigos que tengan visión nocturna para verte entre las sombras. Al paso de las mejoras, los videojuegos se han hecho cada vez más realistas en esta sección de las mecánicas. Con una pincelada de geometría, nos vamos al siguiente nivel.
Stage 3. Hitbox
Las Hitboxes son el espacio que cubre al sprite y que detecta golpes de todo tipo en el personaje. Estas hitboxes pueden ser literalmente cajas, pero si se tiene un buen motor pueden cambiar hasta ser mallas que cubran al sprite. Teniendo una hitbox de malla se dota de mayor exactitud al juego. Sin embargo, las hitboxes mientras más realistas más recursos consumen.
La hitbox es la que permite la asignación de daño a los sprites así como los puntos de mayor daño. La comunidad de Smash Bros puede utilizar este conocimiento para dañar al contrincante aunque no golpee al sprite, solo con tocar la caja. En Red Dead Redemption 2 podemos ver zonas marcadas en rojo donde haremos un daño crítico. En juegos deportivos como Fifa o Rocket Leage un balón con una mala hitbox dañaría todo el gamplay. Mientras mejor la hitbox, más finas son las mecánicas de colisiones.
Concluyendo esta primera parte, es importante conocer un poco más las implicaciones matemáticas. Muchas veces pueden ser muy intuitivas las acciones que se quieren programar, sin embargo, si no se cuenta con un lenguaje formal para describir lo que se quiere, podemos estancarnos en el desarrollo. Estos pocos ejemplos no terminan de explicar lo que sucede tras bambalinas. En una segunda parte veremos cómo las funciones dictan patrones para oleadas de enemigos. Por otro lado, repasaremos un modo distinto de representar coordenadas y vectores con el plano polar. Finalmente estudiaremos cómo la cinemática, el término físico no cinematográfico, dota de realidad un videojuego. Esta rama de la mecánica se encarga de estudiar colisiones y movimientos, esto ayuda para los videojuegos con golpes mas fuertes que otros o cuando se tienen armas de mayor calibre que otras… pero eso quedará para la próxima.