Between Modeling and Texturing: Substance Designer in Rocket League
Rocket League is definitely one of the most fun games out there, and has been around for several years now, with the development team continuously creating new updates and content. Some of us within the Substance team are huge fans of the game, and regular players, and so having the chance to speak with Eric from Psyonix was a real pleasure for us - as was hearing him talk about the team's use of Substance Designer on the game:
Hi! My name is Eric Majka and I’m one of the lead artists here at Psyonix. I’ve been with Psyonix since 2007 and have worked on everything from characters to vehicles to props to maps. I spend most of my time working on new maps or items for the cars. I really love organic modeling, and the more time I can spend in ZBrush the happier I am! I also love being able to work on the maps we make, and trying to pull all of the various elements together and finding ways to make them different yet appealing to our players.
Rocket League was released a few years ago but still has a very consistent and enthusiastic fan base. How do you explain this, and how do you keep them happy?
I think it’s a combination of things that work well together. It helps that nothing out there is quite like Rocket League, so anyone that needs that particular void in their gaming filled doesn’t have any real alternatives to what RL offers. On top of that, I think the fact that we’re continuing to support the game as much as we can with frequent updates shows the fans that we’re just as passionate about it as they are.
From an artistic side, we’re fortunate that RL is so goofy that almost anything (within the ‘E’ rating) goes. We might make a wheel that looks like it belongs on a sports car one day and then turn around and make a hat that is a floppy cow udder.
How did you discover Substance and why did you start using it on the production of Rocket League?
I found it sometime in 2015; I don’t remember how. I do remember seeing a video on it and recognizing that this was a breakthrough in how the industry goes about texturing things. Rocket League uses Unreal Engine 3, so we don’t actually make full use of a PBR workflow (and for that matter, much of our stuff doesn’t even use specular). It still felt like the Substance suite was something we didn’t want to just let slip by given how revolutionary we felt it was, so we kept trying to find ways to use it. It started small but then as time went on we found more and more uses for it.
Could you tell us more about your specific use of Substance on the game? On which aspects of the game did you use Substance for texturing?
We’ve gotten to the point now where we use a Substance product any chance we get. All of our recent maps have been textured entirely with Substance Designer by either myself or Bobby McCoin, our other lead artist, and most of the hats or antennas I’ve made go through Substance Painter. We don’t even bother making a high-poly mesh for tiling textures, even if the plan is to only use the normals and then to do heavy customization in-engine through the material. A lot of the stuff in the game will use your team color so our ability to set things up with masks in both Substance Painter and Substance Designer has been invaluable. I even have some wheels that I made entirely in Substance Designer, using a height map from ZBrush.
This one was originally started in 3ds Max until Bobby looked over at what I was working on and said, “Why don’t you just use Substance Designer?” This was all the encouragement I needed!
I’ve recently made the tread of most of my wheels in Substance Designer, as it gives me the freedom to make subtle changes. Here, I knew starting out that I was going to take this route again. The hardest part here is dealing with the UV distortion that naturally happens when working on a curved tread, but thankfully the non-destructive Substance Designer workflow makes that easy.
The rim itself was the main part I wanted to focus on since modeling that by hand would have been tricky. So the low poly for that was just a heavily subdivided plane for which I built a height map. I didn’t use anything crazy for nodes - usually, just a Shape node that I would Transform and Blend with other shapes to get the look I wanted. Directional Warp nodes were also great for producing subtle curves in shapes when needed.
I think I abuse the Histogram Scan node - I use it, and the various blur nodes, like crazy! Blur, Blur HQ, and Bevel will all help to make your normals pop, but each one gives a slightly different feel. If I needed something softer I’d use a Blur HQ and then feed it into a Curves node to tweak how round I wanted the beveled edge. If I wanted something sharper I’d use Bevel or just Blur. Another one of the benefits of using Substance Designer this way is that I was easily able to swap those three out depending on what I needed, and with small adjustments I had a whole new look.
Once the rim was done I exported the height map as a 16-bit PSD, since I found that this gives the best results when displacing in ZBrush. I heavily subdivided the plane, which was already UV mapped, and applied the height as a displacement and tweaked the depth of it until it was where I wanted it. I had to do some back-and-forth with Substance Designer to get things balanced right - for example, the screws and bolts were initially too tall compared to the rest - but, again, thanks to Substance Designer that was just a 15-second fix.
From there I took the high-poly mesh and retopologized it to something that could be used in the game. Rocket League requires pretty low specs because it’s important to the player that things run smoothly and quickly. After that, I baked it all down and took all of my maps into Substance Painter to combine them. The glowy parts and the ‘starfield’ effect were all easy, thanks to the use of fill layers and masks in Substance Painter, which allowed me to set it all up in UE3 for our FX team to work with.
The Black Market
Our Black Market decals are something we wanted that would apply to any vehicle you need to put them on (excluding those that we’re license-restricted not to mess with). The idea of trying to maintain a unique version of each material for each car would just have become ridiculous, so we came up with a more universal approach.
One of our technical artists, Ben Beckwith, put together this graph to combine the various maps we need into an RGB-packed texture and a normal map. We bake two different curvature maps with different detail settings, a Thickness map, and a UV to SVG map, and then do some modifications on them, like a Bevel and Edge Detect, finally combining them into the RGB.
We do this for every new car we make. The purpose of these maps is so that we can use the information they provide, like curvature or the normals we make from them, to drive effects along the edge of each car. ‘Heatwave’ is one of our popular Black Market decals and it gives a fiery effect along the convex parts of your car, which is driven by the maps we make in Substance Designer.
Bobby’s approach to these world materials is to use the same ‘height map first’ theory that we use on other parts of our Substance Designer materials. Rocket League is a moderately realistic yet moderately cartoony game, so for us it’s more about shape language and the story those shapes tell than having realistic dirt or rust.
Starting with the height map is also an easy way to simply focus on the form of things without worrying about colors yet. We start with some of the larger shapes that would help define some of the larger elements, such as pipes or panels, and build from there to smaller details.
The basics of the shapes are similar to how the wheel was created - Blend, Shapes, Transform, and Levels are some of the most commonly used nodes. Keeping things basic helps to prevent us from going overboard with details.
We build some of the textures as trim textures, as most of our textures for the arenas are tiling and that lets us have greater visual fidelity at the scale we work at. For these trim pieces, we kept the various sections in quarters as it made the job of the modelers that much easier when it came to UV mapping. It also gave us the ability to swap out textures later if we felt it wasn’t working.
Do you have any tips or tricks to share with the Substance Designer community?
One of the biggest tips I could give is with regards to how Substance Designer specifically gives you the freedom to just mess around. As an artist, it’s sometimes scary to feel the pressure of deadlines, or to feel like everything you make has to be amazing. Some of our best stuff from Substance Designer came out because we just started changing pull-down menus in nodes, or by combining things in ways where we didn’t know beforehand what the result would be. We’ve had many conversations that went something like, “Hey, check this out - I was just messing around but this came out pretty cool!” The beauty of a non-destructive workflow shouldn’t just be so that if your AD wants something changed it’s easier to fix - it should also give you the courage to experiment and to see where things take you.
How will your Substance and texturing pipeline evolve in the future?
If you guys could build in UV mapping and some form of low-poly modeling I’ll just go ahead and uninstall all of these other 3D apps I have. ;)
In all seriousness, I imagine that as we move towards the future we will find new ways to integrate Substance products into the pipeline. We’re excited to see Substance Alchemist as it evolves and to find potential ways to use that as well, if possible.
Can you tell us more about the next content releases you are planning for Rocket League?
I can’t give any details about what’s coming out next but I can promise that it heavily relied on Substance tools!
Any last words about Substance? Is there anything you’d like to say to all the Rocket League fans out there?
I want to say thank you to the Substance team - I haven’t met a single person at the company who isn’t incredibly nice, and who genuinely cares about listening to their customers. Every software update offers something that makes our lives easier as game developers, and I appreciate that! Also a huge shoutout to Wes McDermott for ALWAYS being willing to help out when I had a question, Nicolas Liatti for showing so much support to me and the art team, and Alexis Khouri for inviting us to have a Rocket League tournament at the very first Substance Days (which I still consider a huge honor).
For the Rocket League fans, I want to say thank you for being so passionate about our little game. It keeps us inspired to push the limits of what we can do when you have a community that is so supportive and into the game. It’s the kind of give-and-take relationship that every game developer dreams of having with their players, and we are humbled by it. Thank you so much.
All images courtesy of Psyonix