FIZZ is a third-person platformer about a robot, TAP, who tries to escape his dead-end job bottling soda at the factory. Players run, jump, and shoot their way through a Willy Wonka style soda factory.
I joined the FIZZ team midway through production. They had already created a lot of assets and the level was nearly complete. They also had a good idea how the game should play and feel. As the only programmer on the team, it was my job to implement the gameplay that the designers imagined. They mentioned Spyro the Dragon and other PS1-era platformers as inspirations for the style of gameplay they were after.
The camera in FIZZ smoothly follows the player, but it wasn't originally designed that way. The camera started life permanently attached to the player, rigidly following their every move.
I was working on a second revision of the camera but wasn't happy with how it was turning out when the team asked me to implement a way to record gameplay from a different perspective.
The camera I created for recording is able to move independently of the player and do camera tricks like rack focus and dolly zoom. I ended up keeping it as the ingame camera because it was a serious upgrade from the previous two.
Aiming is difficult due to the third person perspective, so I added the ability to lock onto enemies. An invisible game object called a targetingPoint is attached to any enemies or objects that the player might want to target. Any targetingPoints entering a sphere around the player are added to a list of viable targets, and pressing the E key or the right bumper will select the closest target.
While locked on, the player rotates to face the enemy and the camera stays behind the player to give them a good view of the action. If the current enemy moves out of range or dies, the player automatically locks onto the next closest target, or exits the mode if no other targets are in range.
Locking on makes it significantly easier to strafe around enemies.
FIZZ was the first project where I worked with imported animations. All the characters in the game were modeled, rigged, and animated in Maya, and then exported as .fbx to be brought into Unity.
I created the animation state machines that control which animation plays at any given time, and how animations transition into each other.
The vending machine enemy shoots soda pop bombs at the player.
I also implemented all of the sounds. Most SFX that play often, like explosions and shooting, have multiple variations that play at random each time they are triggered, to give them a more natural feel.
One of the last features I implemented before calling the game finished was a leaderboard that shows your performance.
Events already existed for players dying, killing enemies, and collecting caps, so it was relatively simple to create a scorekeeper class that subscribed to all of those events and tallied up the player's achievements during the game.
Tracked stats included kills, deaths, and completion time. You can sort the list by any stat to see who performed best in each category.
We showed FIZZ at Columbia College Chicago's Manifest, and had over 100 people play the game. I think the addition of a scoreboard stirred people's competitive spirit, as several players came back to beat their previous scores.