RIT Project
Digital Game - Tower Defense
Defend your castle from oncoming waves of enemies. Use the gold from defeated enemies to buy and upgrade towers to survive as long as possible!
My Contributions:
Create enemy AI using blueprints, making custom tasks, and leveraging Unreal Engine’s built-in behavior tree system and pathfinding.
Implement projectiles and attacks for enemies
Develop enemies that interact with each other to complete certain goals
Tools Used:
Unreal Engine 5
UE5 Blueprints
The Challenge:
Through recreating Doom, I had some experience with developing AI using behavior trees in Unreal Engine. The main difference is that in Doom, the enemies purely focused on the player. In this game, I had to create a simulation where the enemies would target other NPCs without any player control on their decisions or movement. With upgradable knights and stronger enemies, there were a variety of NPC interactions that I had to account for which was a challenge to manage efficiently.
Requirements:
The Process
Recreate core gameplay from the game Kingdom Rush
Develop the game in 4 weeks with a partner
The Implementation:
Compared to my implementation in Doom, creating these behavior trees were straight forward. In the game we wanted to only recreate melee enemies and knights, so I didn’t have to account for ranged attacks and projectiles. The enemies would search for knights and vice versa, if they were near their opponent they would engage in battle and if not, the knights would stand at their spawn location while enemies would progress towards the castle.
For the NPCs, I tried leveraging the basic “Move To” functionality and pathfinding that Unreal Engine 5 has built in. After testing, I noticed the enemies would hug the walls of the map and some would eventually get stuck on the walls. With the player having no control over where NPCs moved, NPCs getting stuck would either stop the game for ever continuing or make players wait a long time for them to get unstuck. This provided many frustrations and I needed to modify how enemy movement worked. I decided to add an array of target locations that could easily be modified. Therefore enemies would move straight towards the target instead of hugging the wall trying to make the shortest path.
This allowed for movement for enemies to be custom which allowed it to fit any map design that we came up with.