Image courtesy of Matthieu Fiorilli

Chasing the Unseen leverages fractal math to generate its environments

Indie Game Developer Matthieu Fiorilli
Founded in 2022 in Montreal, Strange Shift Studio is a one-person independent game studio founded by Matthieu Fiorilli.
Chasing the Unseen is a game about climbing giant creatures and exploring otherworldly environments generated using fractal math. Taking on an ambitious project like that as a solo game developer, I knew I needed the right tools. In this tech blog, I will walk you through an overview of how I approached these challenges for Chasing the Unseen.
 

Tools to empower indie developers have come a long way in the last couple of years, and this kind of project wouldn't have been possible until pretty recently. Thanks to efforts by Epic, SideFX, and others to make these powerful tools available to anyone, this project was made possible.

In order to approach this ambitious project, I knew that I needed the proper tools, and that’s what I found through a symbiosis of Unreal Engine and Houdini.

The creatures

First, let’s look at the creatures and the climbing system.
Image courtesy of Matthieu Fiorilli
In-game screenshot
My creatures are made in Houdini using a variety of tools. Taking the octopus as an example, I use Houdini’s traditional tools to procedurally model it, and then I simulate it using Houdini’s recent multi-solver called Vellum. The simulation gives me very natural and fluid deformations. Then the challenge is to bring that into Unreal Engine and make it climbable. For this task, I leveraged the powerful tool Dem Bones. My octopus simulation in Houdini is heavy; each point of the geometry has its own animation, and it’s not something that can be simply ingested by a game engine at this point. What Dem Bones allows me to do, is to procedurally generate a set of bones and skinning to reconstruct the simulation with game engine-friendly data. That means that instead of having an animation on every single one of my 128,000 vertices/points for the octopus, I can have an animation on about only 600 bones.
Image courtesy of Matthieu Fiorilli
Vellum simulation baked using Dem Bones
I can then bring the creature inside Unreal and have real-time playback. This is where I use a state machine to mix between different animations. Based on the skinning information generated with Dem Bones, I’m able to procedurally generate convex hulls for the collisions, which are then brought into Unreal through custom tooling.
Image courtesy of Matthieu Fiorilli
Collision meshes in Unreal Engine
A lower-resolution mesh is generated and brought into Unreal for the climbing. Using a mix of Blueprint and C++, my climbing system is then able to use the lower-resolution mesh in order to attach the character to the creatures.
Image courtesy of Matthieu Fiorilli
Climbing system using Blueprints and C++

The environments

For the environments, I use fractal math and other procedural techniques. Fractals are these short math formulas generating infinite self-repeating shapes. One of the most well-known is the Mandelbrot set.
Image courtesy of Wikipedia
Mandelbrot set image from Wikipedia
The Mandelbrot set is a 2D fractal named after Benoit Mandelbrot. Years after its discovery, an analogous 3D version was also discovered: the Mandelbulb.

This begs the question, how do you bring fractals into gaming? Through the symbiosis of Houdini and Unreal Engine, I’m able to solve that problem. In Houdini, I am using Juraj Tomori’s graduation project VFX Fractal Toolkit to generate the fractals, and then I developed a pipeline around it to prepare the geometry to make it ready to be ingested in Unreal Engine. This pipeline is used on fractals and other procedural mesh generation methods (depending on the level).
Image courtesy of Matthieu Fiorilli
Fractal meshes generated for a game level
To make the fractals ready for Unreal Engine, a lot of different tasks had to be done: getting rid of very small details, creating flat walkable slopes, splitting the meshes into pieces for proper occlusion in UE, mesh reduction, LOD generation, UVs, and lightmaps, and such. All of this process is automated and tailored to Unreal Engine’s requirements.
Image courtesy of Matthieu Fiorilli
In-game screenshot of one of the levels
Finally, after all these processes are done, the level is constructed in Unreal, and I use the lighting system to bake lightmaps. Since the level is separated into multiple pieces, Unreal Engine’s occlusion system does a great job of only drawing the meshes that we see on camera. UE’s LOD system only draws the meshes with the required density based on camera distance. For the collisions, I generate separate lower-resolution mesh.
Image courtesy of Matthieu Fiorilli
In-game screenshot from one of the game’s levels

Final words

This is an overview of how I deal with the creatures, climbing, and levels in my game. It’s the core workflow I use throughout the game, and when needed, I can introduce different variations per creature or level.

It was quite challenging to come up with solutions to solve the challenges for this project, but working as an indie dev gave me the freedom and flexibility to use the latest tools to make this possible. I hope that this post was helpful in giving you some insight into the project’s technical process, at least from a high level perspective, and to give you some ideas about what’s possible with the tools out there.

Thanks for reading! Chasing the Unseen will release on PC, and you can learn more about the project at www.chasingtheunseen.com.

    Get Unreal Engine today!

    Get the world’s most open and advanced creation tool.
    With every feature and full source code access included, Unreal Engine comes fully loaded out of the box.