Gameplay Updates

An initiative tracker for turn order has been added and is displayed on the right side of the screen. Hovering over units on the grid now displays their stats in a UI element. A few more skills have been added or adjusted to make use of the splash damage patterns that were created.

Tutorials

Tutorial elements have been added. Clicking on each brings up a UI element describing how the gameplay works.

Character Select and Stats

There’s now a party creation level between Level Select and the Levels. It allows the player to customise their party of three characters choosing from a number of classes and weapons.

Character stats are now all shown in the UI in the top left.

Classes

Characters now gain a unique skill based on their class. The Warrior gets a healing bonus action, the Wizard can restore energy with an Action, and the Rogue can get an additional action using a bonus action.

Weapon Skills

Characters can gain skills from their class and their currently equipped weapons. The basic weapon skill functionality has now been added in-engine.

Animations based on Weapons

The animation Blueprints of the characters now changes based on their weapon. The functions for this can be used during runtime to allow for weapon swapping in gameplay.

Skill Targeting System

Skill Range, Damage, and ID can be customised through the use of a data table. Attacks are set up to only be target in straight lines from the character, cardinally or inter cardinally depending on the skill.

First Art Pass

Assets have been imported to give the prototype a more polished feeling. Assets are sourced from the epic marketplace.

Additionally characters will now turn to attack enemies.

Attacks of Opportunity

Characters will now attack enemies that try to move outside of their range. This will only trigger if the character has a reaction available. The attack currently stops movement and causes the player to input movement again if they survive the attack.

Initial AI Movement

The AI now attempts to move to a tile adjacent to the player character so that they’ll be able to use a melee attack.

Basic Attacking & Turns

The player character can now use a basic attack, and is limited to an action once per turn.

A* Pathfinding - Movement

The system is fully implemented with character movement. When it searches it checks each tiles F cost, and chooses the lowest to search through next. This repeats until the target tile is found. The tiles it can search through are limited to the ones within the character’s range, so the target cannot be set out of reach.

A* Pathfinding - H cost

H cost can be determined solely through the coordinate vales of the grid tiles. The system subtracts the coordinate values to calculate how many diagonal steps can be taken, and then how many horizontal or vertical steps must be taken.

Rough Diagram showing the process of determining h cost.

A* Pathfinding - G cost

The G cost is determined by the number of steps away from the starting position the target is. When the character is selected their movement range is highlighted.

A* Search Algorithm

The  A* searching algorithm will be used in the project.  It determines the shortest path between two points by searching out from the starting position and updating costs. It uses a loop to search out from every node in ascending cost.

The cost is determined with this formula: f(n) =g(n) + h(n)

G is the movement cost from the starting node and H is the distance from the target node. The loop will check the node with the lowest given f cost at any time.

 

To implement this another searching method will need to be added as characters have a limited amount of movement, and the area a character can move on in a turn needs to be highlighted. Each node will have to have a variable holding the g cost and search out until the g cost exceeds the characters movement points.

Flowchart of highlighting tiles within character’s movement range.

Extended Flowchart of the algorithm

 Auto Grid Functionality

To start with the project I created a system in the grid to auto map the coordinates. It requires an origin point to be set to determine where 0,0 is, then traces out through every grid tile to determine the neighbours coordinates and save references of them.

Next
Next

Level Layouts