I am Kennedy Pan, a developer (currently solo) at the Indie studio Lindenergames and, in this article, I would like to share the creation of the winter scene in the Infiltration level of my adventure game Alice Brighton and the Cottage in the Fairytales Woods (still a working title). The game is being created in Unreal Engine 4 (UE4).
Before we begin, it may be useful to watch a short gameplay video above so you have a good idea of what we're gonna be working at.
Planning the level part 1: Layout the cards
I hope you enjoyed the short video, so let's get back to work.
Let's dig in at the fun part about detailing the gameplay, level design, and the concept. Next, we'll jump on the hardest part of creating the actual level.
First, a word on the game assets required for this level. I divided them into 2 main categories: Essentials, and Enhancements.
- Essentials are the assets that are necessary for the level to work, like the wall, the car, and the inventory items required to solve the gameplay puzzles like the handsaw.
- Enhancements are the assets that enhance the level/game, like the trees, extra junks in the car boots, etc.
Making a modern 3D game is very time-consuming activity so, if you're still new to all of that, I'd strongly suggest you look around for inexpensive or even free assets in order to make your work simpler and cheaper if time is an issue and if you're on a budget. This the reality faced by many small Indies, especially armies of one (aka solo indie devs).
I bought most of my assets from the UE4 marketplace, as they required minimal extra work/modification to work out of the box for my UE4 game. I also keep a wishlist in the UE4 marketplace, I so can be notified about suitable assets on a discount. Every saving count! That's my mantra!
Planning the level part 2: level up!
For optimization reasons, a key consideration for the outdoor winter scene is the size of the level, which, in this case, is basically the size of the terrain or landscape (See Figure 1 - The Landscape Setting).
We want to make the terrain wide enough so we can create the illusion of an endless outdoor (i.e. no edges visible), while not so wide to cause a performance hit and bring an unnecessary overhead, like level steaming & LODs (Level of details).
Guess what? I had a serious meeting with my team of neurons and we decided the size of the terrain to be something about 50 square meters (or 164 square feet), by using the scientific method of eyeballing. At this width, there are sufficient space and enough trees for the perfect illusion of a pretty wide forest.
This part is pretty much straightforward. Like many popular game engines today, UE4 has a built-in landscape creation tool that will do just that: create a landscape. I've heard Epic is considering bringing a built-in coffee maker for their next update, but for now, it can only make a landscape. A shame, really.
If you're not familiar with it, click here to watch an introductory landscape creation step-by-step guide video by Epic.
For full disclosure, the original falling snow, terrain snow texture, and the Speedtree models are assets from KOOLA’S SNOW EXAMPLE PROJECT, courtesy of a UE4 community contributor.
Once the terrain is generated after defining its parameters (see Figure 1. The Landscape Setting ), I start placing the key assets around, i.e. the wall and gate, the car, and the signpost, based on the concept art and on a 2D concept map.
I modeled the important assets before I created the level, but captain smart with his infinite wisdom advised me that it's probably a better idea to set placeholder blocks of assets around when creating the landscape, then use these placeholders as scale/shape references to create the actual assets. That's true, game development is a continuous learning process.
The next step is to mark out the road via masking, for which I sculpted the forest terrain using a combination of standard and customized brush textures. The sculpting tools should be familiar to anyone that used a digital sculpting software like Zbrush or Mudbox before. Even if you are unfamiliar with it, it's still relatively easy to play with, and it doesn't require crazy artistic talent to make a decent terrain. Attention to details makes all the difference for a well-polished scene. For instance, try thinking about how natural fresh snow settles on the ground and the shapes it forms when it sits at the edges and corners of structures. In our case, if we bring that level of detail to the way the snow sits on the walls, that will increase the believability of the snow in our environment, which will make the level look even better.
Once the forest terrain was done, I removed the masking from the road area. Then I added some tire marks with some depth sculpting in the snow-covered road. I initially wanted to have tire marks on the snow, but I got a decent result from simply sculpting it along the path of the tires.
Then the trees were 'painted' using the foliage tools. Unless there are unique trees that need to be placed on very specific locations, it's advisable to use foliage generating/painting tools for quickly populating the terrain. Then adjust the location of certain foliages/trees as needed, which is what I did. A few specific trees were modified and placed in the scene strategically for hiding the edges.
The terrain was finished with a fine sculpting and some fine adjustment to the trees.
The whole task, from defining the terrain parameters to finishing the terrain, took me about 2-3 hours, in which half of that time was spent on refining the final product. This was in fact, the first production landscape I have ever made, and I am surprised how fast it was. I was originally quite resistant to using landscape tools (as opposed to normal 3D models as terrain) to make my outdoor scene as I thought it would add too much complexity, but I am happy to be wrong. Certainly, my studio will be using more outdoor landscape in future games of the series!
Smoke and mirrors
To finish off the illusion of my forest environment, 4 additional tricks have been used:
a) Strategically placing some trees to hide the edges;
b) The terrain was elevated and curved from the perspective of the player camera so the poly edge at end of the terrain is hidden;
c) By applying a similar principle to what I did on B, the road was also curved so the edge can't be seen from the player's viewpoint;
d) Last but not least, one of the oldest trick in gaming: distance fog.
Sticky white stuff
It is important that any major assets in the open level look like they have been affected by the snowy weather. For this reason, a snow cover was modeled and sculpted for the wall and the roof of the car. I used textures for the more granular snow placed on the vertical sides of the walls. Substance Paiter was my software of choice for that. Disclaimer: I was not paid by Substance to promote their software, which is amazing in general for texturing and generating texture maps. I'm just a huge fan!
Substance has tools that make it particularly good and efficient for texturing powdered snow on 3D models. The perception of volume with normal maps can be textured because Substance Painter can generate various maps, including curvature, position, etc. It comes in handy when you want to control the areas where you want the snowflakes to sit on by a straightforward masking control, with very little manual painting required. In fact, for the wall, I had not a single manually painted mask layer! All I did was to use different generators and play with numbers by adjusting parameters. Sometimes, Substance Painter does make you feel like you're a real artist.
The original falling snow is a standard UE4 particle FX emitter from the KOOLA’S SNOW EXAMPLE mentioned earlier. I modified the coverage size to fit the whole level, and adjusted the intensity so it matches the visibility distance in a more precise (aka rule of thumb) way. There is, however, a small issue with the snow FX, which is the fact that it takes a while for the initial snowfall to reach the ground at the level start. This can be solved with the cheap trick of loading a short "Infiltration" video, which is sort of like a loading movie, giving time for the snow to reach the ground, so the scene looks like it has snowed for a while when you get into the level. I was tempted to make the snowstorm more windy, drastic and sideways, which is easy, however, that means all the foliage must now react to the wind, which would require too much work. So I settled for a simpler, calm snow day in the end.
I am alive...
It's important, particularly in a first person view game, that you feel like you are controlling a person, and not just a camera. One effective way to do that is to add footstep sounds. In UE4, you can create a special material called the physical material.
From the UE4 Documentation, "Physical Materials are used to define the response of a physical object when interacting dynamically with the world".
This allows us to define unique footstep sounds for different ground types, once they have properly defined physical material, which I have done for the snow. Websites like https://freesound.org/ are good resources to get a bunch of sounds that may be useful to your game, and they are free (I'd recommend you consider contributing to them with sounds or by making donations).
For the footsteps in the snow, however, I used a recording of myself walking on the snow. I believe there are about 6-7 steps in my recorded sound clip. I picked the 4 best ones and saved them as individual sound assets. Then I used SoundQue (a sound asset type) in UE4 to randomize the footstep sounds so each step makes a random sound (from the 4 sound assets). Having a small variety of slightly different sounds make the footsteps more believable.
I hope you liked this article as much as I enjoyed writing it, and find it useful for your next project.