PIZZAPOCALYPSE
Game Designer
DESCRIPTION
As a pizza chef, master your pizza toolset to traverse a corporation-ridden city and make a delivery to those in need in this cartoony 3D platformer!
It feels like the world has forgotten about the joys of authentic, handmade pizza, but one pizza chef is determined to deliver rich, traditional Italian cuisine in spite of the oppressive Pizza Corps.

YEAR
2024
GENRE
3D Platformer
PLATFORM
Windows PC / Steam
DEVELOPMENT
12 Weeks
TEAM SIZE
18
RECEPTION

GDWC 2024 Finalist
Best Student Game
40k+ Downloads
200+ reviews

(96% Positive)



DGA 2024 Nominated
Best Student Game
BUAS Industry Awards 2024
Best Game - Best Design - Best Art

The Rookies 2025 Finalist
Game of the Year
ROLES, RESPONSIBILITIES and CONTRIBUTIONS
Design Lead
3Cs Designer
Audio
-
Composing and arranging the Main Theme and variations.
-
Engine implementation and audio mixing of 81 SFX.
-
Audio spatialization.
-
Aligning all implemented features to make sure they all fit a quality standard and support our intended player experience.
-
Making sure art assets support gameplay and provide adequate readability.
-
Conducting playtests, and organizing the data to guide the next iterations of various game mechanics.
-
QA testing and various bug fixes.
-
Concepting and implementing the main character's moveset.
-
Concepting and implementing camera functionality.
-
Playtesting and iterating on character metrics and control scheme.
-
Guiding iterations and implementing player animations with Unreal's Animation Blueprint.
( 3Cs = Character, Controls, Camera )
DELIVERABLES
PLATFORMER CHARACTER CONTROLLER OVERVIEW
For this project, one of my main roles was that of designing and implementing a platformer character controller.
One of the game pillars we decided on very early in development was "player expression", we wanted to allow players of different skill levels to play the game in different ways. One player might take it slow, gathering every collectible and exploring every corner of the level, while another will try to optimize how every move is sequenced to perform crazy stunts.
In practical terms, I needed to make an easy-to-learn and hard-to-master character in ~8 weeks.

Movement State Machine Overview
FIGURING OUT THE MOVESET
The most important aspect of any platformer is the player's moveset. Every other mechanic and system in the game builds upon it, so it was important for me to make sure each of the player's moves were simple (to allow building upon them) but could still be used in varied ways when combined which each other.
EXPLORATORY PROTOTYPES
Over the first few weeks of the project, the team and I experimented by creating ROUGH (emphasis on rough) prototypes for different moves and gameplay types, including more combat-focused gameplay.

Collaborative prototype where we locked the camera and added a homing system for enemies.
INITIAL PROTOTYPE
One of my teammates had the original idea for "throwing a projectile and then dashing to it", but I wanted to give a different take on it by giving the player a single "boomerang" weapon that would return to them upon thorwing (which later became the pizza!)

"boomerang dash" prototype
FINAL MOVES
After hours of tweaking values and behaviours, these are the moves create the Chef's moveset.
Base Movement
The "default" move-set for probably over 90% of platformers since Mario Bros: Walking and Jumping.
-
Horizontal movement always pushes the player in the direction they are facing.
-
Dynamically changes rotation speed for more accurate movement.

-
The pizza can be bounced off walls for a "wall jump" effect.
The most common move in the game. Walking up the pizza boosts the player up from wherever the pizza is. Holding the throw input can leave the pizza out indefinitely, essentially allowing the player to create their own platforms.
Pizza Throw and Bounce

Pizza Dash
When the pizza is out, the player can press a button to dash to it, allowing rapid horizontal traversal on the ground and in the air.
-
Dashing and immediately throwing the pizza allows players to combo a dash into a bounce, maximizing air time and allowing the crossing of large gaps.

Stomp
Although not core to the move-set, the stomp adds fun additional input sequences and opportunities for the player to express themselves.
-
Stomping on bouncy things gives you a massive upward boost.
-
The stomp can be canceled by throwing your pizza.
-
Inputting the jump during the stomp bounces the player off the ground very high.

What
Utilizing vector math in Unreal Blueprints, I've implemented a system that changes the rotation rate of the character based on their velocity and automatically "breaks" when the player inputs a sharp turn, allowing effortless directional changes that both look and feel smooth.
How
The character always moves in the direction they are facing.
The rotation speed is inversely proportional to the character's movement speed, meaning the faster they move the slower they rotate, and vice-versa.
Whenever the player's input is above a certain threshold, their character automatically breaks, thus increasing the rotation speed, allowing the character to turn faster and then accelerate, similarly to how a race car tackles a corner.
Why
Making the grounded movement feel responsive is very important for a platformer. This solution allows the character to maintain a nice "weighty" feeling we tried to hit with the rest of the move-set without compromising on maneuverability.
Improving the Horizontal Movement

Debug lines showing the player's velocity

Sharp turn slowdown input threashold example
(not representative of the final game)
What
When the player character jumps, stomps, or lands, the character mesh gets squashed and stretched to enhance the underlying animations, which supports the bouncy and cartoony feel of the pizza chef.
How
Simply put, the stomp, jump, and land events in the main character are tied to timelines that alter the player's mesh relative scale based on a customizable curve, allowing me to create squishes and stretches of varying intensity and timing.
The land one, for example, is relatively small with a sharp dropoff in the beginning and slowly going back to the default scale, while the stomp animation has a slowly increasing curve before a quick drop-of that deforms the player character a lot for just a few frames, really making the move feel a lot more powerful.
Why
The team only had 1 animator on this project who also had to do the character rig, meaning character animations could only start halfway through, leaving us with 4 weeks to animate and implement everything. This meant it was more important to make sure the required animations were done at all, which didn't leave us with a lot of time to experiment with some more cartoony styles, which is why I helped support the existing animations with these extra motions that add some much-needed bounciness to our character.
Player Mesh Squishes

Mesh Squish

No Mesh Squish

Stomp Animation Curve (1 is the default scale)
ANIMATION IMPLEMENTATION
To support the different moves and states the character can be in, I created a list with the animations we would require, along with their priority (in case they couldn't all be implemented due to time constraints. Over the project, I was talking to our team's animator very frequently to ensure the animations would translate well to the game's perspective and provide players with enough feedback about the character's state, making sure all animations blended smoothly between each other when I implemented them utilizing Unreal's Animation Blueprint.

Initial animation priority list

Final Engine "Player Animations" Folder
AUDIO
I enjoy making music and have done it for most previous projects I've worked on, no one on the team had any experience with audio so it was up to me again to source, mix, and implement the game's soundscape.
Tracks I made for the game

List of all sounds I implemented in the final game, counting variations there are 81 Unique SFX.
POSTMORTEM
What went well
-
Player Moveset: The final player move-set provides some really fun traversal tools while still being intuitive and easy to learn for most players.
-
Platformer Metrics: The effort during the initial stages of the project to ensure the various variables that we could tweak (jump height, walk speed, gravity) were set up *just right* proved paramount to supporting the good feel of the final character.
-
Animation Pipeline Setup: By the end of the project, the process I had set up with our animator was efficient, allowing us to iterate on animations quickly and have that reflected and ready for testing in-engine swiftly.
What went wrong
-
Poor in-editor performance: No one on the team had ever worked on a project this large before, so we were only really worried about the in-game performance. The main chef event graph has so many nodes it takes a solid 3 seconds to make ANY change even on high-end machines.
-
Non-intuitive onboarding: Although the game mechanics were very simple, easy to understand, and straightforward to interact with, the "tutorial" area of the game does a pretty terrible job at teaching them and is by far the hardest part of the game.
-
Inconsequential enemy interactions: The enemies in the game could all be easily ignored and don't change the gameplay up a whole lot, although they still help the environment feel lively and dynamic.
What I learned
-
Be cautious of implementation: Always make sure what I am working on is performant and could be easily expanded upon in the future or understood by a team member.
-
Onboarding is super important: For most players, teaching them how to play the game naturally could be the difference between them loving or hating a title.
-
Playtest extensively with different kinds of people: Every time I brought new people in to play our game it revealed very clear improvement points and gave me a new perspective on the game's mechanics that I had gotten used to and didn't even think about.


