
ROGUE TANK
Rogue Tank is a chaotic 3D tank shooter with rogue-lite elements. Shoot, zap, burn and crash through waves of elite enemies. Enhance your tank by creating deadly combinations of upgrades and become a force of mass destruction!

2023 - Ongoing
Personal Project
Unreal Engine 4, Trello
PERSONAL PROJECT
▧ Creating the Player Controls for Tank Movement and Shooting Gameplay
▧ Designing the Player Upgrade System and Individual Power Ups
▧ Crafting the Enemy AI and Enemy Spawn System
▧ Building Interesting Combat Arenas
After the previous projects, I wanted to take the lessons learned from the development of Sugar Blast and Dune Strider into my own personal project. Inspired by games such Risk of Rain 2, Twisted Metal and the BattleBots show I decided to start working on Rogue Tank. Some of the challenges I faced were:


PLAYER CONTROLS FOR TANK MOVEMENT AND SHOOTING
Initial Prototype and Playtesting
I put together a first prototype, based on a ray-casted suspension. Additionally, I built in basic shooting functionality based on a line-trace. I also made some bare-bones enemies. This allowed me to playtest the initial 3C's and research done.
Research
I researched 3C's in third-person games, focusing on shooters, racers and off-course, games with tanks in them! In this research I wanted to tackle some key elements of a tank shooter:
▧ Suitable inputs that were easy to pick up and learn, and felt good to use.
▧ The mental budget of the player. I had learned from Sugar Blast that combining both fast-paced movement and shooting can be difficult.
▧ Challenges that come with a third-person camera, and the disparity between the tank's gun and the player point of view.
▧ Tank character, that both felt true to a tank and was intuitive to use, but was also playful and could have an "arcady" vibe.
Key Iterations
One of the most enjoyed features of many playtesters was the ability to damage enemy tanks by colliding with them. I followed the fun, tweaking the acceleration and turning rate of the tank character to accomodate for a "ramming" playstyle.
I switched from line-trace hit detection to a projectile based system. This broadened the player weapon and enemy design possibility. For example, slow moving, homing bullets that the player can shoot as well as dodge!








More Weapons!
The lessons learned from the prototypes and research done was used to make a classic rocket launcher weapon. As development continued, I created a total of 12 different weapons for the game. Each with their own unique functionality and gunplay.
PLAYER UPGRADE SYSTEM AND POWER UPS


Designed to be Combined
One of the main goals within the upgrade system was to design upgrades that are more fun and more powerful when combined together. This way, players could shape their "build" over the course of a game. The GIF on the right shows a strong burst damage combination of two upgrades, namely:
▧ Flint and Steel: Ramming enemies sets them on fire.
▧ Molten Armor: Enemies on fire take bonus damage from your primary gun.


Specific Upgrades
Key in designing upgrades that were to be combined, I made each upgrade very specific in its' functionality. There is no upgrade that upgrades your all damage by X percent. Instead, it upgrades your damage when a condition is met, only one source of your damage, or is only available on specific weapons. This allows players to discover interactions between specific offensive, utility and defensive power-ups.
General Upgrade System
To keep the player characters' blueprint logic and code organized throughout development, I built an upgrade system that allows logic to be stored in individual components. These components can then be added to the player during runtime. This had three development benefits:
▧ Organized Files: Components are their own game file, with logic stored in their own blueprints. This kept the character blueprints clean as well.
▧ Inheritance, Copy, Paste: New upgrades are created as child actors of the base upgrade blueprint, immediately giving them all the base logic needed when made. This added a lot of velocity to creating a large quantity of upgrades.
▧ Faster Iterations: Upgrades key info was easily changed in a general data table, whereas upgrade specific info was changed in the component logic itself, allowing me to quickly test different possibilities.


ENEMY AI AND ENEMY SPAWNING SYSTEM
Initial Enemy Prototype
Early into the project, I created a prototype enemy that allowed me to further test the gameplay. I built simple movement using the Unreal Engine behaviour trees. Prototype enemies would move in attack range and then fire a projectile at the player. I added an attack wind-up, allowing the player to dodge their attack.
A Bunch of Problems
In the initial protypes, enemies would bunch up together due to their simple movement. They would synchronize their attacks as it was based on the distance to the player. It didn't matter whether you were battling with 1 or 5 enemies. Simply driving around them, was an easy way to win!
In a new iteration, I implemented enemies spreading out using the Unreal Engine ECS feature. This felt a lot better right away. Players would now have to consider their movement, and couldn't simply drive in circle around the enemies. Additionally, I built an enemy attack director, which set a maximum amount of enemy attacks at the same time. This avoided the attack synchronisation of the earlier version, and could be used as a turning knob for difficulty as well. Enemies now both felt a lot more "clever" and were a lot more fun to fight according to playtests!






A Bunch of Problems
In the initial protype mroe enemies and how they are unique and use ecs


▧ Zapper, that were easy to pick up and learn, and felt good to use.
▧ Swarmer, I had learned from Sugar Blast tha
▧ Artillery, that come with a third-person camera, and the disparity betwee
▧ Heavy, that both felt t
Initial Enemy Prototype
Early into the project, I created a prototype enemy that allowed me to further test the gameplay. I built simple movement using the Unreal Engine behaviour trees. Prototype enemies would move in attack range and then fire a projectile at the player. I added an attack wind-up, allowing the player to dodge their attack.


INTERESTING COMBAT ARENAS


Designed to be Combined
One of the main goals within the upgrade system was to design upgrades that are more fun and more powerful when combined together. This way, players could shape their "build" over the course of a game. The GIF on the right shows a strong burst damage combination of two upgrades, namely:
▧ Flint and Steel: Ramming enemies sets them on fire.
▧ Molten Armor: Enemies on fire take bonus damage from your primary gun.


Specific Upgrades
Key in designing upgrades that were to be combined, I made each upgrade very specific in its' functionality. There is no upgrade that upgrades your all damage by X percent. Instead, it upgrades your damage when a condition is met, only one source of your damage, or is only available on specific weapons. This allows players to discover interactions between specific offensive, utility and defensive power-ups.

