Image courtesy of Scavengers Studio

Creating the illustrative look of Season using Unreal Engine

Scavengers Studio
Founded in 2015 in Montreal, Scavengers Studio is an independent video game studio bringing together a diverse team of daring creators. Designing and imagining all of the video games they produce, this multidisciplinary group aims to provide unique experiences to its players through unique worlds. Pushing aside conventions, the studio is a playground that stands out for its variety of perspectives, a place where challenge and collaboration are the basis of creation.
Since its reveal at the 2020 Game Awards, we at Scavengers Studio have received a lot of positive feedback for our upcoming game Season’s art direction. Our team aims to create a warm and inviting world for players to hop on a bike to explore a beautiful landscape, with secrets hidden below the surface. Our art direction plays a significant role in welcoming players to record the whispers of Season as its world is set to be washed away.

Season’s art direction pulls inspiration from illustrators, painters, and natural light cinematographers. Our minimalist approach to realism is similar to early Japanese woodblock print artists and mid-20th century poster artists such as Norman Wilkinson. This simplification mindset, getting rid of details rather than adding them, set the guidelines we kept in mind while developing its overall look. You’ll note that the art style inspiration we had in mind is 2D art, which we bring into a 3D world.

This all begs the question: How do we create a 2D art style within a 3D space?

To answer this, we went to three of our artists and developers, Felix “Feu” Arsenault, who works on characters and technical art, Environmental Artist Geneviève Bachand, and 3D Programmer Irwin Chiu Hau.

Our 3D world starts with the tools that are provided to us in Unreal. Admittedly, some of our artists weren’t super comfortable with Unreal when they began. Still, they cited the accessibility of Blueprint and the node-based tools that made this learning process easier for them. “There are amazing, easy-to-pick-up tools already included within Unreal,” Felix stated, adding, “the landscape, foliage, and automatic Level Of Detail (LOD) tools, among others, are particularly helpful.”
The team needed the flexibility to create and iterate on custom tools to transfer the painted look of the art direction to an explorable 3D world. “Because everything is node-based, we could quickly make tools and custom shaders with visual programming nodes without requiring a background in traditional programming,” said Felix. Our artists referenced node-based equivalents in other engines, but we found none to be as good as Unreal.

Geneviève explained that “due to the creative freedom allowed by Unreal’s features, we were able to focus on following the art direction. We built custom shaders to achieve the specific look of Season with the help of Unreal’s features, instead of being forced to only work with what is already available in the engine.” The flexibility to be creative within Unreal gives the team freedom, and “there is no way we could have done that in another engine as an artist,” added Felix.

The Season team relies on various iterations of our game features to find the perfect fit for the mood: our art is no exception to that. The flexibility of Unreal allows for tools to be implemented in a way that works collaboratively with other existing features, allowing our artists to experiment and add new features as needed.
Image courtesy of Scavengers Studio
One of our artistic iterations focused on this idea of taking away details to capture the world’s beauty. Still, Unreal’s lighting and shading solution aims to use Physically Based Rendering (PBR), ray tracing, and other features that focus on fidelity and details.

Post-processes solutions available in Unreal, or on the Marketplace, didn’t offer the features or look we were aiming for, so we had a little work carved out for us here.

To match the restricted level of details that our art direction was aiming for, we decided to focus on how local colors are used in traditional painting and how digital painters emulate these techniques. Mohannad Al-Khatib and Ramy Daghstani from Artifact5 created a shader for us that would focus on using the albedo (or local color) in a way you would in illustrations.
Everything starts by choosing the albedo, or what painters refer to as local color per material, and then shadow tint associated with different types of objects. The shader then automatically takes the shadow tint color and the albedo color to compute the final shadowed color. Then the engine will take the angle of incidence of the light to choose between the shadowed color or the albedo. 

The shader uses illusions of color and shadow to recreate the depth and texture of illustrative pieces. Creating shaders like this one is a “balance of allowing artist control and making the engine do most of the work,” said Mohannad. Unreal made it easy to expose specific parameters the artists can modify to control the final result. Everything was individually editable with the material node editor, which allowed us to make our master materials and then develop and connect them to our custom tools.
Image courtesy of Scavengers Studio
But this art direction led us to a technical problem. By making everything individually editable, it made it challenging for us to unify areas with global lighting. Since each object has a specific shadowed tint color and albedo color, it can contain a texture color, making it difficult for the entire texture to have a consistent shadow color across different lighting scenarios. This means that if the time of day shifted in the game, all these objects would have to be individually edited to reflect the change. The early morning golden sun rays would need to be individually changed on all the objects in the game to reflect a mid-day cool blue lighting. We had a beautiful static world, with objects demonstrating a different look from one another, objects that could not have a different color or contrast.

Our art direction shifted to make the world more modelable to shifts in time and location, such as altitude and biomes. This forced us to return to Unreal’s PBR model, but with some tweaking. This enables us to receive “realistic” lighting based on incident lighting, which means that the light always comes from somewhere natural, whether it's from the sky or a flickering candle. Once we obtain this lighting, we will decide on the brightness threshold or the incident light angle threshold to compute the shadow color of each image pixel based on the light color.

Whereas our toon shader focused on shifting the colors in the material, our new art direction focuses on using shifts in lighting to make a scene more beautiful. For example, if we want more contrast within a scene, we can boost the direct sunlight and remove the soft lighting from the sky, thereby creating a direct stream of hard light from the sun. In the case that we want even more control over the contrast, we can use post-processing tools.

Our new lighting decision led to a new feature; turning to the sky sphere for static lighting. The sky lighting is an approximation of the light to make the cel-shading of a whole scene uniform based on the light coming from the sky. The skylight creates light and shading colors that cast on all the objects within the scene. We also have a few more settings to give the sky a tone, a tint of color to add to the overall mood of a scene. For example, a safe, familiar place might have a bit of warm light casting on all the assets coming from the skylight.

All of the lighting now also incorporates an approximate sub-surface scattering, which allows for the light to be absorbed into the objects or bounce off of them so that the light scatters. Consider the light cast through leaves on a bright summer day, being absorbed into the greenery, making them appear more brilliant. Another example is the sun on white pavement bouncing up and into your eyes, with the glare being disorienting but warm. Our lighting shaders are also energy persevering, which means, no matter how much light we add to the scene, it is always coherent. If we add two lights to the same object, then it is twice as bright. These realistic moments inspired the shift in lighting design in Season to make the world more familiar to the player.

Look Dev Manager 

Another roadblock was that we lacked some automation and ease of use once we received the shader and started building our materials and various custom tools. Yes, we were starting to have plenty of features available, but everything was spread across multiple levels and needed manual implementation.

Our solution was to create what we call the “Look Dev Manager.” “It’s a Blueprint-based tool that I would have never been able to make if it wasn’t for visual programming,” Felix explained. It’s a simple drag-and-drop tool that you can use at any level in the game. It connects and controls all the custom shaders, post-processes, tools, and more that artists need in one tightly knitted package.
Image courtesy of Scavengers Studio
It also works hand in hand with Unreal Lighting Scenarios, allowing us to load and de-load lighting scenario sublevels that influence lighting, clouds, skybox, fog, shadows, and everything related to mood and atmosphere.

It’s packed with features, and maintenance is easy. It’s flexible in removing or adding any features we want and easy enough for artists to create and use.

Let’s dig through some of the features built into the Look Dev Manager; all created using visual programming.

Sequence of keyframes 

To control the lighting for different times of day, we use a level sequencer within the Look Dev Manager, which controls the change of colors and position of the sun throughout the day. The level sequencer controls the keyframes of the shifting time and position of the sun; as we move forward in time and the keyframe number, the day continues forward. All the natural lighting is linked together and can be controlled within the keyframes for the time of day.

We can also use lighting animations to blend different times and weather systems so that the transition looks gradual between two different lighting scenarios.
Image courtesy of Scavengers Studio
Image courtesy of Scavengers Studio

Season’s mood and ambiance

Another challenge we had involved creating Season’s mood and ambiance. If a player looked over the hills, how would they perceive the sky’s color or texture compared to the atmosphere in their immediate environment? Once again, we looked to 2D mediums for inspiration.

The landscape in the distance is seen through a cumulative layer of atmosphere and is tinted by the sky’s color. The team looked at painted landscapes to emulate how painters use colors to create an atmospheric layer over clouds, landscape, and everything else.

The work of Plein air painters was an essential reference for our atmosphere recipe. They tend to group information in shadows and omit details in them more quickly than in lit areas, keeping a higher level of detail and texture.

Once again, while Unreal has good default atmospheric and fog tools, they didn’t behave the way we wanted them to and were influenced too much by the various lighting systems Unreal uses by default. We needed a more straightforward, more flexible solution for our illustrative look. Fortunately for us, it wasn’t hard to start iterating and developing our alternative using visual programming.

We turned to one of the ways digital painters recreate this atmospheric perspective of traditional painters. To control the game’s ambiance, we use a directional light (sun/moon), a natural skylight, sky atmosphere, and fog.

“I ended up creating two types of post-processes: an atmospheric perspective and a height-based fog post-processes,” said Felix.

Our custom atmospheric perspective post-process is distance-based; it uses a lighten and light filtering system to control the behavior of the fog furthermore. We offer various parameters to the artists to use to customize and control the ambiance of the scene. Our custom height-based fog post-process, on the other hand, offers multiple blending modes to choose from and supports texture-based wind that can be animated and customized.

Once again, these are excluded from most of the default automatic systems so that artists can have the freedom to do as they please with them.

Those post-processes are stackable, blendable, can be used within the Look Dev Manager or outside of it, and we can use multiple versions of them on top of each other to achieve the desired result. Having those two types of atmospheric post-processes allows us to achieve the depth and accuracy the game’s mood and atmosphere need.

We tried keeping the Look Dev Manager as flexible and modular as possible, and this also implies having the individual features be flexible and modular.
Image courtesy of Scavengers Studio

What's next for Season

This is just a peek of what is currently being worked on for Season as we are still in the process of bringing this world to life in Unreal. With every day that passes, we see these custom tools being created and improved. They help us build moods and environments never seen before and push the boundaries of art direction for video games.

We look forward to opening this world for players to explore. Season is available to be added to your wishlist on Steam or Epic Games.

Our team is still expanding to make this art direction come to life. If you are interested in joining this project, check out our careers page for opportunities.

    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.