top of page

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.

ue-logotype-2023-vertical-white-1686x2048-bbfded26daa7.png

YEAR

2024

GENRE

3D Platformer

PLATFORM

Windows PC / Steam

DEVELOPMENT

12 Weeks

TEAM SIZE

18

RECEPTION

Game Development World Championship Winter 2024 - Best Student Game Finalist

GDWC 2024 Finalist

Best Student Game

40k+ Downloads

200+ reviews

image.png

(96% Positive)

bestgame.png
bestdesign.png
bestart.png

DGA 2024 Nominated

Best Student Game

BUAS Industry Awards 2024

Best Game - Best Design - Best Art

The Rookies 2025 Finalist - Game of the Year

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.

StateMachine.jpg

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.

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

"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.

Base Movement.gif
  • 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 Bounce.gif

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.

Pizza Dash.gif

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.

Stomp.gif

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

Walking.gif

Debug lines showing the player's velocity

Sharp Turn Slowdown input threashold for activation (not representative of final game)

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

JumpStompSquish.gif

Mesh Squish

JumpStompNoSquish.gif

No Mesh Squish

image.png

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.

image.png

Initial animation priority list

image.png

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.

Main Level
00:00 / 03:04
Main Menu
00:00 / 00:32
Credits
00:00 / 03:04

Tracks I made for the game

Victory Screen
00:00 / 01:13
image.png

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.

bottom of page