Meow Brawl

John Walden


Technical Designer

Game Designer

C# Programming

Sound & Music Design

Engine: Unity


DAW: FL Studio


Timeframe: Two Days

Team:

Designer: 1

2D Artists: 1


Date: August 2018

PROJECT DESCRIPTION

GAME SUMMARY

Meow Brawl is an 1V1 arena styled, PC local multiplayer game.


Gain points by using your defence ability to deflect the ball successfully. If you've taken ownership of the ball, you can also use it to collect additional points by passing it through fish items that spawn in throughout the level! However if you're hit by the ball and don't deflect it in time, you will lose points and those will be given to your enemy instead!


You've got 90 seconds to prove your cat-like prowess against your opponent.


Think you've got what it takes?

Download on Itch.io

Meow Brawl is a 48 hour game jam that I did alongside a group of friends from Futuregames. This was one of the prototypes I did and the art/UI work was provided for by Mariana Salimena from the Futuregames 2D course.


This project is an example of what I can achieve in a 48 hour time-frame, or more specifically, 10-12 hours worth of work over two days.


All systems were built from scratch, as many of them were new techniques that I had discovered and wanted to experiment with!

PLAYER & BALL INTERACTIONS

ASSET PATHS CLASS

GAME EVENTS CLASS

This is a public static class that holds a list of Action events


Below are functions relating to each Event - if not null, then invoke.


As class is static void, I can access this from anywhere and assign functions OnEnable to the needed events. I cound this to be a much easier way to work and was able to remove a lot of dependancies and keep my managers and scripts more self-contained.

When the player collides with the ball, they add their own velocity to the ball in the direction that they are moving.

This is done by getting the ball's Rigidbody2D and using AddForce.


The ball also changes to the same colour of the player, and becomes "owned by them".

Based on the player's index, they call a function from the ballControllerComp to set it's index.




After learning about Resources.Load, I came up with a system to access files easily by creating a static class that holds all the string paths.


I used this class to access files and load them directly only when required.


Resources.load<type>(assetPaths.stringVariable);


It wasn't totally necessary for this project in terms of performance but still wanted to try it out. Having them as string variables means if a file changes location or is renamed, this only needs to updated in AssetPaths once.


In hindsight, this could have been a static class as there will only ever be one.


An example of functions being assigned to events OnEnable.


As this was a 24 hour game jam, I would have taken the time to refactor the code a bit more, for example:


- Turning the last 3 public variables into properties so that they could only be set inside the GameManager.


- Making the Game Manager a singleton for extra security, as there should only ever be one.