For anyone hearing about this project for the first time, The Plight is an environmentally narrative driven horror game that began as a final-year degree submission in 2015 by five KDU College University game development students, myself included. The game puts the player in the shoes of a mysterious young man moving into a house with little-to-no clues as to why aside from the facts that the house belonged to his late grandmother and that he appears to have inherited it. Gradually the dark secret comes to light about the house and the old woman who isn’t what she appears, revealing the horrible atrocities that took place there, and the young man’s part in it.
It’s been almost two years since we started working on the The Plight in it’s full form. Where the original version of the project had been quickly assembled and rushed, a major intent with this time was to tell a better paced version of the story with much more polish and flare. That being said, the past few months have still had a steep learning curve. The main focal points of this post will be a portion of the process we went through to record the teaser which will be released shortly.
Over the course of the production we’ve switched from exclusively using traditional photo-manipulation techniques to leveraging Allegorithmic’s Substance Painter software on certain objects.
Working with Substance Painter
Moving to Substance Painter was a huge shift in approach in a number of ways for me personally, some causing frustration, but eventually saving a huge amount of time for a much higher quality of detail. I had to stop thinking of using photos of surfaces to create textures, and instead think of materials in their entirety and how they’re derived.
Coming from a background where texturing was done with no more than Photoshop and an Unreal Editor window, my go-to process was to block out the object with some color-map elements (photos or digitally generated textures) and then check them in engine to see how they looked. Lastly, once i’d decided on the colors, i’d fix the orientation of any details that needed it, hide any seams with some cloning or color adjustment, flipping between the engine window and Photoshop rapidly throughout the whole process.
In Substance Painter, all the material channels (Color, Normals, Metallics, etc) are created, modified, and displayed simultaneously in the viewport (which sometimes results in a lag at higher resolutions). This meant that I had to start working backwards from the way I usually did things (starting with a color map, then deriving the other channels from that). Another thing that happened was that I had to get used to using masks for everything, including making sure the grain of a texture changed directions properly.
For this asset, the UV’s of the wooden frame are laid out the way they are connected on a surface. That is to say that the edges are connected in a way such as they are in 3d space, instead of being broken up and laid out in the same direction. Originally that was to reduce distortion and a hard transition seam from showing up. However, that meant that the wood material had to be duplicated, rotated 90 degrees and polygon-masked out based on the direction it flowed. It’s a small thing, but you’d be surprised how often it shows up.
Another thing to note is that the layer stack in Substance painter doesn’t exactly behave the way you’re used to seeing in Photoshop. Again, all the channels are dealt with at the same time.
Switching to other channels (colour, normals, height, etc) is done by changing the drop down menu in the top left corner. As for the blending modes, Normal simply means that the layer behaves like a normal opaque layer as it does in photoshop, however Substance Painter gives the user an added blend mode that lets normal maps be blended painlessly and correctly over each other instead of needing to use multiple layers and adjusting their color channel settings.
As of right now, Substance painter is still missing some basic tools you’d think of as essential in a digital graphics program. Among them being the marquee tool for selection and fill, a path tool for more complex and specific shapes, and direct translation/rotation tools for layer objects. Knowing that, you’re probably not going to stop using Photoshop to do any texture work for your assets. Regardless of those little inconveniences, Substance Painter has cut the time spent on texturing in half, making it an invaluable tool for any 3d artist working on photorealistic or hyper-realistic styles.
Using Shaders in Unreal
Shaders in unreal are a bit more tricky. I’ll admit I’m still not completely sure of how everything works in the engine’s rendering pipeline, but I’ve definitely learned a number of things in the process of setting up the environment for our teaser.
Subsurface scattering is a wonderful shader model available in unreal’s material editor which allows for a translucency effect seen in skin. A Subsurface Scattering profile needs to be generated and configured, after which it can be applied to a material which has been set to use the Subsurface Scattering shading model. The result are almost immediately satisfying in unexpected clarity.
On the other end of the spectrum, something that was a little more elusive was the material setup for transparent and/or refractive objects that also reflected light.
The process to enable this is in the material settings; after setting the object’s blend mode to translucent, the lighting mode (under the translucency panel found further down) needs to be changed from “volumetric directional” to “surface translucency volume”. Beyond that, it’s a question of adjusting the roughness and opacity to find a sensible mix for the type of glass you want.
As the level design and actual furnishing layout of the main level environment is still undergoing restructuring based on testing, we needed a way to set up any wiring props in a way that the level designer could dynamically rearrange any wiring props while having the flexibility to change the position of plugs relative to the appliance props.
For this we used a common implementation of the spline mesh blueprint, which allows for indefinite repeating cable/tube type objects conformed to a spline with bezier handles in the engine.
Certain objects and characters in the plight need to undergo a transformation at runtime. Contributing to this effect we used a series of scalar parameter values to drive interpolation between different textures.
This means that a blueprint could be used to directly trigger a smooth transition for an object between two textures in a number of ways.
Developing this project on our own has brought about the usual and not so usual set of challenges that most independant game-devs encounter, but overall it’s been a priceless learning experience. We’re close to releasing our in-game teaser, and can’t wait to see what you think! The Plight has been our passion project since the earliest build of the game in 2015 and we hope that you’ll have as meaningful of an experience playing it as we did making it.
Additionally, I can’t stress enough that we’re very new to this and any feedback on what we could be doing better is greatly appreciated. Tweet at us @CellarVault, at me personally @EshanJayatilaka or find me on Facebook if you wanna find out more or suggest a better way to do something.