Technical Artist who worked on A Juggler's Tale Elias Kremer talked in-depth about the development process behind the game, explaining the techniques they used to make the game run better on various platforms.
Hi everyone, I’m Elias Kremer, Technical Artist at kaleidoscube. I joined the team two years ago and was mainly responsible for effects, programming, and porting to Nintendo Switch.
We are a group of four, freshly graduated from Filmakademie Baden-Württemberg, and founded our game studio kaleidoscube during our last year of study. We all met at Filmakademie and even though we studied in different courses (animation and effects, interactive media, technical directing), we already worked together on multiple short films and interactive projects.
A Juggler's Tale
During our second year of studying, we had the opportunity to make a game as our semester project and started working on A Juggler’s Tale. Due to the strong impact of German theatre culture and tales of the Grimm brothers in our childhood, we were inspired to create our own unique fairytale. With this in mind and big games like Inside and Little Nightmares we looked up to, we started to develop our atmospheric sidescroller.
Of course, we finished it in one semester … NOT.
But even though we finished only one of five chapters in that semester, we still wanted to continue working on it. It was a wild ride, with three people spending their gap year to work on the game, always having other, parallel projects at university and corona hitting in, but we somehow managed it.
Now the game is finished and ported for almost every platform (PC, Xbox, PS4, PS5, Switch) and was released 2 days ago, on September 29, 2021.
Defining Art Style
As mentioned before, there are only four people in our core team. We had to make sure we had all the competencies we needed – or better, we had to choose our art style depending on what we could do best.
We had no Concept Artist in the team, which made finding a style a tough challenge. To compensate for the lack of art direction, we got inspired by various artists online and classical paintings. We all have a generalistic background and also some good capabilities in modeling but having in mind that this was our first project with Unreal, we wanted to keep it simple.
In our case this means:
- working with untextured assets
- simple shading
- silhouettes in the background
- clearly separated for-, middle- and background
Of course, those are quite strong limitations, but they helped us to iterate and work fast and efficiently. Almost all the modeling was done by one person so that everyone else could focus on the in-engine work.
Unconventional Scene Dressing
After some early scene dressing tests, we figured out that we can – and – “cheat” in order to show what we wanted to show: big open landscapes, dark forests, steep cliffs, abandoned battlefields, villages, etc. All of this should transition fluently and feel natural, while not having to walk for a long time to get to the next location.
By changing the scale of objects with the distance and compressing the scene towards the camera, we were able to keep the feeling of wide landscapes, while they are actually just a few hundred meters deep.
Different scales of objects to “compress” scenes:
In addition to scaling objects down, we sometimes scaled them bigger. Having big trees in the background allowed us to brighten up the scene and play more with the silhouettes, which adds a more theatrical feel to it.
To make the transition even smoother we needed a system to fade lighting and coloring from one scene to another. Luckily, most of our assets have no textures, which allowed us to change the color inside the shader using vertex colors as masks. In combination with Unreals Material Parameter Collections, it is quite simple to fade all colors without running into performance issues.
Vertex colors used as masks to easily change asset colors:
We created a system similar to the existing post-process volume system in Unreal. Which Color Volume to fade to is decided by the player position and the volumes it overlaps. Additionally to the changing color parameters, we added information for Directional Light, Sky Light, and Fog, that fades along with the colors.
With this system, we can easily change the mood and look of a scene in seconds.
Editing light, fog, and colors:
Video shows colors and lighting change with the player position in the level:
For the foreground, the coloring can be done with the Color Volumes, but the further away the camera is, the actual object colors become less important. In the background, the image is more defined by silhouette shapes than color. To gain control over the colors in the distance, we use Unreal's Volumetric Fog system.
The basic controls available in Unreal let us define global parameters for the fog, which wasn’t enough for our needs. To create more subtle adjustments, we added our Fog Volume system on top. These volumes are basically volumetric cubes with parameters that render additive to the existing global fog and allow us to tweak parts of the screen separately.
Demonstration of our Fog Volumes:
Of course, these volumes can fade colors and intensity with the player's location as well.
Because of the wide-open landscapes, we run into issues with temporal smear and voxel resolution of Unreal's Volumetric Fog. Our technical director added the option to switch to a “fake-volumetric” option, which supports only one directional light rayleigh-scattering but is therefore entirely temporal and voxel-artifact free.
The “fake-volumetric” option was also quite useful for our Nintendo Switch port, where Volumetric Fog is not implemented yet.
I want to end this article with some behind-the-scenes of our clouds, as they are quite unusual compared to other systems.
We first started testing with 2D clouds, which worked okayish but always stood out in our 3D world. We knew that we had to make them 3D at one point and thought about volumetric versions first. Having performance in mind and already struggling with voxel density, we dropped this idea very quickly and tried to model them as meshes.
It turned out this was definitely the right way, as they worked quite well with our Fog Volumes, but they didn’t have the “fluffiness” and soft lighting as intended. To fake it, I remembered a technique normally used for trees and bushes. I manipulated the normals to match a sphere, which softens the lighting on the cloud. This, together with our Fog Volumes, works quite nicely and replaces the 2D system.
After three interesting and educational years, with lots of struggling and creative thinking involved, A Juggler’s Tale” has finally come out on PC, Xbox, PS4, PS5, and Nintendo Switch.
Thanks for reading, hopefully, you found something of interest to you. For more updates and some behind-the-scenes videos, you can follow us on Twitter.