Como Hamptem usa la matemática avanzada


El tema de la Jam era "para siempre". Cuando salió, estábamos todos en Discord, y con nuestra formación, se nos ocurrió el tema de conducción en una cinta de Möbius. Una cinta de Möbius es una cinta que solo tiene una cara, y, por lo tanto, si la intentas recorrer como hace Hamptem, has visitado toda la cinta y has vuelto al mismo punto. Por contexto, si se intenta hacer lo mismo con un cilindro,  te quedas en el mismo lado. Por tanto, la cinta se suele utilizar como un símbolo de lo eterno.

Sin embargo, trabajar en un objeto de este tipo presenta problemas técnicos serios. La cinta de Möbius no tiene un arriba y abajo para toda la cinta, porque se puede pasar de arriba a abajo recorriendo la cinta. Se suele decir que es no orientable. 

Hacer un modelo de la cinta e importarlo al motor no resultó útil, porque después el movimiento del personaje se tenía que utilizar un método distinto de todos modos. Así que recurrimos a la geometría diferencial:

Lo que al principio iba a ser solo para las coordenadas del jugador se usó para generar el mesh en el mismo motor con una parametrización. Como Hamptem se mueve fijado a la superficie, solo se usan dos coordenadas, u y v, en vez de las (x, y, z) del espacio 3D, y la parametrización es lo que nos lleva de nuestras coordenadas simplificadas (u, v) a (x, y, z). Según nuestra parametrización, la cinta, y de hecho, cualquier superficie, tendrá una forma distinta (a grandes rasgos).  Todo este trabajazo lo hizo Blessed, y lo hizo de una manera que después nos permitió cambiar la parametrización de forma muy sencilla.

A un nivel más técnico, esta parametrización (que encontramos y modificamos levemente),  es extraordinaria porque resuelve el problema de que no tenga un arriba y un abajo: cubre la cinta dos veces, una para cada dirección, a lo que se le llama doble cobertura. Esto no lo pensamos con anterioridad, pero se podría haber cargado el proyecto de arriba a abajo, porque después necesitábamos calcular esta dirección perpendicular a la cinta, y pese a que esta se puede calcular bien en cada punto, nos podríamos haber encontrado que esta dirección no fuese continua, haciendo así que Hamptem cambiase de lado cuando completase una vuelta y la chapuza que tendríamos que haber hecho no tendría nombre.

Al final ,  Churro encontró otra parametrización con muchísimo sudor, que encima vista desde arriba tenía forma de infinito.


Una salvajada que no tiene nombre, ecuaciones desagradables de ver pero con un resultado alucinante, y moverse por la cinta era genial, se veía espectacular.

Aquí entran más problemas todavía. Resulta que las superficies no orientables, como es nuestro caso,  son una putada para sacar los UV. A grandes rasgos, los UV son lo que nos permite pintar la cinta, porque no queríamos una cinta del mismo color todo el rato. Este fue mi trabajo. Me cargué los UV y lo hice usando la posición de la cinta en el espacio, con lo que se genera la textura proceduralmente (no me hago responsable del efecto en PCs patata).

Como ya habíamos decidido que el juego sería de ir a alta velocidad, la cámara era clave. Aquí entra el grande de Rayo, quien consiguió que no te marees,  que considero que era especialmente difícil, especialmente en el cambio de arriba a abajo.


En este DevLog he omitido muchos detalles y me he centrado en el apartado técnico, pero obviamente hubo partes del desarrollo, no técnicas, que son las que hace que el juego tenga vida: música y SFX por Jaume, que ha hecho completas locuras, UI y modelos, por Tomboygotchi, que tiene la culpa de que haya salido tan mono Hamptem, y el Game Design por Adrián, quien tuvo que pararnos los pies al equipo técnico porque nos íbamos calentando más cuantas más cosas nos salían, y era fácil olvidarse que el juego no era un visualizador de cintas de Möbius.

Files

HampterSavesTheWorld.zip 62 MB
61 days ago

Get Hamptem The Hamster

Leave a comment

Log in with itch.io to leave a comment.