Tom Cruiser’s Bounty is a on-rail space shooter. Your goal is simple; you need to collect the bounty on Peter, the boss of Peter’s Hemleverans. Why? You’re a bounty hunter. How? With your trusty set of space wheels, of course. But beware, Peter’s henchmen are vicious, and don’t take kindly to strangers.
A lot of particle effects
A lot of custom shaders
PBR (debugging & implementing new model)
Pipeline & Tools
Fullscreen shaders (FXAA, SSAO, Chromatic Abberation, Sharpening, Fog)
Created in 10 weeks - at 50% (4 hours/day)
Custom in-house engine
3 Level Designers
2 Technical Artists
Creating the tools
At the start of this project, we didn’t have much. No engine, not many tools, except for a model exporter I had been working on previously, when learning Python in Maya. This tool of course continued to develop as more features were needed. In the end, a mere 10 weeks later, we had this game, with plenty of tools, like a basic implementation of my Maya To Painter in the model exporter, a level exporter in Unity that exports to a JSON format and a DDS-converter plugin to Substance Painter. I really enjoy working with the pipeline, since it involves working with, and getting feedback from other people who are actively using something that I’ve made. Seeing that tool work, saving them time and potential headaches, feels nice. See an overview of all the tools I’ve made on the Tools page!
Since we were going to make a game in space, I knew I would have to make a spacey skybox shader. It has several components that makes it work. It has a texture that is packed with information, created with Spacescape; I basically made 3 grayscale textures by only adding layers with pure red, green and blue values. The exported texture doesn’t work well by itself, but with some adding and multiplying the panning textures in a shader, I was able to get a much more dynamic result than I would’ve with a normal texture.
Writing shaders for the HUD was surprisingly fun. The curved health and overheat bars were interesting to solve, because I needed an angled gradient that had its center a certain distance away from the actual health bar. I then remapped this gradient to be able to smoothstep with the normalized health/overheat value that was sent to the shader. The hearts start moving when you lose lives, to make the player pay more attention to their health. This is just implemented by distorting the UVs using a panning perlin noise.