Custom Texture Pipeline
Continuing on with our player redesign, it was texture time! After our world building and game design chat I mentioned earlier, the gritty, rusty aesthetic was really calling to us. We experimented with a little game part of a game Jam back in November called Devs Under Duress. It was a gam about juggling dice in the air with a revolver - basically skeet-shooting with dice. During the week and a half we worked on it, we experimented with a style that was going to heavily influence out current style.
This is where I experimented with a pretty cool Procedural Material that’s able to process any texture and output a crunchy, color banded, noisy image. Super cool results, but it’s draw calls were through the roof and the shader instructions were in the several hundreds, not something you want see when everything derives from this material, so I needed a way to bake it!
Even though I technically had infinite material budget since I was baking, I still managed to optimise the shader to well under a hundred instructions and simplify things a little too. This wasn’t just a color baker, all aspects like Normals, Roughness, Metallic, etc. could be baked out using this material. Having a one size fits all material was a game changer for us.
This was my first time messing with Editor Utility Widgets. It was a simple case of reading parameters from the master material, assigning sliding bars to Scalars and Color selects for Vectors. I had to jump into C++ for a quick function just to expose the engine’s native capability run mini levels in a viewport, so we could get a live preview of the material on an object! This was probably the most satisfying part. Weirdly, not long after I created this, Puck’s Pixelizer released on Itch.io which functions similarly: https://puszke.itch.io/pucks-pixelizer
Once some free time returns to me I’d love to expand my version into a plugin that directly works with Unreal Engine, being able to preview all our own meshes and bake straight to them, maybe even with a built in mesh deformer to let folks really crank that retro style!
As for the actual baking side of things, Unreal definitely makes it a little funky with how it reads texture files, folder structures and asset overrides. This part took the longest, often leading to a bit of trial and error too, mainly because I was trying to future proof it so anyone on the team can use it and isn’t locked down to my own PC for example.
This such a huge feature for us, as now all we needed was some free textures, pop them into my texture generator, mess around with some values and export it immediately for game use! It sped up our asset creation by an unbelievable level. In the past, we used Substance Painter to apply a tonne of fine detail and precise normals. I believe there’s still a place for that in our current game, but I can only imagine it being used for one time assets and their texture would be processed in our pipeline anyway. This has let us get to that “Polished” level with our assets so much faster!