Imagen cortesía de Matthieu Fiorilli

Chasing the Unseen aprovecha las matemáticas fractales para generar los entornos

Desarrollador de juegos indie Matthieu Fiorilli |
23 de noviembre de 2022
Fundado en 2022 en Montreal, Strange Shift Studio es un estudio independiente de videojuegos compuesto de una sola persona: su fundador, Matthieu Fiorilli.
Chasing the Unseen es un juego que involucra escalar criaturas gigantes y explorar entornos de otro mundo generados con matemáticas fractales. Para hacer frente a un proyecto así de ambicioso como único desarrollador, sabía que necesitaba las herramientas adecuadas. En este blog sobre tecnología, haré un resumen de cómo me enfrenté a estos desafíos en Chasing the Unseen.
 

Las herramientas que capacitan a los desarrolladores indie han recorrido un largo camino en el último par de años; este tipo de proyecto no habría sido posible hace bien poco. Gracias a los esfuerzos de Epic, SideFX y otros por hacer que estas potentes herramientas estén disponibles para todo el mundo, este proyecto ha visto la luz.

Para poder abordar un proyecto tan ambicioso, sabía que necesitaba disponer de las herramientas adecuadas, y lo conseguí gracias a una simbiosis de Unreal Engine y Houdini.

Las criaturas

Primero, echemos un vistazo a las criaturas y al sistema de escalada.
Imagen cortesía de Matthieu Fiorilli
Captura de pantalla del juego
Mis criaturas están hechas con Houdini usando una variedad de herramientas. Pongamos el pulpo como ejemplo. Usé las herramientas tradicionales de Houdini para modelarlo procedimentalmente y luego lo simulé usando el solucionador múltiple más reciente de Houdini: Vellum. La simulación proporciona deformaciones muy naturales y fluidas. El siguiente desafío fue llevar eso a Unreal Engine y convertirlo en una estructura escalable. Para ello, aproveché la potente herramienta Dem Bones. La simulación del pulpo en Houdini pesa mucho; cada punto de la geometría tiene su propia animación, no es algo que un motor de juego pueda adoptar sin más ahora mismo. Lo que me permite Dem Bones es generar procedimentalmente un conjunto de huesos y piel para reconstruir la simulación con datos adecuados para el motor de juego. Eso significa que, en lugar de tener una animación en cada uno de los 128 000 puntos o vértices de mi pulpo, podía contar con una animación de unos 600 huesos.
Imagen cortesía de Matthieu Fiorilli
Simulación de Vellum incorporada usando Dem Bones
Puedo llevarme a la criatura a Unreal y jugar con ella en tiempo real. Y aquí es donde uso una máquina de estado para mezclar animaciones diferentes. Basándome en la información de la piel generada con Dem Bones, puedo generar contornos convexos procedimentalmente para las colisiones que llevo luego a Unreal a través de una herramienta personalizada.
Imagen cortesía de Matthieu Fiorilli
Mallas de colisión en Unreal Engine
Se genera una malla de baja resolución que se lleva a Unreal para la escalada. Combinando blueprints y C++, mi sistema de escalada puede usar la malla de baja resolución para anclar el personaje a las criaturas.
Imagen cortesía de Matthieu Fiorilli
Sistema de escalada que usa blueprints y C++

Los entornos

Para los entornos, usé matemáticas fractales y otras técnicas procedimentales. Los fractales son fórmulas matemáticas cortas que generan formas que se repiten en sí mismas de manera infinita. Uno de los más conocidos en el conjunto de Mandelbrot.
Imagen cortesía de Wikipedia
Imagen de Wikipedia del conjunto de Mandelbrot
El conjunto de Mandelbrot es un fractal 2D que recibe el nombre de Benoit Mandelbrot. Años después de su descubrimiento, se reveló también una versión análoga 3D: el Mandelbulbo.

Todo esto nos lleva a la siguiente pregunta: «¿Cómo se incorporan fractales en un juego?». Fui capaz de resolver ese problema a través de la simbiosis de Houdini y Unreal Engine. En Houdini, usé el proyecto de graduación del kit de herramientas fractales de VFX de Juraj Tomori para generar los fractales y luego desarrollé un proceso que preparase la geometría para que Unreal Engine la aceptase. Este proceso se usa en fractales y otros métodos de generación de mallas procedimentales (en función del nivel).
Imagen cortesía de Matthieu Fiorilli
Mallas fractales generadas para un nivel del juego
Para preparar los fractales para Unreal Engine, tuve que realizar un montón de tareas: eliminar los detalles más diminutos, crear laderas planas por las que se pudiera caminar, dividir mallas en piezas para una oclusión correcta en UE, reducir mallas, generar LOD, UV, mapas de luz y demás. Todo este proceso está automatizado y hecho a medida para los requisitos de Unreal Engine.
Imagen cortesía de Matthieu Fiorilli
Captura de pantalla de uno de los niveles del juego
Por último, una vez completados todos estos procesos, construí el nivel en Unreal y usé el sistema de iluminación para incorporar mapas de luz. Como el nivel se divide en varias piezas, el sistema de oclusión de Unreal funciona de perlas, ya que solo dibuja las mallas que se pueden ver en cámara. El sistemas de LOD de Unreal solo dibuja las mallas con la densidad necesaria basándose en la distancia con la cámara. Para las colisiones, genero mallas de baja resolución independientes.
Imagen cortesía de Matthieu Fiorilli
Captura de pantalla de uno de los niveles del juego

Comentarios finales

Este es un resumen de cómo lidié con las criaturas, la escalada y los niveles en mi juego. Es el proceso básico que uso en el juego y, cuando es necesario, puedo introducir variaciones diferentes para una criatura o nivel.

Encontrar soluciones para resolver los desafíos de este proyecto no fue nada fácil, pero trabajar como desarrollador indie me dio la libertad y flexibilidad necesarias para usar las herramientas más novedosas y hacerlo posible. Espero que esta publicación haya sido útil a la hora de entender el proceso técnico del proyecto, al menos desde una perspectiva de alto nivel, y que sirva de inspiración para crear con las posibilidades que ofrecen las herramientas del mercado.

¡Gracias por leerme! Chasing the Unseen estará disponible en PC. Encontrarás más información sobre el proyecto en www.chasingtheunseen.com.

    ¡Hazte ya con Unreal Engine!

    Consigue la herramienta de creación más abierta y avanzada del mundo.
    Unreal Engine incluye todas las funciones y acceso ilimitado al código fuente,
    ¡listo para usar!
    ¡Unreal Engine 5.1 ya está disponible!
    Noticias
    15 de noviembre

    ¡Unreal Engine 5.1 ya está disponible!

    Esta versión aprovecha el innovador abanico de funciones disponible en UE5 y añade un mayor nivel de solidez, eficiencia y aplicación en múltiples sectores. Descubre las novedades. 
    ¡Unreal Engine 5.1 ya está disponible!
    Noticias

    ¡Unreal Engine 5.1 ya está disponible!

    Esta versión aprovecha el innovador abanico de funciones disponible en UE5 y añade un mayor nivel de solidez, eficiencia y aplicación en múltiples sectores. Descubre las novedades. 
    Unreal Engine 5.1 ofrece nuevas funciones para cine, locuciones, animaciones y eventos en directo
    Noticias
    3 de noviembre

    Unreal Engine 5.1 ofrece nuevas funciones para cine, locuciones, animaciones y eventos en directo

    Unreal Engine tiene herramientas más completas, fiables y accesibles para procesos de contenido multimedia y entretenimiento de todo tipo, desde la producción virtual con efectos visuales en cámara hasta proyectos de animación o retransmisiones y eventos en directo dinámicos. Echa un vistazo a las novedades.
    Unreal Engine 5.1 ofrece nuevas funciones para cine, locuciones, animaciones y eventos en directo
    Noticias

    Unreal Engine 5.1 ofrece nuevas funciones para cine, locuciones, animaciones y eventos en directo

    Unreal Engine tiene herramientas más completas, fiables y accesibles para procesos de contenido multimedia y entretenimiento de todo tipo, desde la producción virtual con efectos visuales en cámara hasta proyectos de animación o retransmisiones y eventos en directo dinámicos. Echa un vistazo a las novedades.
    Introducción de Nanite en el capítulo 4 del modo <em>Battle Royale de Fortnite </em>
    Tecnología
    26 de enero

    Introducción de Nanite en el capítulo 4 del modo Battle Royale de Fortnite

    Mediante el nuevo rasterizador programable de Nanite en Unreal Engine 5.1, descubrirás cómo aprovechar características como la compensación de la posición en el entorno (World Position Offset), la compensación de la profundidad del píxel (Pixel Depth Offset), los UV personalizados, etc. Puedes ver el sistema al completo en acción en el capítulo 4 del modo Battle Royale de Fortnite.
    Introducción de Nanite en el capítulo 4 del modo <em>Battle Royale de Fortnite </em>
    Tecnología

    Introducción de Nanite en el capítulo 4 del modo Battle Royale de Fortnite

    Mediante el nuevo rasterizador programable de Nanite en Unreal Engine 5.1, descubrirás cómo aprovechar características como la compensación de la posición en el entorno (World Position Offset), la compensación de la profundidad del píxel (Pixel Depth Offset), los UV personalizados, etc. Puedes ver el sistema al completo en acción en el capítulo 4 del modo Battle Royale de Fortnite.