The idea of Emutilation is to blend top-down shooter elements with tower defense mechanics. The game aims to mix the strategy of tower defense with the intensity of a bullet hell. During the waves, players will have to actively avoid projectiles while shooting the enemies themselves. They may also construct walls and turrets to slow down or damage enemies. All of these elements are enhanced by our comedic setting, based off of the Australian ‘Emu War’ of 1932, a war that has since become a popular meme.

The game has quite an interesting dynamic. During the building phase, the player would have to choose how to use their resources. There are three main routes that the player can choose:
1) The player can build turrets

2) The player can upgrade their own weapons

3) The player can construct a maze which would enhance the effectiveness of 1) and 2)

The fact that the player can design and construct a maze allowed a sense of player expression, which is rarely found on any tower defense games.

We also have a minimap on screen. It tells the player the predicted path of the enemy and the structures that the player have built. It however does not tell the player where the enemies are. At the same time, turrets that are engaging enemies would be flashing on screen. This means that the turrets in our game serve three different purpose:

1) Damage against the enemies

2) Obstacle that block the enemy path

3) Early warning system, letting the player know where the enemies are

Personally I was in charge of most of the programming in the game. Both my partner and I are the designers of the game. The top down shooter part was rather straight forward, but the tower defense proved to be a programming challenge. 


Bradley Pirkle


Our map generation and spawner allows a great deal of customization for level design. Master spawn get information from level script, then distribute the information to the SpawnPoint script.

Master Spawner:




The path finding work using Nodes. Each tile is given a Node that contain navigation information. This is then stored in the Grid script that can be accessed by the Pathfinding script.