Neon Driving Game Prototype
This is my process for creating a small prototype for a mobile driving game.
Initial planning and idea conception, establishing scale and theme.
In this case I imagined a mobile game that was inspired by a 80's cyberpunk / futuristic aesthetic that was set in a city lined with holographic advertisements. The player would drive around the city hitting checkpoints and completing tasks. I based the scale of the objects off a humanoid model I had done before and usually use as scale reference.
Basic block out and establishment of base forms.
In this case I created a simple set of road segments that would snap together, building pieces like windows, doors, and overhangs, general props, the fictional advertisements that would be around the level, and the car that the player would control.
Creation of variations and detail objects.
Starting from some basic window and door shapes I created a few variations to enhance visual complexity of the modular kit. I created extra detail objects that would be placed around the level.
Texturing of the objects
In this case I wanted to use as few textures as possible and textures that were very small to reduce app size and maximize GPU performance by utilizing batching techniques. I used a simple set of flats and gradients and UV unwrapped the objects all to the same texture using the flat colours for areas that would need to be snapped together and the gradients for standalone areas. Ultimately I was able to get every object besides the advertisements and the car to share the same material in Unity. This creates a big difference in terms of rendering cost.
Export to Unity, creation of building prefabs from the modular kit.
I exported everything to Unity and assigned the materials. Then I took the modular kit and built a set of buildings by snapping all the smaller pieces together. My approach was to give each building at least two unique sides to enhance visual variety and to allow them to face both opposing sides of the streets.
Layout of city.
I laid out a looping street pattern first and then I placed the building prefabs around to create the feel of a tightly crowded city.
Creation of the vehicle prefab.
I brought in the vehicle model I created and used the vehicle prefab from Unity standard assets to create my own controllable vehicle. I used the Unity standard assets AutoCam to follow around the player. I replaced the models with my own and set it up to work with both PC and mobile input.
This scene was initially extremely large to render on a mobile device, the total scene vertex count reaching around 1 million. All the objects sharing the same material helped but I further optimized the scene by combining the individual building prefab meshes into one mesh to reduce draw calls. I also combined the streets and the lamp posts. Then I baked Occlusion Culling so that objects not in direct view are not rendered and reduced the draw distance of the player camera. I found a mobile standard shader on github to use as the shader for my material. It was a good alternative between the built-in Standard shader and the built-in Mobile shaders. This shader let me add a fake spotlight which can be seen on the hood of the car and has a subtle effect on the buildings. I used a mobile particle shader for the advertisements. I was quite happy with these optimizations and could have further optimized the scene given more time. I also created custom graphic settings that disabled any unnecessary features, and made sure the scene rendering settings were set correctly.
Post processing, shot set up and checkpoints.
I added some colour grading to the main camera, set up the screenshots for the app store preview and add some checkpoints around the level to give some feeling of objectives. It ended up being quite fun to just drive around in this little city of mine.