Ghost Recon: Wildlands, a User Story With Substance
Ghost Recon: Wildlands is one of the most visually impressive games Ubisoft has created yet, and it’s set in a massive open world. The enormous map comes with a wide variety of ecosystems, terrains and locations. This required a huge amount of work on texturing the props and environments. As Guillaume Cerdan explains in this interview, he and his team found a way to make the texturing process more automated and thus gained time to spend more on details and polishing.
Hey Guillaume, thanks for taking your time for this interview. Can you tell us more about your experience with Substance on the game Ghost Recon: Wildlands?
We started thinking our texture pipeline four years ago when Substance Painter wasn’t available yet. We based our reflection around Substance technologies and how it could help us create the largest open world Ubisoft has ever brought to life. Since the previous game we made (Ghost Recon: Future Soldier), we were willing to use Substance in our pipeline and this new Ghost Recon iteration was the perfect use case for that. The amount of assets we had to create was so large that we couldn’t think of another way for handling this workload with our rather small art team.
For which assets/environments did you use the Substance toolset?
In Ghost Recon: Wildlands, the terrain is one of the main “characters”, and as such, needed a lot of care. I made a few Substance filters that our senior artist Yannick Signahode could use in Substance Player in order to create variations of assets he sculpted in ZBrush. With a few subsets of tools, he was able to generate multiple PBR texture sets based on the one he hand-crafted. As a result, he was able to quickly iterate and capitalize on his work and put more time and care into details during the sculpting part.
Three different categories of assets were also identified to really benefit from a Substance pipeline: characters, weapons and vehicles. Those assets are obviously another important part of the game so we needed to be able to iterate on them as much as possible, on all of them, during the entire production.
Finally, I made a single but pretty powerful tool that helped us texture most of our metallic props. I made it in conjunction with the lead artist in charge of the props, Sylvain Bouland, in order to bring his texturing techniques into it. As a result, we could distribute this tool to all the artists working with us around the world and get them gain some substantial time in order to polish and increase the amount of content we could produce.
The "Metalizer" was designed to handle a PBR workflow from the ground up by layering multiple materials on top of each other, and using the geometry information to place details at the right spot.
The process was simple: an artist could simply gather a baked normal map and a matching low poly .fbx file into a folder and run a small batch file in order to see all the necessary information baked out, fed into a .sbs file and connected to the Metalizer node. All this done using the BatchTools.
From there, the artist could open this .sbs file with Substance Player and start tweaking. The filter starts by applying a metal material and then it adds some optional rust, paint, dust, grease and mud layers. All of those effects are deduced and balanced by the textures baked from the mesh and handle some specific effects like paint cracks, leaking, et cetera. This tool could output the final material but also all the effect masks the artist needed in order to tweak the results even further if he thought it was necessary.
As I said, this pipeline was designed four years ago and Substance Painter 1.0 wasn’t even available yet. No doubt that today we would intensively use the same kind of template but inside Painter, so the artist could tweak the effects even further using different brushes and filters.
How did Substance improve your team’s creativity and productivity? How did Substance change the artist’s schedule compared to the previous pipeline?
Maybe I’ll let the team answer this question then ;)
Sylvain Bouland ( Lead Props Artist - Paris ) : Thanks to our Substance Player pipeline, we were able to spend more time on the modeling details: around 90% modeling and 10% texturing, versus 50/50 previously. Texturing props one after the other was made easy by reusing presets, and sharing them within the art department helped us a lot in getting more homogenous results, particularly when working with different outsourcing studios.
Mihai Zorca ( Art Technical Director - Bucharest ) : The Substance pipeline completely changed the way we iterated on the weapon textures. Rather than creating a few 'final' benchmarks and reusing the recipe over and over, we focused our iterations on constantly adding levels of quality on all assets at once, and we were able to do that until the end of production. Whether we were tweaking the visual of a specific metal material, adding a dust layer on all weapons or fine-tuning the scratches filter: it was never too late to do any of this thanks to Substance's non-destructive iterative nature. From the artist's point of view the focus was on creating a healthy base and then finalizing the model by adding details where it really mattered. All the painful iterations in between these two steps were handled through Substance almost 'magically', giving the artists time and energy to push the quality bar.
You told us about the automated masks. Could you explain further to the community how you inserted that into your pipeline?
At the time we started the project I was pretty much the only one familiar enough with Substance to start working with it. The use of Substance was really focused on some specific parts of the production. After a few convincing tests, we decided to integrate the Substance Engine in our own game engine so that artists could directly work in the exact lighting and rendering conditions. The way we integrated it allowed us to preview and generate textures directly in the game editor, but we could also bake the textures (curvature, ambient occlusion, et cetera.) needed by the filters in order to place details on the right spots. A little bit like Substance Painter does now with the smart mask feature, actually. With this new tool in our editor, we were able to stack different filters on top of each other, cumulating their effects in different ways.
To push even further, we’ve created a template system so every texture set could be linked to a Substance template. Thanks to this, we could modify the mask compositing and their parameters on the template and apply the changes to all the assets linked to it. All the texture sets are recomputed at once with one button click only . This pipeline was extremely powerful in order to increase the quality bar of all our assets at the same time and all along the four years of production.
What is the main benefit of the automated masks compared to the previous or standard tools?
Here’s one example: a bit late in the production we’ve created a dynamic system for characters and vehicles so they can get dirty while playing in the dust or the mud, and get washed out when it rains or when the player/vehicle goes into the water. Substance helped us to create all the different masks necessary depending on the geometry of the object, even months after the assets were considered “completed” by easily adding a new filter to the template and reprocess all the existing assets during the night. From there, I could modify the shader to handle those new masks and make everything dynamically dirty.
To put it simply, it would have been impossible to do all this, so late in production, without Substance and the integration we’ve made. Also note that because all those masks could be recomputed at any time, artists on the project got full freedom to improve and rework any part of the mesh or its UVs, reimport the asset in the engine and get their textures recomputed accordingly. This flexibility is something we never had before with traditional tools and I don’t think we could go backward now that we proved ourselves that we can deliver a full open world game with this pipeline.
Can you tell us more about the tiling tool you created?
The "Make-it-tile" tool was derived from the powerful Substance Designer "Make It Tile Patch". This means it has pretty much the same constraints, pros and cons. I made it so it can accept a mask to hide parts of the source, then splatter the pattern and repeat the process as many times as I want with a different Random Seed. By doing so, the holes get "filled" after layering each result on top of the other. By reusing the same technique and the same Random Seeds, I can also apply this process on multiple texture channels like Specular and Gloss masks, heightmap, and AO.
This tool was mainly useful for creating variations of terrain materials as we could quickly remove some details and fill the gaps correctly. Note that the alpha given by the artist is also warped a little so even a really dumb mask can give pretty good results.
How did you make use of Substance Player?
Substance Player was mostly used by artists who didn’t have time to learn a new texture software. Photoshop, at that time, was still the main tool we were using. So instead of having them use Substance Designer, we decided to bring them the power of Substance with Substance Player.
Substance Player is pretty easy to use and part of my job was to create some Substance filters depending on their needs, allowing them to use some tools they couldn’t find in Photoshop, or could lead to a lot of hassle. Also, by using the preset system we could quickly reuse a specific look and reapply it on a totally different object and get the same quality result in no time.
What were the main obstacles you overcame on this project thanks to Substance?
The major obstacle I encountered was at the beginning of the project where I had to prove to the team that we could achieve the same quality with Substance as we used to do with other tools. Some of them were skeptical and I had to spend some time designing my tools with their way of doing things, including their own texture tricks so they can better relate to the results. Once they could see a result close to what they would have done by hand, but generated with a few clicks and parameter tweaks, they adopted it immediately!
Sylvain Bouland: The number of assets we had to create with such a small team was unreachable without the help of our Substance tools. Every department had a few artists available to produce them and Substance was the key to making gains in quality and productivity at the same time.
Mihai Zorca: Creating such a large array of weapons and attachments which can be viewed up close in Gunsmith, customized individually by parts, and that have a dynamic aging feature added on top seems like an impossible task to tackle by using a traditional texturing pipeline. Thanks to Substance's flexibility not only did we achieve that, but we were able to maintain a consistent quality level, and all of this without having to resort to an army of artists.
Are there any tips and tricks you could share with the community?
I guess that it would not be anything specific but maybe a way of approaching things: - Always try to categorize the assets you need to produce and think about specific tools that could help in texturing those specific cases. - Getting close to the result you want with one or two Substance filters will always give you more time to polish even if the result is not 100% perfect. Don’t wait to get the perfect tool when you can already gain substantial time by using the ones you already have. - In Substance Designer: Always try to warp your masks! Depending on the inputs, you’ll get so many different results that you might be surprised and discover new techniques to simulate different patterns.
What is your favorite feature in Substance Designer?
With no doubt, the Histogram Scan node. There is something really satisfying about seeing a mask “evolving” in order to reveal a material on top of another one, being rust, dust, grease, or mud, among many other possibilities. This is also why this node was one of the first I’ve implemented for the weapon, vehicle and character shaders. That way, we could reveal some of those effects dynamically in real-time, by contrasting the masks created by Substance.
What is the next feature you would like to see in Substance Designer/Substance Painter?
UVs and stitches are still one big part of the process we can’t get rid of automatically. So maybe a cool auto-unwrap tool in Substance Designer and Substance Painter (just like the texture bakers, so we could automate all this)? Triplanar projection was really welcome but still the UVs need to be done “the old-fashioned way” most of the time.
What is your favorite feature/thing you like to do in the game?
It’s hard to tell, as every feature, every mechanics received a lot of love from the entire team. I would say that the game really shines when we play it in coop with friends and every situation you create has the potential to make you laugh really hard, as sometimes (often?) things don’t go the way you planned.
Oh and obviously … Llamas!