Stéphane Charré explains what inspired the beautiful serene countryside scene, shares some tips and tricks behind asset creation, discusses the challenges of working on foliage for stylized pieces, and talks about how playing around with lighting settings can take your environment to a whole new level.
In case you missed it
You may find these articles interesting
My name is Stéphane Charré. I am 25 years old and I just graduated from the Interactive Art and Design school in Montpellier, France. Before my game art studies, I had been studying computer programming for 3 years at Epitech School in Toulouse, France.
Being a multitasker in these two different fields is a real advantage. It allows me to create what I love, from designing environments to programming my very own games. I also recently had the opportunity to join the talented Star Citizen team at Cloud Imperium Games as a Junior Environment Artist. This will be my first real take on the game industry and I’m already eager to prove what I am capable of.
Creating the Fantasy Provencal Environment
The idea behind this project emerged around 2 years ago and at that time I was only in my 2nd cycle at school. I promised myself that I would create this environment once I would have the necessary confidence and knowledge to do so.
Before this project, my previous environments were mostly cold and dark so I decided to go the opposite way. The main concept comes from Rémy A. S. Diaz and it’s been an absolute pleasure for me to work on such a brilliant concept from another French artist. I loved every aspect of it, from the color palette to the provincial architecture. In my opinion, it was the perfect piece to build a challenging stylized environment.
As an artist, I often get inspired by others. This is why I am mainly using ArtStation as a place for inspiration. I keep track of my likings by categorizing projects under my profile. It helps me find related designs and concepts during my referencing process.
Furthermore, I never forget to take actual game references I like that I can rely on. For this project, I was heavily interested in the artistic direction of Overwatch, Rime, and Journey. It also happens a lot that I collect additional references for a specific work, making sure to not struggle with tiny details. I always save my images on a PureRef board:
Before jumping into Unreal Engine, I made a basic schedule, so that I could organize the work in several phases. This allows me to establish the core features and limitations of a project. Taking into account all of the unexpected, the whole environment took me actually a bit longer than 3 months.
Approaching the Composition
As I did not have a full illustration or a concept image with a perspective approach, I chose to skip the blocking stage which allowed me to conceptualize my own dream environment step by step. This is why I ended up sketching something fairly simple.
I imagined wide open and grassy fields surrounded by massive windmills. I also planned a river flowing under the main edifice. As I was aiming to create a whole playable level and not only a single shot, I added a forest as well as some more buildings later on.
It was a quick iteration to what I had in mind since I started but it turned out to be a solid asset throughout the production.
Working on the Buildings
I initially started to work on the main building experimenting with different techniques, especially regarding materials and shaders.
As I aspired to fill in a wide area, I had to think in a modular fashion. This is why I made an architectural kit to help me build the core structures. It’s composed of wooden beams, different kinds of stone slabs, roof tiles, and ivy prefabs.
I did all the meshes in 3ds Max but any kind of 3D software can do the job. For the ivy prefabs, I chose to make two different versions, with and without purple flowers.
All the textures and materials were created from scratch. I hand-painted the wooden texture in Photoshop and used Substance Designer and ZBrush for the rest.
My workflow is the culmination of everything I’ve learned so far and I use software that grants me the fastest results. For example, I often use a combo of ZBrush and Substance Designer to make tileable textures like Bricks or Roof Tiles.
My full process is to sculpt the largest shapes and do the tiling placement inside ZBrush. Once it’s done I export my maps to Substance Designer and polish minor details. To intensify the quality of the texture, I like to add a lot of color variations with different patterns.
In each of my Unreal Engine 4 projects, I create a simple master shader first. It is useful for props or common assets which do not require any complex features.
For the walls, I created a shader that implemented vertex paint between two given material functions. The tricky part was handling the transition. Thanks to my teacher we found a way to control the border. We simply generated a duplicate normal using the HeightLerp Alpha Output and multiplied the value with a constant parameter. From there we converted our alpha into a new normal with the duo nodes PreparePerturbNormalHQ/PerturbNormalHQ and blended it with the first one to connect it to the final output. We also implemented a contrast parameter to handle the transition threshold and a noise pattern parameter to break up the repetition.
The Roof Tiles Material also uses vertex paint. The graph is very similar to the previous one but works with an additional material so that I can paint an overgrown and a bluish version of it.
For performance optimization, I did not model every single tile. I hand-placed some of them separately, most of the time on the edges to cover the seams, and a few more randomly on top of the initial geometry. I used the same technique with walls, adding some extra rock pieces manually, reducing the overall polycount.
Last but not least, I created decals for the buildings by adding colors and normal details.
Assembling all the parts and finishing up the main structure was extremely satisfying. After completing the grass fields, I decided to test, refine, and polish the artistic direction before producing anything else.
Vegetation was an important aspect because it heavily relied on what the grass fields would look like. It was essential for me to not over-push the details and explore different styles. The terrain was manually sculpted using the Unreal Engine tools and thanks to the Landscape Master Material, it procedurally painted grass on top of it. Overall, it features 6 paintable layers:
1. Grid layer for testing/debugging purposes
2. Dirt Layer
3. Default Grass Layer
4. Grass Layer with a low amount of Flowers
5. Grass Layer with a high amount of Flowers
6. Grass Layer without geometry foliage
The dirt layer is working with an angle-based slope blending so that if you sculpt cliffs it would automatically blend with the grass layers based on the steepness of the slope. To avoid pattern repetition I also changed the UV tiling amount depending on the camera distance. In addition, I introduced the notion of Runtime Virtual Texture inside the master material which is going to be used by the grass.
Grass and other flora assets were modeled using card planes. Grass, flowers, and ivy textures are hand-painted in Photoshop and packed in a single texture atlas. I did an additional one for the clusters of tree leaves. I recommend having a look at the excellent article by Marie Lazar who gives valuable tips on plant creation.
Grass required a lot of iterations. It was actually quite hard to make it match the aesthetic I had in mind. I really wanted to give the impression of volume and high density without having huge performance drops. Below you can see the results at the early and final development stages.
The shader turned out to be a bit trickier than I thought but fun to make. My main reference was the outstanding work done by LucenDev. I used a similar noise pattern moving in both directions into the base color output to simulate the clouds' shadows. In my case, I’m also seamlessly lerping this effect with the RVT to match the color information coming from my terrain.
As a final touch, in order to make the grass move, I painted the parts of plants that would be affected by the wind in red in my vertex alpha channel.
For the trees and bushes, I wanted the same approach they used in Rime. I created a bark material inside Substance Designer and followed the stylized leaves tutorial by Romain Durand. To bring more life to it, I modeled different variations for each species and added a new feature in the shader.
The tree shader includes a gradient touch to increase the color contrast between the top canopy and the bottom.
As they directly touch the terrain, I’ve done an alternative process for the bushes. The runtime virtual texture (RVT) captures and blends the ground base with the current terrain color.
I also had the use of procedural systems. Especially for the making of the forests and grass fields. Landscape Grass Types and Procedural Landscape Foliage Spawner were huge time savers, allowing me to set up density, scale, and placement parameters on several foliage varieties to populate vast areas.
The Landscape Grass Types are easy to create and work as a pair with your landscape material. My terrain uses 3 different Grass Types connected to its own layers. In addition to that, I also had to prevent the grass from spawning when the slope angle was too high. This is why I subtracted the slope blend mask before the final output.
For forest scattering, the idea stays the same but instead of painting the terrain you use a basic volume to generate your foliage. In a nutshell, you just have to set up the spawner to tell it what to spawn. For me, it was only a matter of trees, bushes, rocks, and pebbles. Some of them were duplicated in the settings in order to change their shaders, bringing more color variations.
Here is an example of how it works inside the editor:
During the project, I created a water shader using a spline blueprint. You can learn the basics of how to make a spline blueprint from a livestream recording released by Quixel.
The shader has a couple of features connected to each other such as:
- Dynamic Foam (based on the nearest distance caught from a surface);
- Slope Base waterfall (I increased the foam and water speed depending on the slope
- Depth Fade Color and Opacity parameters;
- Waves (made by combining normals).
Rendering and Lighting
As a final touch, I added a few props to fill out the scene. To be honest, I really did not plan to build a sort of ruined village overlooking the fields. This is the reason why I started sculpting cliff rocks, acting as support meshes for the terrain.
The rocks were sculpted in ZBrush, closely following the art of Michael Vicente for a nice touch of stylization. They also were designed so that they would look different from every angle and easily fit with the ground. Medium-sized rocks are a little rounder to better blend in the grass fields. Later, I added pebbles and stone walls to emphasize the ruined look. As the rock bases were mostly hidden by the grass I found it useless to use the Runtime Virtual Texturing feature. Sometimes less is more!
At this point, the environment was almost ready. To bring life to my scene, I quickly iterated on a few more generic props, and that took me around two working days. I used a basic workflow with baked normal maps where I modeled both the high poly and the low poly in 3ds Max.
I spent the rest of the week polishing the level art, reworking countless shaders and textures. I also found that the sky needed some love so I created clouds with the help of Houdini. I recommend the quick cloud tutorial made by Simon Verstraete.
Besides, to enhance the quality of the scene I went for different post-processing materials. While testing different art styles I chose to use a cartoony shader. Overall, I was pretty happy with the results. I just needed to fix the shadowing blending which was way too strong. In addition, I also tend to sharpen the final shot. It can almost be comparable to when you turn the screen percentage of your project to 200% in the viewport but it allows you to avoid performance costs.
The lighting was pretty straightforward but required a lot of retakes. I really like the fact that I can edit the settings from time to time. Considering that most of the lighting work comes from the post-process volume I ended up only tweaking the basics.
The biggest challenge during the production was getting the grass fields to look good. I did a lot of experiments while making it. I guess that the whole point when creating stylized environments is that you can make great art by doing simple things. I also spent a lot of time making the shaders. Some features required way more work than I thought.
All in all, I’m pretty happy with how it turned out! It’s always not exactly what you imagined at first but I learned a lot and I can’t wait to explore more workflows.
I would advise beginners to always study from well-experienced artists. It always tends to push your artistic vision to greatness. Be engaged and passionate. As environment artists, we all use tutorials and external resources. Don’t be afraid to increase your knowledge by reading articles or doing testing sessions.
Thank you for reading, I hope this breakdown provided some insight for some of you! Thanks to 80 Level for the shout-out and all the contributions you guys have made to the game industry. Special thanks to my teachers for helping me out. This was an incredible journey and I wish you all the best.