Vanquisher
3rd Person Medieval Melee Combat Game
Vanquisher is a combo-based combat game made in Unity where the player fights waves of enemies in an arena. The player can either use a normal attack, heavy attack, AoE attack, or finisher to defeat the enemies.
​
My primary contribution to this game project was the enemy AI. I incorporated their movement logic, and their interactions and reactions to the player. The enemies are animated using animations from Mixamo.
Enemy Architecture
The enemy logic was organized and designed utilizing behavior trees. A blackboard is used to tell the tree when to enter the interruption states.
​
Individual stats like health and shared stats like whether or not an enemy is currently attacking is stored in an Enemy class. The primary purpose of the Enemy class is to act as a user interface for systems like the player that need information about the enemies.
Enemy Logic Overview
Separation
The local separation of the enemies is controlled by Unity's NavMesh Agent. To take the separation a step further, enemies occasionally target a position around the player rather than go directly towards the player. The purpose of this is to ensure that the enemies don't bunch up and the player feels surrounded by them.
Attacking
A core design decision for the combat in the game is to allow the player to be able to fairly dodge every enemy attack. In order to ensure this, a restriction was put on the enemies that makes them attack one at a time.
When an enemy is ready to attack and there are no other enemy attacking, they tell the other enemies that they are attacking and then proceed to attack.
​
When the enemy is within attacking range of the player, they quickly slide to the player. This makes it so that the player must dodge to avoid them.
Receiving a Finisher Attack
When receiving a finisher attack, the enemy rotates towards the player to ensure that by the time the player swings their sword, the enemy is lined up with the player's side of the animation.
​
When a finisher is happening, any enemy who is running up to attack immediately gives up on attacking. This is to ensure that the player does not get hit in this state.
Shield Enemies
Shield enemies are unaffected by normal attacks in their normal state. If the player hits them too many times while blocking, they will perform a counter attack. They can be stunned by a heavy attack or a counter attack. In the stun state they are vulnerable to any attack.
​
Alternatively, the player can yank their shield away using the grapple ability.
Blocking and Counter Attack
Stun With Counter Attack
Stun With Heavy Attack
Disarm Shield With Grapple
Archer Enemies
Archer enemies are ranged enemies whose attacks can not be dodged or countered. Instead the player must roll out of the way.
Brute Enemies
Brute enemies are enemies with powerful knockback attacks. Much like the shield enemies, they can only be attacked normally when in the stun state. Unlike the shield enemies, they immediately do a counter attack instead of a block.
​
The brute enemy has 3 types of attacks: a normal attack, an AoE attack, and a rush attack.