top of page

Vanquisher

Background
  • Made in Unity using C#​

​

  • Team was comprised of 5 programmers

​​

  • ​Wanted to learn more about how to make a melee combat game​

​

  • Inspirations were Batman Arkham Knight, Shadow of War, Ghost of Tsushima, and Dark Souls 

Player Movement
  • Created script to manage player controls â€‹

​

  • Player rotates and moves in the direction of input

​

  • Used Unity's Base Character Controller​

​

  • ​Used Animation Blend tree for locomotion animations â€‹

Base Player Locomotion

Player Movement Blend Tree

Camera
  • Cinemachine Plugin

    • Used built-in 3rd person camera 
      ​

    • Used 2 cameras

      • Out of combat​

      • In combat

Player Combat
  • The game is focused on the combat so the pillars reflect what the combat should be​

Main Pillars of Game

​

  • Power​

    • Feel Powerful​

  • Style

    • Look Cool​

  • Flow

    • Seamless Transition Between Attacks​​​

 

Combat Philosophy

  • ​​​Original concept 

    • The higher combo the better finishers the player could use​

      • i.e. If player combo was 30+ then an AoE finisher could wipe entire group of enemies​

    • Didn't work well as enemies felt tank-y and players wanted to use their finishers right away

    • Because of these problems and not having time to test more we decided to have finisher points to decide which finishers to spend on​​​

​

  • ​Finisher points

    • As the player attacks and defeats enemies they gain finisher points that they can spent on finishers​

    • Each finisher has their own cost so players must choose wisely on which finisher to use​

Player Abilities
  • Main Attacks

    • Base​

    • Heavy
       

  • Dodge/Parry
    ​

  • Roll
     

  • Finishers

    • Basic ​

    • Healing

    • Grapple

    • Area-of-Effect

 

Player Animation Graph

Finisher Sub State Machine

Basic Attack
  • Simple Attack

  • Moderate damage

  • Have 3 attack combo

    • A counter keeps track of current animation

    • resets after 3

Base Attack Combo Example

Base Attack Sub State Machine

Heavy Attack
  • Stuns enemies

  • Minor damage.

Heavy Attack Combo Example

Heavy Attack Sub State Machine

Dodge/Parry
  • Dodge

    • avoid attacks​

  • Parry​

    • When the time is right

    • Counter Attack​ Enemy

Dodge/Parry Example

Finishers
Basic Finisher
  • Instant kill for basic enemies

  • Has 4 unique animations

Base Finisher Examples

Healing Finisher
  • Heals the player

Healing Finisher Example

Grapple Finisher
  • Grabs enemy from far away

Grapple Finisher Example

AoE Finisher
  • Instantly kills basic enemies

  • Some damage to brutes​

Area-of-Effect Finisher Example

Roll Ability
  • Avoid incoming damage​

Roll Ability Example

Challenges​​​

Attacking

  • Problem: 

    1. Get Player sliding towards enemies when attacking

    2. Player body doesn't have Collision when attacking
       

  • Plan of Attack:

  1. Use DoTween plugin

    • Uses animation to move

    • Works very well.

    •  no collision.

  2. Make system to lerp one object to another

    • Implement ActionList

    • Uses Transform to move

    • Works well. 

    • No collision. ​

  • Question: Why doesn't collision work?

    • Remember: Using Unity's Character Controller

      • Collision only works with the Move function

 3. Implement Move function into Lerp system

  • Works the same as before. ​​

  • Has Collision.

​​​​​​​​​​​​​​​​​​

Enemy Targeting

  • Problem: 

    • ​Player can't target the enemy they want to target​
       

  • Plan of Attack:

  1. Sphere cast in direction of input

    • Inconsistent​

    • Can't target closer enemies

  2. Add sphere around player​​​

    • Solves some cases for closer enemies

  3. Set target based on enemy attacks​

    • Helps solve closer enemies case ​

  4. Add ray cast between the player and casted sphere​

    • Solves most cases for mid range enemies​

  5. Overall was good enough to call good

    • solves most cases for short, mid, long range enemies​​​

​

   * Should've used dot product and weighted the
      enemies based on a cost but wasn't aware of how
      useful the dot product was at the time.  â€‹

​

​​​​​​​​​​​​​​​​​​

Next Project
bottom of page