Great work Gabe!
Incredible job, love the breakdown and can't wait to see what you make next!
3d artist Bart de Vries gave a little talk about his approach to 3d environment creation. In this article he shared his workflow and discussed some of the ways he’s building his interesting stylized scenes.
Hey! My name is Bart de Vries and I am currently working at Elite3d in Spain. When I made this project I was graduating at NHTV in Breda, The Netherlands. During my studies I’ve worked on a couple of small games of which two were nominated for multiple prizes at the Dutch Game Awards in 2014 and 2015. Last year I worked as an intern at LuGus Studios in Belgium on Liftoff. A Drone Racing Game Simulator. I was responsible for some environment and prop art, while also contributing to some unannounced projects.
I started Autumn Valley as my graduation project for IGAD (International Game Architecture & Design) NHTV in February. There were two main learning goals for the project. One was to create a complete stylized village in Unreal Engine 4 using PBR techniques while the other was to create the environment as efficiently as possible. Think about modularity and master materials. During the achievement of these goals I would have to learn a great many different tools and techniques.
Especially PBR in combination with stylized textures would be a challenge to get correct. Fortunately I had already used PBR during my internship at LuGus Studios in Belgium which gave me a slight head start.
When picking your tools for such an environment I believe the choice of engine you put it in will be the most profound. I chose Unreal Engine 4 because of three reasons; I wanted to expand my skill set with a different engine (I’ve worked more extensively with Unity before), UE4 had the most extensive material editor where PBR was the main focus, and I had made a village level design in UE4 the previous year that was still in a very good state.
Stylized materials often have problems working in different lighting setups. This is one of the reasons I wanted to experiment with the PBR system. When using a PBR workflow it shouldn’t matter in what lighting situation you put your materials in as long as they are set up correctly. There was a lot of trial and error here.
Everything needed to be modular and easily reusable in different assets. That was the primary rule I had for creating most of my assets. The reasoning behind this was that I needed to fill up an entire village with assets without making it look boring and that everything would look the same. Having different color sets certainly helped reach that goal.
The houses had 14 different parts that were interchangeable. This allowed for a lot of variations in building sizes and shapes.
For example every wall had a different structure of wooden support beams, which allowed for a wider variation of buildings. Being able to vertex paint some of the tile-able textures I had made also made a huge difference in what would be perceived as the same buildings.
You can see the full breakdown on my Arstation page of all the assets in the scene.
The only real Hero Asset I had in the project was the wizard tower. As this was a landmark and method of navigation for the player this asset was placed further away from the village. This meant that the overall detail of the wizard tower was rather low, because the player would never get up close with the tower itself. The special thing about the tower was silhouette and being able to recognize it from different angles. This is why I gave the asset three towers with different levels of height. This way players could even more easily see where they were in the level.
The flowers, leaves of the trees and drapes are completely hand-painted. Which is different from most of the rest of the assets as they all have a sculpt to support. This was a fun challenge for me as I never did any completely hand painted assets before without first baking a high poly sculpt down to usable maps for me to paint over. They turned out quite alright and since they aren’t that big there was some room for error and no need to go into a high amount of detail.
For me the creation of all the smaller assets in the scene was enjoyable. I really liked giving extra life to the scene by means of set dressing.
The most efficient way to work with materials is to set up a good master material with a lot of flexibility in the beginning. Unfortunately, I didn’t do that at the start due to a lack of experience. This caused me to have multiple smaller materials and almost no material instances (I know bad choice). In the end, I did have some materials that were able to function well as master materials, which sped up the iteration speed of the project.
My textures are created with a very popular approach by sculpting the detail in Zbrush and then baking out several maps over which I will paint my final map.
The method I will describe is used for pavement, walls or roofs. In this case, it’ll be the pavement. I start out in ZBrush where I will sculpt one or two main four sided stones. In ZBrush this cube will be dynameshed and then divided a couple of times to get a decent polycount for rough sculpting. The process will start out with refining the edges with a trim Dynamic brush. This will be a very rough process as a more stylized feel has some big chunky bits and a lot of notches and cracks. This causes me to be able to rough out the edges of the brick quite quickly while there is a lot of room for error. When the edges are done some extra divisions are added and I will draw some cracks through the brick of one or two of the bricks faces. They must not be too apparent or they’ll later make the tiling too obvious. Once these cracks are in other slashes and relief is added to break up the surface and give it that stylized feeling.
When the brick is fully finished I start laying it out across a plane on a 2048 by 2048 document. If one of the bricks passes over the edge of the plane I duplicate it and use the deformation tool to move it to the exact opposite side of the plane.
This way the brick will tile when focused on the plane. In this manner I will fill out the canvas and make use of the height differences between bricks. These height differences will take on a different role in a later step of the texturing process.
Once I’m done in ZBrush with laying out the tile-able texture I focus on the plane underneath to make it perfectly square. If everything was done correctly the texture is tile-able. Next step is to render out some ZBrush materials and masks which are taken into Photoshop to create the base layer.
From these renders I will go on and create the rest of the texture by blending the layers together with various blend modes in Photoshop and then painting over it.
With just the layers blended together it already looks like a nice base texture. When the compositing is done I will usually paint in some color differences, shadows and highlights. Especially with floor textures painting in some browns and dirt spot is important to remove a bit of the tiling.
When painting is done it’s time to create the roughness map for use in the engine. A roughness map can add a lot of detail to a material, however in case of a stylized environment I found out it’s better to keep it simpler so it’ll be more readable. In this roughness map I’ve darkened and lightened some areas that I wanted to be more or less specular by painting them in. All the spaces between the bricks where made almost completely white for dust to settle in.
In this case there was no need to create a metal map as the entire texture was nonmetal.
The magical ribbon around the tower is a relatively easy effect and isn’t even a “proper” particle effect. It’s a mesh with a panning material. That is set to periodically glow. I made a simple tileable texture that would pan in the Y axis.
I can’t take full credit for the floating crystal in the gem fountain as the actual unreal blueprint for the movement was made by Jason Landbrug.
The waterfall was the biggest challenge of the particle effects to create.
In the end the waterfall existed out of a mesh, two materials, and three different particle effects to create the desired effect. I had created a mesh with a panning material on it that would speed up due to how I laid out the UVs. This would be the main plane of the waterfall. One water particle effect was created to follow the waterfall down and give some volume and variation to it. The second particle effect would be placed where water would clash upon rocks and create a splash. By extending the lifetime of this splash it gave more volume to the waterfall. The last and third particle effect was the mist at the bottom of the waterfall where spray would occlude the view.
I’ve struggled with the lighting in the scene a lot. I wanted it to be a sunset scene where one side of the environment was already in the shadows and the lanterns were all lit, while on the other side there was still sunlight and no light behind the windows or lanterns.
The goal was to give the player even more of an understanding where he or she was in the level due to the lighting conditions. However picking this kind of lighting setup gave me quite some problems in regards to where global illumination came in and how intense my skylight had to be to prevent true black spots while keeping shadows.
I had never lighted a scene before and this was my first try at it (take in mind the lighting changed drastically over the course of the four month project).