Mr. Whiskers

In 2018, I led a team of 2 programmers and 4 artists to make an arcade game in 3 weeks.

The game is a lane-based runner about a cat's journey to heaven. Obstacles, enemies, moving platforms, bonuses, powerups, and portals connecting the levels are some of the features I worked on.

I also built an adaptive tutorial, and made the intro and outro sequences.


Here are some of the most interesting things I did

Custom level model

I used a custom data structure to represent the objects in a level, which allowed us to detect gameplay events such as collisions with obstacles or bonuses much more efficiently and with a greater degree of control than would've been possible with Unity's 3D collision detection system.

As the gameplay takes place on a number of rigidly defined lanes, all you need to determine the location of any gameplay-significant entity is the lane it's on and a simple one-dimensional range within that lane. Some extra bits are needed for cases when it's above a lane or between two adjacent lanes.

With this system, collision detection becomes a matter of checking a few flags and performing a trivial range intersect check. This made it extremely easy to introduce several anti-frustration features, for instance, registering a landing even if the player missed the platform by a small margin.


UML Diagram
Event broadcasting

I designed and implemented a high-performance event broadcasting system in C#, which made it possible to easily send arbitrary messages to any concerned object. Under this system, defining an event type is as easy as subclassing, and subscribing to one is as easy as implementing a one-method interface.

This made it possible for the codebase to stay flexible and made it easy to make changes further into the project.

More info on the implementation
Source code


Screenshot
Tutorial

On the first level of story mode, when the player gets to the first locations where the player needed to jump, time would pause and a prompt to press the right button would appear. This only happens if the player gets to the edge without jumping the right way. This makes the tutorial only show up for people who don't already know how to play the game.


Screenshot
Moving platforms

Some platforms move between lanes in regular intervals. They do a little tilt to the side before moving, letting the player know they're about to move. A subtle anti-frustration feature prevents them from moving if the player is too close to the edge of a platform.


Screenshots
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot
Screenshot

Builds of the game may be downloaded following these links. The project files are available in full at the game's GitHub repository