Fantasy MOBA

Take down mobs of creeps

Development Walkthrough

Firstly, we get the mouse position translated to world position through the camera.

We must also determine if what is clicked is a special target location, a world location to move to, or an enemy to move to and attack.

We then wrote a simple button input manager and a graph that gets the Area of Effect indicator to follow the mouse when activated. This AOE indicator will be used for ultimate spells down the line.

The next step is to get the character's states in order. Using Bolt's state graph feature, we built the mage's state machine with all its transitions. In this case, any state could be jumped to directly as every state is connected to the "Any state."

We use the state-graphs again to set up the player's animation controller (2 sides, one for mage animations, one for swordsman animations). We do this because the player can equip and fight with a sword as an alternative to his bare-handed magic attacks.

Let's get to the juicy stuff...Sword and magic attacks!

Here we also have the enemy health manager which, when attacked with the player’s sword, will decrease the health value and update the UI to show it’s current health.

The set up for the special ability being cast. Afterwards are a series of instantiations and timers.

We also need graphs for the mana system.

  • Tests to see if player is allowed to start regenerating mana, and regenerates mana based on time elapsed.
  • Updates the mana UI element to display the correct amount of mana

Finally we will end with a series of graphs and images that cover the enemy behavior. Starting with the enemies state machine.

Enemy idle state, which will move back to start position and idle again if moved, or will trigger a move to attack if the player is within aggro range.

The enemy move state, which will either move back to the start location or to the enemy, and then trigger the attack state.

Enemy attack state, which will rotate the enemy towards the player and run the attack animation, or will chase the player if they move away.

Sets the enemy into a death state and deletes them after a set amount of time.