Garganta started off as a final year project in my Bachelor Game Design in RMIT, by 3 fellow students and me. It is a fast paced 3D precision platformer atmospherically and visually influenced by Tsutomu Nihei's sci-fi works, especially his manga series "Blame!". In it, you embody a silent protagonist in their journey through a mega structure with the quest of saving humanity from an unseen villainous AI, who went mad in its pursuit of knowledge.
Engine: Unity HDRP 2021 LTS.
Release: A full release was made on Steam, and you can play it here for free.
Production Period: Started July of 2022, finished early 2024, totaling a little over 2 years of production (in our spare time only).
My Notable Contributions:
VFX and Shaders: Most of the shaders, particle effects and post processing were done by me using Unity's Shader and VFX graphs. For example, the dust particles, the explosions, the black holes, etc.
Animating: Every single animation in this game is done by me. All the character animations, cutscenes, triggered events, etc. I animated exclusively with Unity's internal animation system by manipulating the transformations of objects in the scene.
Programming: Using C# through Visual Studio, I supported the lead programmer of the project. Some of the tasks I handled were programming the traps, the respawn system, the event systems for cutscenes, the interactable triggered events, etc.
Sound Effects: Every single sound effect in the game was created by me, such as the character's movement, character voices, the ambience for each level, UI sound effects, etc. This was done with Reaper, and sounds I have collected from free online sources.
Production: I maintained the timeline of the project, keeping track of important deliverable dates and events, assigning tasks to each team member in a weekly sprints format, with a stand up meeting every week. The timeline was logged through Trello, the team's communication through Discord.
SXSW Sydney 2024 - Indie Showcase
PAX 2023 - Indie Showcase
Fortress 2023 - Lan Party
Below are a few highlights of things I am proud of from this project in more detail (lots of text incoming!)
All the animations in the game were made by me! Below is a breakdown exemplifying my workflow, followed by clips of some of the noteworthy cutscenes in the game:
Character and environmental movement were done with unity's internal keyframe animation tools, so no fancy animated rigs nor animations baked into the geometry from a 3d modelling software.
For animations that loop without much change, so that I wouldn't need to repeatedly animate keyframe by keyframe by hand, I leveraged the Timeline's system ability to blend legacy animations by interpolating them. The main use case of this has been in the facial expressions of 101.
I also blended post processing effects in and out depending on what's happening on screen. I did this by creating multiple post process profiles with individual purposes and no other effects (example, screen blur, or blacking out the screen), and adding those into the timeline, and increasing or decreasing their blend values individually, eliminating the need to for a script to access the post process profile asset's values individually.
Dialogue and sound effects are played from the timeline itself. I made all the sound effects and voice lines of the whole game. 101 is my own voice, whereas all other characters are all text to speech bots with a lot of modulation and filters.
I programmed a subtitle UI system that changes the current dialogue lines whenever a timeline activates a signal.
A lot of the main VFX seen in the game were made by me, such as electrical sparks, explosions, lasers, etc. Most were created with the VFX graph (for the more sophisticated and more visible particles), but some of it using Unity's Shuriken system (more reserved for background stuff that the player can't see from up close, not as complex and lighter in terms of performance). Below I will highlight one of my favourites, the sewer VFX, with a technical breakdown:
The VFX's main sections:
All: This applies to every part of the entire VFX.
Droplets: The main body of the liquid coming down.
Splash Back: The water droplets that fly upwards upon making contact with an object below.
Fog: The steam that comes out from within the pipe.
Heat Distortion: The screen distortion that happens in the point of contact with an object below.
Mist: The steam that emerges from the point of contact with an object below.
The VFX is controlled by a script that regulates the intervals where the VFX as well as SFX takes place. This script is also responsible for adjusting the killbox that comes down in order to make contact with the player and kill them if they touch it in the wrong moment. This killbox moves in accordance to a spline, and can be regulated in its scale and speed (I made it a spline so that it gives me the flexibility of adapting the killbox's movement to the liquid's trajectory). It also ensures that the sound, visual effect and hit box are always in synch with each other.
Similarly with the VFX, a lot of the main Shaders seen in the game were made by me. All of them were created with Shader Graph, though sometimes I needed to convert them into HLSL to make minor adjustments. Below I will highlight one of my favourites, the Hologram, with a technical breakdown:
At its core, this shader is quite simple, a lit material with a base colour, normal and mask map. Here are the points that make the shader's main trick:
Similar to how I did with The Sewer Lord's eye, I made the base colour and emissive map white, so that it allows me to create a colour that I can multiply it by, so that all within Unity itself, I can determine what colour I want the base mesh, as well as its glow to be, hence why it is red at first, and it smoothly transitions into the white glow.
This material has a translucency channel, which is what enables me to fade it in and out of the screen (as well as make the horizontal lines that cut throgh it). The "FadeToNothing" slider makes the entire thing disappear entirely when set to 0, and appear when set to 1.
The second slider, "FadeHologram", essentially blends two "modes" of seeing the same object. When it is 0, it looks like a normal platform, but when it is 1, it looks like the hologram (with horizontal lines cutting through it and the red glow colour).
Through a combination of these two in the Timeline system's keyframes, I can smoothly fade the object from nothing at all into the hologram look, and then fade the hologram out, so that only the regular object remains.
The Sewer Lord (depicted above) is the only character I modeled for Garganta. They are an AI driven mad who now inhabits the sewers and ventilations of the megastructure you navigate. I therefore designed their body with the idea that they'd be able to navigate through tight crawl spaces, hence the snake like robotic appendage. The big eye is there for the main purpose of conveying emotion. Despite an extremely simple design, I managed to make them quite expressive by simply animating the eyeball and eyelids.
I modelled The Sewer Lord and UV unwrapped it using Blender, then textured using Substance Painter. Below are some technical details:
Worth noting in the above images:
The UV shells overlapping are on purpose, as the eye and the rest of the body are separate, hence I did it this way to give me a larger texture to make the eye's quality higher.
The total poly count of the model is just 7176, not much for a main character asset.
I designed the body with the same logic as a bone structure seen in any character rig, in other words, each limb is a parent to the next limb, so that when you move and rotate it, it affects all the subsequent limbs. Though I did not make a rig for The Sewer Lord, as it was unnecessary, since there are no skin deformations.
You might have noticed in the previous image of The Sewer Lord's texture that the eyeball is white, whereas in game it is red. I deliberately did that so that inside of unity, I can change the colour to whatever I want it to be by adding an emissive channel to the material. Above is an animation in the game where I blend the rgb values of the emissive channel to smoothly transition from blue to red
I got to design a portion of a level, which focuses on moving platforms and laser walls. I designed the gameplay, and created the visual environment by assembling props made by our artists, and some props I made myself. My inspiration was the concept of industrial storage facilities, with masive machines that move cargo around. Below is gameplay footage and images of what I designed: