Roles: Systems Designer
Demon Hunter was a game I worked on for a game jam at the game design post-grad course I attended. I was responsible for implementing the enemy AI in Unreal Engine 5.
I worked with the design lead to make sure the player and enemy combat systems worked well together, and it got greenlit for production.
Enemy AI
Flocking
I knew there were going to be many enemies chasing the player at any given time, so I wanted them to not get stuck in the trailing situation you’ll often experience when kiting enemies.
First of all, they avoid the player using Unreal’s built-in crowd-avoidance systems. Then they pick a random point around the player using the EQS system to move to, and switch it up every once in a while to avoid the trailing problem. This also staggers them, so they don’t just stand in a perfect circle around the player when idle.
Combat
I didn’t want them all attacking the player at once either because that would be unfair, unfun, and look terrible. So I implemented a ticketing system where we could give the player a number of tickets, and that’s how many enemies could attack at once. Then enemies within a certain radius of the player could ask for a ticket periodically, and if one was available, they would move toward the player and make an attack, then return the ticket when they were done.
This made iterating easier too, because we could adjust if only 1 could attack or 2 or 3, and how big the attack radius was without changing the code.