What are you looking for?
Case studies

Illuminating Harold Halibut's underwater world

Jul 25, 2024|8 Min
Harold Halibut by SLOW BROS. – Made With Unity

Learn how SLOW BROS. used the latest HDRP graphics tech from Unity 6 to build a visually stunning game that’s been years in the making.

The challenge:
Creating realistic, optimized lighting for physical objects imported into Unity
Project staff:
12
Platforms:
PlayStation®5, Microsoft Windows, Xbox Series X|S
Location:
Cologne, Germany

How does a small team create a detail-rich world that performs across platforms? SLOW BROS.’s Harold Halibut is a unique narrative adventure built from handmade objects. Each of the game’s dozens of characters and scenes started as a sculpture or diorama before being imported into Unity, and even the 2D assets – particles, decals, and 2D animations – are hand-drawn.

To preserve the visual quality of these assets in-Editor, SLOW BROS. renders Harold Halibut’s graphics using the High Definition Render Pipeline (HDRP). Unity’s graphics team worked with SLOW BROS. to test several Unity 6 features in a production environment. This means Harold Halibut was able to launch on Unity 2022 LTS with visuals powered by Unity 6's brand new lighting and upscaling tech.

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS. – Made With Unity

The results:

  • Imported nearly 1,000 handmade objects built with over 600 m² of real-world materials into Unity
  • Rendered over 30 GB of hi-res, non-tiling texture data on all target platforms using streaming virtual texturing
  • Significantly improved performance without compromising visual quality using Unity 6's Spatial-Temporal Post-Processing (STP)

Gathering the crew

Harold Halibut’s development kicked off 14 years ago, when SLOW BROS. cofounders Onat Hekimoglu, Fabian Preuschoff, Daniel Beckmann, and Ole Tillmann decided to create a game. Although they had little gamedev experience, this group of creatives had various other practical skills they were eager to apply in a new context. Together, they founded SLOW BROS. and began drawing, carving, painting, sewing, building, and model-making – all while acquiring the technical skills to bring these objects into the Unity Editor.

Establishing the vision

As a “hand-made game,” Harold Halibut’s visuals are a primary selling point, so it was crucial for the SLOW BROS. team that every character, environment, and effect they’d built in real life was replicated faithfully in the Editor. “We wanted a consistent world that didn’t feel ‘video-gamey,’ and we didn’t want to make any compromises telling the story we wanted to tell,’” says Onat.

Harold Halibut is set aboard the Fedora I, a submarine-like spaceship stranded on a toxic ocean planet. Gameplay focuses on exploring the ship and getting to know the crew, so SLOW BROS. knew they had to make the environment feel alive and lived-in to keep players invested in the story.

“The main idea is contrary to what you do in most games, where you lead the player to the next place,” continues Onat. “We want the player to explore the Fedora and memorize the layout while stumbling into a lot of interesting things along the way.”

Harold Halibut by SLOW BROS. – Made With Unity
Timeline is used for all the dialogues and cutscenes in Harold Halibut. These sequences can be altered without having to enter Play Mode.

In pursuit of an intimate, filmic look that would draw in players, SLOW BROS. made it a priority to always be on the most current Unity version. Since Unity 4.6, Harold Halibut has been built almost entirely on beta versions of the Editor and updated with each new release (the team only settled on 2022.3 shortly before launch). Some studios might see this as risky, but for SLOW BROS., having access to the latest graphics tech was essential to achieving their vision.

“Due to the small size of our team and our limited budget, we had to find ways and create workflows and tools to achieve the AAA quality we were aiming for,” explains Onat. “Moving to HDRP made a huge difference because of the realistic light falloff, the different specularity handling, material handling in general, the color science… It all just looked so much better.”

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS.

Scanning the models

Working with real-life props meant SLOW BROS. didn’t need to create 3D character models or environments in the Editor, but the process came with unique constraints. To ensure physically correct lighting, consistency across each scanned asset was crucial. Every model and set was lit as flatly as possible during the photogrammetry process, scanned and brought into Adobe Substance Painter to clean up any light remains, before being imported into Unity and animated via motion capture.

This photogrammetry process means there are almost no traditional tiling textures in the game, and the textures are massive files. Most textures are between 4K (20 MB) and 8K (80 MB) which adds up quickly. “One material was almost half a gigabyte for just one piece of a scene,” says Onat.

Harold Halibut by SLOW BROS. – Made With Unity
Streaming Virtual Textues in the Rendering Debugger

Streaming Virtual Texturing helped the team optimize memory usage without compromising on texture resolution – and as a result, Harold Halibut has over a gigabyte of free memory on consoles. “We can allocate how much memory we want to spend on the textures,” explains Onat. “We can basically say, ‘We just want to use 512 MB of texture memory,’ and that will be constant throughout the whole game, no matter how many objects or how many different things we render, because it's all fetched in screen space based on what the camera sees. It really helps!”

GIF showing how different mipmaps are loaded using Streaming Virtual Texturing
GIF showing how different mipmaps are loaded using Streaming Virtual Texturing

Choosing a renderer

Lighting up Harold Halibut’s character models and the underwater world was among the biggest challenges, and is the main reason SLOW BROS. move from the Built-in Render Pipeline to the first, experimental version of HDRP.

Before studying game design, Onat worked in film, and so he approached lighting in Harold Halibut from the perspective of a cinematographer. He’d shine lights on the props in real life to see how they looked in different conditions, and then use real-time point lights and lightmaps to recreate them in the Editor. This created the right look, but also came with significant overhead that impacted performance.

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS.

Onat began experimenting with solutions for managing more complex lighting rigs, which led him to HDRP. He found that its tile and cluster rendering system drastically sped up lighting calculations compared to the slower multi-pass lighting used in the Built-In Render Pipeline. Even though HDRP was an emerging technology, Harold Halibut was still far from release, so SLOW BROS. decided to make the switch – and ended up seeing their game in a whole new light.

“Besides all new post-processing effects, volumetrics, and so on, even the way colors were rendered in HDRP was drastically different,” says Onat. “Once we had all the assets in the Editor, the lighting in Unity itself felt really natural. This was at a time when nobody should have been using HDRP in production, but I was blown away by the results.”

Optimizing lighting

Since adopting HDRP, SLOW BROS. has been working closely with Unity’s graphics team to test out new features and capabilities in exchange for technical support. HDRP’s Adaptive Probe Volumes (APV), now available with Unity 6, ended up being a game-changer for Harold Halibut’s lighting setup by speeding up workflows and unlocking performance gains.

APVs are a 4x4x4 grid of light probes, placed automatically and based on the geometry density in a scene to facilitate baked indirect lighting. Because they’re adaptive, APV will generate more densely placed probes in areas with more geometry, and fewer probes in areas with lower geometry density.

Harold Halibut by SLOW BROS. – Made With Unity
Adaptive Probe Volumes: The light probes seen here in the scene view are enabled using the Display Probes button in the Rendering Debugger.

Harold Halibut makes liberal use of baked lighting, which can save on performance at runtime, however can slow down iteration due to baking times. Baked lighting can also result in slight visual inconsistencies, particularly with dynamic objects like character models and large objects. Using Unity’s new lighting features sped up these slow iteration times and improved visual inconsistencies.

“Before APV, we were using Light Probes for the indirect lighting of dynamic objects like characters, but this led to inaccuracies, especially in areas with lots of contrasting lights or heavy shadows, as each mesh could only have a single probe applied to it,” Onat explains. Unlike traditional light probes, APV [provides indirect lighting] per-pixel rather than per-object, so dynamic objects can receive more detailed, accurate lighting.

Because much of Harold Halibut’s lighting is soft and uses real-time lights for specular information, there isn’t much need for baked shadows. Onat saw this as an opportunity to remove some of the lightmaps and point lights and use APV instead. “In about a week I switched most of the assets to be probe-lit only, which looked great through APV and saved hours of baking time,” he says. “Furthermore, this enabled us to use different baking sets for day and night environments.”

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS. – Made With Unity

Speeding up lighting iteration

Using APV accelerated iteration in a few different ways. One of the most significant benefits was improving preview quality, so SLOW BROS. could more accurately assess how lighting would look before fully committing to a set of changes.

“Before, I just had to hope that when I cranked up the settings, it would look good – only to find out that there’s a shadow I hadn’t thought about,” he says. “With APV, I have one set of settings that I use for both the final game and my iteration workflow in between, which gives me the results right away.”

APV also provides a lot more leeway to move objects around in a scene without worry. “It especially helps with placement of assets – chairs, tables, all that stuff – because I can move things around without breaking lightmaps,” says Onat. “Most of our objects contribute to the global illumination, but because we don’t have baked shadows, it was easy to add or remove stuff, and it gave us a lot of flexibility over what we were loading in during the game.”

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS.

Onat uses Harold’s room as an example. This scene changes as players progress, filling up with mementos from Harold’s adventure. Previously with light probes, SLOW BROS. had to use lightmaps on large objects like posters, using baked lighting to ensure they looked consistent with other details in the scene. With APV, they no longer needed to configure settings for each individual object, unlocking a lot more control during iteration and experimentation.

“It’s a very nice, modern-feeling system compared to manual placement of light probes,” he says. “Now, everything is very consistent. That’s the main benefit for us.”

Upscaling for consoles

Unity 6’s new Spatial Temporal Post-Processing (STP) upscaling technology was crucial for providing console players with the same graphical experience as players on PC. STP takes frames rendered at a lower resolution and upscales them without any loss of visual fidelity. For launch, SLOW BROS. worked with Unity’s graphics team to backport this and other experimental Unity 6 features into their 2022 LTS launch build. This tech allowed SLOW BROS. to deliver a consistent gameplay experience to players on Xbox Series X|S and PlayStation 5.

Onat described his first time using the upscaler: “STP feels like wizardry to me. I stress-tested it by scaling down the game to 25% of the resolution in full HD, which means it’s 240p or so… I could still see tiny details like the text on signs, which feels like it should be impossible – I mean, the information isn’t even there in that resolution anymore!”

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS.

STP is built to run on all Unity-supported platforms to maximize visual quality wherever players are playing. And unlike many other upscaling solutions, it’s built to be cost effective on performance.

“To make it clear how completely blown away I am by STP,” Onat continues, “It’s better than any other upscaling technology I’ve used, besides maybe DLSS, which is similar in terms of quality – but STP runs on everything.

“I’ve seen people streaming our game go into the menu and switch on FSR [FidelityFX™ Super Resolution], just because they’re used to doing that. It makes me think about removing FSR and TAAU [Temporal Anti-Aliasing Upsampling] from our options menu, because I just don’t think they should be used when STP exists – there’s just no reason.”

Doing more with Unity

Harold Halibut is a remarkable technical achievement from a small creative team who went from knowing next to nothing about game development to leveraging the latest graphics technology from Unity. The result is a visually stunning multiplatform game that’s truly like nothing else on the market.

“We were just a bunch of creative people with an idea. People we were talking with were telling us that it was impossible to do what we wanted to do, “says Onat. “With Unity, we achieved everything we wanted to achieve, and even surpassed even our own dreams and expectations. We can’t imagine this would have been possible with any other tool.”

Harold Halibut by SLOW BROS. – Made With Unity
Harold Halibut by SLOW BROS.

Expanded possibilities with Unity 6

Unity 6 is all about putting fast, easy game creation directly in your hands, no matter where your players are. Download Unity 6 in the Unity Hub.