logo80lv
Articlesclick_arrow
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_login
Log in
0
Save
Copy Link
Share

Building a Game-Ready Nordic Village Scene with Day & Night Lighting Setups

Danylo Kyslenko shares his tricks for saving time when building modular assets, explains how he made a custom Material Layer Blend function and used it for texturing, and demonstrates how he created fake interiors for the nighttime view of the environment.

Introduction

Hi everyone! My name is Danylo. I've been working with 3D graphics for about three years now. Surprisingly, when I first started my journey in game development, I had no idea I'd ever want to pursue art itself. I enrolled in a Game Development program in Poznań, Poland, fully expecting to become a programmer or a QA tester.

But then, just for fun, I decided to open 3ds Max – I remember it vividly – to see what this 3D stuff was all about, and things really took off from there. Throughout my studies, I delved deeper and deeper into the world of 3D, and before long, I started landing my first freelance gigs and projects for acquaintances.

Essentially, throughout my journey, I never once took a formal course; I tried to learn everything on my own – especially through hands-on practice whenever the opportunity arose. Eventually, I joined my first small studio, NBLD Studio. It was a tiny indie outfit, driven essentially by sheer enthusiasm, but it gave me a great deal. Beyond just increasing my working speed and getting better at meeting deadlines, I gained what was arguably the most important thing: experience working in a team.

Since then, I have worked at several other studios. Key highlights include collaborating with Google and Amazon while at Turing to create assets for robotics training; working on the Defcon Zero project with TriArts; and the project I am currently actively developing at Anshar Studios – SAW: Genesis.

Getting Started with the Nordic Solitude Project

In fact, starting work on Nordic Solitude was a bit of a spontaneous decision for me. I was originally working on a completely different project, but I ran into computer issues and lost it. Perhaps I'll return to it someday and tell you about it, too.

After losing that project, I began looking for new inspiration; I wanted to create something that evoked a sense of both coziness and unease, something that was inspiring yet, at times, frightening. This environment piece draws heavy inspiration from classic Lovecraftian cosmic horror, particularly "The Shadow over Innsmouth" and "The Strange High House in the Mist".

The goal was to contrast weathered Scandinavian architecture with an oppressive coastal mood, evoking a sense of ancient maritime mysteries and quiet dread. I didn't use a huge number of references to create this location, but I tried to select the ones that were most essential for me. When working on a location, I always categorize my references. In this case, I split them into lighting examples, primary references, examples of houses and their materials, nature and vegetation, and the bay.

Composition

When composing the primary establishing shots and the overall environment as a whole, my main objective was to evoke a very particular feeling in the viewer, to create a sense of underlying tension despite the seemingly cozy and picturesque setting of a Nordic village.

For that matter, when deciding upon the primary camera angle, I deliberately chose to go for a more open and relaxed composition for the more dynamic and directional scheme, with the imagery funneling sharply inwards. The lines of the traditional turf roofs, the wooden wall planks, the boundary fences, the furrows in the muddy pathway, the silhouette of the buildings – all of these elements slope downwards at a steep angle, creating a narrow V-shaped region in the foreground.

Likewise, the sheer cliffs on either side of the village act as massive walls framing the shot, following the lines of the rooftops to form the continuation of the V-shape, enclosing the environment. Rather than filling the shot with loose elements in an attempt to capture the openness and relaxation of the village, the steep perspective creates a claustrophobic sensation – the feeling of being enclosed from all sides – which matches the intended mood of underlying unease far better than an open shot would have.

In the next set of medium-range shots and the more character-focused perspectives, I opted to use the classic rule of thirds, applying it as a grid to the image and utilizing the intersections as visual anchors for the key elements of the scene. Placing the weathered stairs leading to the porch door of the dark turf-roofed cabin, the lanterns, benches, and the various patches of vegetation at the intersections creates a balanced composition with a good sense of perspective.

To further enhance the sense of place while avoiding making the image too busy, I utilized the separation of foreground, midground, and background to create a sense of depth within the scene. By placing the muddy, wet ground with the reflections, patches of vegetation, and various items strewn across it, I created a good sense of scale and perspective in the frame, which is then further enhanced by the alternations of colors in the midground.

The contrast of the muted tones of the weathered planks and the deep Falun red facades creates a nice sense of color clash and separation, leading to the backdrop of the hills and the wisps of the distant fog, letting the eye rest and not get overwhelmed by the busy-looking village street.

When it comes to the pipeline and asset creation for the modeling part, my main tool of choice was Blender. To achieve high visual quality without wasting texture memory on repeated surfaces, I implemented two different production pipelines for assets depending on their scale and importance in the scene.

For architectural elements, modular building kits, and big structures, I utilized a fast mid-poly workflow to define complex shapes without wasting time and memory on the high-to-low baking for every single beam or wall. I used bevel and weighted normals to define the bevels in the models, allowing them to have clean and sharp highlights in real-time without destroying the mesh topology.

Apart from that, since most of the modular assets used tileable materials and procedural masks for surface textures, I added extra edge loops and geometry to the low-poly models to paint multiple layers of dirt, moss, peeling paint, and other weathering effects right in the engine with vertex painting.

It allowed me to seamlessly blend multiple material layers on the same surface without using unnecessary unique textures and breaking tiling on surfaces.

However, for smaller props and important storytelling elements that had unique wear and were not going to repeat multiple times in the scene, I stuck to the traditional high-to-low poly baking pipeline, trying to capture as much unique detail in the normal, occlusion, and curvature maps as possible, utilizing the dedicated texture sets for each asset.

On the architectural side, I built a modular kit in Blender from scratch to populate the scene with Scandinavian cabins. I tried to make the kit as versatile as possible and utilized a grid-based approach, so all the walls, stone foundations, and pitched roofs were made with interchangeable segments. I also added several modular objects to the kit, such as doors, windows, porches, and beams.

The most important part was making sure all the elements had the pivot point at the exact same location – on the far corner of a grid in this case. It would make building structures in Unreal Engine 5 faster and more intuitive.

As a result, I could assemble several unique buildings with different silhouettes but similar texel density to maintain a cohesive look across the village. I also tried to use assets from the Quixel Megascans library to populate the area with vegetation.

As a level designer, my primary focus was on the architectural elements, so using modular assets saved me a lot of time and effort that I could invest in the actual environment creation in the engine.

Unwrapping

All the unwrapping and topology were done inside Blender. Due to using a mid-poly pipeline for the modular architecture and most of the environment assets, I decided to bypass traditional retopology as well: I sculpted clean, final, production-ready geometry with chamfered bevels to avoid any manual mesh reconstruction over the heavy high-poly assets.

As for the UV workflow, I used a two-UV-channel approach for most of the models, where the first UV set was used to read the baked RGBA masks, curvature, and ambient occlusion data inside Unreal Engine. It allowed the master material to correctly sample the procedural leaks, grime, moss, and edge wear on a per-mesh basis, depending on the angle of the normal.

The second UV set was used to tile materials across the surface, where all the shells were straightened and scaled accordingly to maintain the same texel density for all modular assets to avoid any resolution mismatch between the wood grains, plaster, or stone patterns on different objects.

For the smaller hero props, which required unique texture passes, I used a standard 0-to-1 UV layout, which had straightened borders to maximize packing efficiency and avoid any sampling artifacts on the aligned edges.

Texturing

Instead of relying on classic trim sheets or authoring heavy, unique texture sets for every single asset, I built a modular and highly scalable shader-driven pipeline inside Unreal Engine 5. The primary objective was to maintain a consistent texel density of around 10.24 px/cm across the entire environment while utilizing only a handful of core tileable materials for the whole project.

To achieve this, I created a central Master Material using Unreal's Material Layers workflow, which allowed me to instantiate, stack, and dynamically blend surface types directly inside the engine.

The geometry relies on a dual UV layout: the primary UV channel (UV0) handles the baked masks, local coordinates, and procedural noise, while the second UV channel (UV1) drives the tileable materials, ensuring perfectly calibrated texel scaling regardless of mesh size or proportions.

The absolute backbone of this setup is a custom Material Layer Blend function I created – MLB_RGBA_Mask. Each channel of a packed bake is assigned to specific weathering and surface information: raw wood exposure, deep edge damage, dirt, and paint peeling.

Inside this blend asset, I built full runtime control over contrast, brightness, inversion, and micro-detail noise breakup. By feeding procedural tiling noise into the baked mask, I break up sharp pixel edges and linear transitions dynamically.

The function also supports channel selection, UDIM isolation, and texture coordinate clamping, giving me total freedom to tweak how layers bleed into one another per-instance without ever leaving the viewport or re-baking maps. This workflow allows me to texture completely different props, from structural fences and wooden beams to aged industrial metal, using the exact same base material library, keeping draw calls and texture memory exceptionally low.

For complex surfaces, such as weathered wooden structures with decaying paint and exposed raw grain, I stacked the raw base material, the top painted coat, and the edge-wear layer using this RGBA function. To ground these assets seamlessly into the environment, I integrated Runtime Virtual Textures directly into the Master Material.

Using the mesh's Absolute World Position Z and the RVT WorldHeight, the shader calculates a distance-based height gradient with a configurable hardness parameter. This automatically samples the underlying terrain's Base Color, Normal, and Roughness, blending the bottom of intersecting meshes into the landscape. This completely eliminates harsh, artificial-looking intersection lines and embeds every prop naturally into the dirt and foliage without the need for manual vertex painting or heavy decal placement.

Assembling the Scene

The scene assembly evolved directly from an iterative blockout process inside Unreal Engine 5, where my main focus was framing a dramatic natural vista using traditional Nordic village architecture. I used the massive, sheer mountain cliffs as heavy bookends on the left and right, naturally directing the viewer's eye down through the descending valley and toward the misty opening of the fjord in the background.

In the early blocking phase, I placed primitive architectural masses to establish sightlines, primary roof silhouettes, and the natural flow of the central pathway. As the greybox advanced, I replaced the proxy volumes with modular wooden buildings, cut out door and window openings to introduce interior depth, and shaped the terrain to support a winding dirt road descending toward the water's edge.

Once the architectural anchors were in place, set dressing became all about grounding the settlement in its rugged Scandinavian environment and infusing micro-storytelling into every pocket of the frame. I wanted the village to feel genuinely inhabited, functional, and deeply weathered by northern coastal elements.

For prop scattering, I worked in deliberate thematic clusters: stacks of chopped firewood drying alongside the red barn wall, an old wheelbarrow, weathered wooden fencing holding back the overgrown wild vegetation, and tools resting naturally near entrances.

Rather than scattering props randomly, I paid close attention to physical accumulation, rubble, wet soil, and decayed leaves gathering around building foundations, fence posts, and drainage depressions along the muddy, puddle-strewn road.

For the dense foliage, I combined hand-placement for focal grass clumps, coastal ferns, and vibrant red roadside flowers with procedural foliage distribution across the background hillsides and traditional turf roofs (torvtak), ensuring the vegetation felt organically integrated into the architecture.

To elevate the piece beyond a static still and breathe life into the cold mountain air, I relied heavily on movement and atmospheric depth using dynamic VFX and Niagara. A village by a fjord needs to convey humidity, chill, and human presence. I added soft plumes of chimney smoke drifting lazily from the wood cabin into the mountain backdrop, instantly communicating warmth inside the homes.

Across the low-lying valley and water surface, I layered rolling ground fog and mist to separate the foreground village from the towering cliffs, enhancing depth perception. Floating airborne dust and moisture motes caught in the soft sunlight added tangible volume to the air, while subtle vertex wind animation rippled across the high grass and turf roofs.

This kinetic interplay of drifting smoke, shifting fog, and wind-blown foliage transformed the environment into a living, breathing coastal snapshot.

Lighting

To illustrate the environment from different emotional perspectives, I decided to make two distinct lighting scenarios: one simulating comfortable daytime and the other being a moody dusk scene. As for the former, I used Unreal Engine 5's Lumen, plus a subtle Directional Light and an atmospheric HDRI Map to imitate the cold Nordic coastal weather typical for the region.

On top of that, I added a number of subtle "hero" and fake accent lights. Strictly speaking, they do not adhere to the physical accuracy principles but, nevertheless, help emphasize the untextured dark silhouette elements and bevels, lifting the corners and other architectural details that would not be visible from a distance.

As for the building windows, I did not want to use dead glass, but at the same time I did not have enough time to make interior rooms and optimize them for performance. So, I opted for parallax interior shaders, which create the illusion of volume behind the glass with delicate built-in emissive values.

To power the needed impression of real light spilling from the inside through the windows into the foggy outdoor environment, I added a number of warm Rect Lights inside the windows' frames, simulating localized light sources. As a result, I got subtle and believable specular highlights and light cones casting on the weathered wood sills, adjacent walls, and damp vegetation below the windows.

Speaking of post-production and rendering, I barely touched the default post-processing settings as I wanted the final renders to look natural and as close to the engine as possible. The only adjustment I made was tweaking the Exposure value in the Post Process Volume to achieve a clean and balanced exposure without over-saturated highlights and underexposed shadows.

All the final images were rendered directly from the Movie Render Queue, which is a UE5-powered real-time cinematic rendering tool. It is highly convenient and customizable, offering temporal anti-aliasing and uncompromising quality.

Conclusion

In general, the project took me about two months to complete. It was a tough task to pull off since I had to work on two different studios' productions at once and make time to do this in my free time.

I think the hardest part about this project was to find a good balance between a nice cinematic look and a game-ready scene that would satisfy modern AAA engines. Keeping the right amount of Texel density, simplifying shaders and materials where necessary to keep draw calls and shader complexity low, and not overdoing the atmosphere were all challenging tasks.

I think the most valuable thing that I gained from this project was the experience, and not just the technical one. The feedback that I got from other artists in the studios that I work for was invaluable to me since it helped me to see what I would have never noticed myself. My skills as a concept artist drastically improved thanks to this experience, and I now have a much better understanding of lighting values, color clashes, composition, and engine optimization.

The most important tip that I want to give to beginners is not to try to give up just because something is technically hard or just because they feel like it. Instead, I encourage them to seek inspiration from others, work with other artists, and ask for feedback. It is crucial not to feel discouraged by the technical aspects of the job and instead try to surround yourself with people who are already excellent at the things that you want to be good at.

Thank you for reading this far! I hope my article has helped or inspired you in some way. Feel free to connect or reach out to me on LinkedIn. I also invite everyone to follow me on ArtStation so you don't miss any new projects from me.

Many thanks to Emma Collins for the opportunity to tell you about my project!

Danylo Kyslenko, 3D Artist

Interview conducted by Emma Collins

Built for the Game & Digital Art Industry
Get Our Media Kit

Comments

0

arrow
Type your comment here
Leave Comment
Built for the Game & Digital Art Industry
Get Our Media Kit