Tank Arena
In 2017, I wrote a short article regarding GameMaker Studio 2, which I use to develop simple cross-platform, multi-genre video games.
My most recent project is a simple top-down shooter, incorporating “Battle Royale” elements, where the enemies spawn randomly across a battlefield that decreases in size based on a time interval.
The game targets my son, who is only four years old, therefore it must be simple to understand and play, as well short (targeting less than 3mins per play session).
Outlined below are a few high-level requirements:
- Minimum of five levels, the final level will continue to spawn enemies until the player tank is destroyed.
- Minimum of five enemy types, each with unique abilities, including tank design, strength, and speed.
- Each level will increase in difficulty, including different terrain/obstacles, number of enemies, battlefield reduction rate.
- Multiple “power-up” items, providing access to new player abilities, including speed, weapons, etc.
- Simple scoring system and leaderboard.
Thanks to the simplicity of GameMaker Studio 2, I was able to develop the basic foundations in just a few hours. The video below showcases the first two levels, highlighting the basic movement/shooting mechanics, multiple enemy types, power-up items, scoring and a basic menu system.
At this time, I have not implemented return fire from the enemies, instead, the player is defeated when physically hit by an enemy. I make actually retain this game dynamic for the opening two levels, helping to support a gradual complexity curve for the player.
Thanks to the simplicity and power of the Drop and Drag (DnD) capabilities within GameMaker Studio 2, I often start with DnD, using the “Execute Code” action where required. An example can be seen below, where the basic enemy characteristics have been defined using DnD.
Regarding assets, I often leverage open asset packs as a starting point (my favourite are from Kenney), tweaking the individual assets to meet our personal requirements.
The image below is an example of two enemy tanks, highlighting the collision masks.
The image below depicts the room created for level one, which starts incredibly basic (no obstacles) to help with the learning curve (recognising my target audience).
The next phase is to implement the variable battlefield and leaderboard, followed by the creation of the additional levels and enemies. Thankfully, the additional levels and enemies leverage the existing logic, with new assets and variables (e.g. hit damage, speed, weapon strength, etc.)
Tank Arena can be found on GitHub, all source code and assets are open-source covered under the CC0 1.0 Universal license.