Zappy Cats: Character Design

project 1 image

C++, Unreal Engine 5 Blueprints

Design Goals...

Zappy Cats is a 3D puzzle platformer designed for self-paced exploration. To serve that I created a playable cat with exciting movements, broad interaction abilities, and expressive reactions to gameplay. Players can also experience the lazier side of cats and let it sit and entertain them with different idle animations, or switch into PhotoMode to take pictures of their surroundings.

Abilities...

Demo video showing the Player Character's various abilities.

Demo video showing the different buff/debuff Effects the Cat can receive through gameplay.

Approach...

Everything in this game was designed with as much silly-cat energy as possible, from the animations used to give life to actions, to the method of recharging, to the curve used to animate the cat's blinking. I had a lot of fun finding ways to enhance these themes, but I also made sure the game actually worked well and felt smooth to play.

I created a set of classes, components, and interfaces that could be used between different character types without requiring they all inherit from the same base class. I wrote custom components for common character needs such as health, launching projectiles, riding mounts, and taking buff/debuff effects.

character uml

Simplified class structure showing usage of components and interfaces between Player Character and Enemy Character classes.

Variation...

The laser is used to attack enemies, break apart obstacles, and activate certain buttons, but it shouldn't work the same in water. That's just not realistic...

Instead, when the cat gets wet or is swimming, the laser manifests as a shockwave that can send archs of electricity at up to 3 targets. This introduced new mechanics, like activating multiple buttons, or attacking multiple enemies at once.

The shockwave works in shallow water, deep water, or even if the cat is out of water but still wet. This also affects how far the effect can travel.

A main shockwave VFX is spawned with the same color as the Cat's eye color, and the radius dependent on the travel distance. Next it detects the Pawns within the travel distance, and if they have the "Shockable" tag, it deals shock damage to them. It stores the first three of the hit Pawns, and spawns an electric arch VFX that reaches out from the Cat to the target. I limited it to three to save on performance.

Generating the "shockwave" meant creating a convincing VFX for the main "shocks" and an additional "electric arch" VFX that could be spawned per target and dynamically stretched, so that they appear to branch out from the Cat to the target. More on the art side of that here.

Animation...

To integrate the Cat's abilities with their appropriate animations, I extended Unreal's Animation Instance class and used it for the Cat's Animation Blueprint. The Animation Instance tracks several of the Cat's relevant properties which are used in the Cat's Animation Blueprint within a state tree to determine which animations to play. I also used BlendSpaces where appropriate, such as for transitioning between idling, walking, and running.

character uml character uml

(L) Main State Tree for animating the Cat's various actions. (R) Blend Space for transitioning between walking and running based on ground speed and leaning direction.

character uml character uml

(L) Jumping State takes a boolean to change the animation depending on if it's the first or second jump. (R) Animation Montage used to animate the cat during its Prolonged Idle state.

Prolonged Idle...

I created a modular and randomized idling system, where the cat will sit down and select random idle animations to play at random intervals. This avoided the monotony of a single idling animation and makes it easy to add, remove or otherwise edit the animations used. This also makes it so that if the Player is using Photo Mode, their cat will sit and essentially pose for the camera!

Bonus...

If you've ever played any of the original Tomb Raider games you'll know that if you spam the jump and dodge keys you can get Lara Croft to perform a bunch of dazzling flips. It doesn't affect gameplay, but it's fun! I wanted to give my players a similar feature so I made it so that when the Cat shoots a laser in the air it's pushed backward by "recoil" and does a backflip. It's not exactly the same, and it's not required to progress through any of the levels, but my play testers liked it!

Retrospective...

One of the things I really wanted to do for this character design was implement more custom animations and features. For instance, having the cat's head dynamically turn to track the crosshairs, or to leave pawprints behind per each paw, or even to give the player the option to put different hats and accessories on their cat. Unfortunately, I couldn't get the Cat's rig working properly in Unreal, and I wasn't able to access the skeletal mesh's bones individually.

Next time I'll figure it out and get a working character rig in Unreal, but ultimately I think this was a good limitation to overcome. Not everything is going to work the way you want it to, so you have to find different ways of acheiving your design goals!

BACK