MooMoo Madness logo
C++ IconUnreal Engine Icon

Sections:

About

Moo Moo Madness is a simple, two-player party game. Players go head-to-head as cows on a farm who’ve gone mad and want to destroy everything in their sight. To win the game, players must rack up the most points by destroying as many objects as possible within the 2 minute time limit.

MooMoo main pic

Design

Highlights

Gameplay

This is a straightforward game driven by a few main mechanics. To win a match, players must rack up the most points by destroying as many objects on the farm as possible. To do so, they can either run over objects or lunge at them. To keep the energy high throughout each match, players have unlimited stamina and only a short cooldown when lunging. The lunge mechanic was specifically designed to be used while sprinting. My goal was to create a smooth transition from movement to combat in order to maintain high momentum that reinforces the concept of being mad cows lose on a farm.

Using the same sprinting and lunging abilities, players can also attack their opponents to temporarily stun them. When stunned, players get a debuff effect that slowly drains their points until they can land a successful attack on their opponent. This feature was created to add a little more strategic complexity and encourage player-on-player encounters that make each round feel more dynamic.

MooMoo main gif

Level

While there are breakable objects throughout the map, I designed several key locations with a much higher density of them to naturally draw players in. These include the garden planters as well as the corn, wheat, and sunflower fields. My intent with this design was to always give players opportunities to interact with the environment, while also creating clear hotspots where they could rack up points quickly. Concentrating these areas of activity also encourages more player interaction, since players are funneled toward the same locations.

Landscape picture of corn and wheatfields

To further support player interaction, the level was built with a circular flow so that if players initially headed to different sections, they would eventually converge. From the starting pen, I aimed to guide players’ towards the corn field, then to the wheat field, the sunflower field, and finally the garden planters, before looping back toward the starting area.

Design Document

Programming

Highlights

The code sample below shows an example of how I handled networked code for both the client and server side. Specifically, it represents how I implemented the headbutting (aka lunge) mechanic.

Multiplayer code sampleMultiplayer code sample part 2

On the client, I check if the player is currently charging the headbutt attack. If they are, the server is then called to start a multi-frame trace that runs on a looping timer, checking if the headbutting player makes contact with anything on each tick while the attack is active. It’s crucial for this code to run specifically on the server because combat related code is especially sensitive in a competitive multiplayer game as it can be manipulated if easily accessible client slide. With the server taking care of traces, it’s much harder to manipulate whether or not player hits are registered.

The multi function is propagated to all clients to play the headbutting animation on the relevant cow as the server starts calculating the trace of the attack.