Home Adobe Substance

The Procedural Approach. Halo Wars 2 and Substance Designer

Offline / Send Message
r13 founder

Representatives from the Creative Assembly reached out to us and asked if they could share their experiences with the Substance Designer tool suite with the community. The following article is their break down of how and why they use the technology in their art pipelines at their studio. 

My Name is David Foss. I'm from Norway, and I’ve had the pleasure of working with the fantastic crew at Creative Assembly on the console team in Horsham, UK, for over 5 years now. It's been a true adventure, shipping Alien: Isolation two years ago, and now releasing Halo Wars 2.

Learning the dynamics and intricacies of big scale productions like these has been very interesting, and I'm pretty sure no studio has really perfected it yet, and probably never will. Time and resources are lost through iteration, non-synchronised schedules, going back on decisions and scope changes all of the time. And that's fine. It's the nature of the creative process and the fact that launching an AAA game is almost like launching a space shuttle. We aren't setting up a factory that produces a million identical consumer products, so there are limitations to how automated the process can be. And in fact, with creativity being key to what we do, we wouldn’t want to restrict that through too much process.

Saying that, every time you find a way to intelligently automate something in a production and pipeline friendly way, it's a big win. And we found a big win with Substance Designer.

It was during the start of pre-production for Halo Wars 2 that I started learning Substance painter and Designer. We had just shipped Alien: Isolation and I had some time for exploring and learning new tools.

I was immediately impressed with Painter, but it wasn't before I started getting comfortable with Designer that the bell rang loudly; this could fit into a production pipeline really well! I’ve played around with Nuke, Fusion and Maya shaders a lot, and I love the node based workflow, so I immediately got hooked on Designer.

Traditionally, texturing is a time consuming task done in Photoshop, with many layers and individual workflows for the different texture maps like Diffuse, normal, specular etc. There are now other packages that allow for painting directly on the 3d object of course, but what interested me in Substance Designer was the fully procedural way of working, allowing you to create a material and apply it to an infinite amount of assets.

I was quickly able to produce PBR texture sets for tile-able terrain textures and mesh driven texture sets for rocks and cliffs, and soon my colleagues and lead were starting to take an interest. It was particularly easy to get the rest of my team on board, because I could make on the fly changes and variations to multiple assets in very few seconds.

Adopting this workflow of creating textures in Substance Designer was surprisingly easy in the environment art team, and we soon had quite a few substance designer masters doing a lot of interesting complex materials. It certainly helped that the indie licence was priced in such a way that people could learn while at work, but also outside of the studio, trying new things in their own time.

Having made these materials, and wanting to apply them to many assets, we soon found that most of the time was spent on the logistics:

  1. Baking mesh maps

  2. Creating a new substance graph

  3. Instancing the material into it

  4. Connecting the mesh maps to the inputs

  5. Connecting output nodes for the rendered maps to the instanced material

  6. Rendering the textures to the correct place in the folder structure

Working with a colleague, we started brainstorming on the possibilities of automating this by using the existing Substance batch tools. The data needed to do this was all there, it just needed to be scripted somehow.

This is how Creative Assembly’s in-house tool; Substance Centre, came to be. We did joke about naming it Substance Abuse, but fortunately, common sense prevailed! The UI had a few iterations, and it will probably get a few more iterations before everyone is satisfied.

We found quite early on that we needed to decide on a system and terminology.

  • To create a texture asset, all you need to do is drag and drop files for low poly, high poly and your full material into the Substance Centre slots, and it will figure out the rest.

  • It reads what types of maps it needs to bake, and what outputs there are to render and it hooks it all up in the "asset graph".

  • It allows you to change the resolution and downscale each specific rendered texture for optimisation.

  • It stores all the information used to create each texture asset in an xml files, which in turn is used to maintain a database for materials and texture assets. This also allows us to keep track of dependencies. 

  • Dependency tracking allows you to find all texture assets using a given material, or even all materials using a substance tool you have instanced. It will populate a batch list for you, ready to re-render on your command.

Basically, it has become the one stop place for creating, editing and rendering textures with full perforce integration.

Imagine a scenario where you have a material graph that is used for 10 different rocks and cliffs texture assets, but it's also instanced into a tile-able material graph that creates sand dunes with rock debris in it. It's even used inside a material graph that produces rock decals with alpha for use on top of the terrain. Let us say that this all totals 20 full sets of textures, Diffuse, Normal, Spec, gloss, alpha etc.

Then…. your lead or art director comes along and requests changes to the colour of the rocks in the game. 

Imagine what this would mean if you created all of these textures in Photoshop.

You would have to go through all of those Photoshop psd's individually and save out all of those files to the correct paths.

Now imagine a world where all you need to do is edit the original material graph, and hit two buttons inside Substance Centre.

Substance Centre finds all the texture assets that depend on your graph, checks them out in perforce for you, queues the re-rendering of them all, and puts all the files in all the correct folders for you.

You would be able to show the new results in-game in five minutes, and four of those minutes would be spent on doing something else.

That's how you make art directors and producers happy.

I firmly believe the procedural approach is the way to deliver the volume and quality of content the consumer expects while keeping production costs down.


  • VictorSantos
    Offline / Send Message
    VictorSantos polycounter lvl 11
    Nice one! Very good way to include Substance into your pipeline, I still dig Substance Abuse though :P

    Thanks for sharing this David!
  • Nicorepe
    Offline / Send Message
    Nicorepe polycounter lvl 4
    A really nice read! its always cool to see the many uses of substances batch tools.
  • fearian
    Offline / Send Message
    fearian Polycount Sponsor
    When I read this I knew it must have come from your grubby mits Marks! :)

    Now imagine a world where all you need to do is edit the original material graph, and hit two buttons inside Substance Centre.
    Great. Good. Good for you guys. I'm happy for you.
    welp back to my real life where I don't have this neat tool. :v 
  • Benkeeling
    Offline / Send Message
    Benkeeling polycounter lvl 8
    marks said:
    So while I was working at Creative Assembly I was the person responsible for advocating for the use of Substance on this project, designing and building the procedural pipeline and also writing the supporting toolset (Substance Centre) - so feel free to post up if you have any questions, I'd be happy to answer them. The whole material/texturing authoring pipeline was basically my work, along with a lot of input from David Foss and Ben Keeling on the art team. I was supposed to give a talk about it at GDC last year but unfortunately the timings didn't work out.

    edit: to clarify, the stuff outside of authoring designer graphs is what I was responsible for, and the art team went way further than I thought they would with implementing awesome procedural tools in the graphs :)
    Thanks for the mention Mark, You did a great job on the tool and it shows. The Substance pipeline was a real credit to you. 

  • 0xffff
    Offline / Send Message
    0xffff polycounter lvl 3
    This looks awesome
  • dalekchef
    Offline / Send Message
    dalekchef polycounter lvl 2
    Is this tool available for download?
  • WaYWO
    Offline / Send Message
    WaYWO greentooth
    that's spicy , I need to learn substance, damn.
  • gnoop
    Offline / Send Message
    gnoop interpolator
    Actually  with Photoshop  linked smart objects, layer comps exporting, clever naming and a few scripts/actions it could be not that much different.
    I am  trying to make Substance Designer my main texture tool for years ,  It's definitely  has a lot of advantages     but   imo still too alien and clunky even for regular node based editor.  

    Through years I transfered a lot of my Substance Designer experience and ideas to Photoshop work-flow    and found surprisingly that  I could use pretty much same approach there too plus a lot of  traditional and much more convenient image editing tools.  Even curve editor and  gradient map  recoloring have so many nice and convenient options over SD, so well designed out of box.      

      Imo absence of node bypass and saved curve/gradient map/etc presets in SD makes it much harder to tweak subtle nuances  so important for true realism.   When it's a few clicks in Photoshop , it's a Gordian knot of connection lines in SD.

       I am dreaming about a kind of hybrid in between PS, vector tools and SD, half nodes, half layers/objects based.   
  • Kroeltje
    Offline / Send Message
    Kroeltje null
    Hi David!
    Which coding language did you use to write this tool? pyQT?
Sign In or Register to comment.