About
I’m currently working on a game using Unreal Engine. It is a third person Action RPG where you control a single character and can have one or more companions along with you. It takes ideas from other games like Crisis Core, Final Fantasy 7 Remake, Kingdom Hearts, and Elden Ring. Below are some of the designs for the project and notes on how these are implemented.
Video
Prototype Download
Features
Combat System
Magic spells and weapon arts may be used alongside regular attacks. Each spell can have different requirements such as cooldown, mana cost, cast time and other factors. My plan is to have a lot of variety of spells and add more options for each combat scenario.
This game uses Gameplay Ability System (GAS) as the main framework for abilities. I have learned how to use GAS thanks to the unofficial docs by tranek, and from the Udemy course by Stephen Ulibarri.
With GAS, I am able to use animation notifies to send gameplay events back to the ability and trigger custom functions. This lets me be precise and assign the exact frames the ability can perform events. These events are used to spawn projectiles, apply effects, block other abilities, and other functionality that is required by the ability.
Abilities
The demo comes with 3 magic spells, 2 weapon arts, 1 potion item. Each of them functions differently and are more effective in different combat scenarios.
Fireball throws a projectile on an enemy. The button can be held for a more powerful attack. When the projectile hits an enemy or an object, it will release an AOE that damages nearby enemies.
Lightning attack will spawn an AOE around the target and damages enemies after a short delay. It greatly increases the stun gauge of the enemy.
Poison Gale will throw a projectile on a target and will hit any enemies in a straight line. It will then leave a poison debuff on all enemies that were hit.
Charge attack will dash towards an enemy and pushes any light enemies that were on its path.
Cleave will do an AOE attack that can hit multiple enemies in front of the player.
Blocking can give the player the option to mitigate oncoming damage. Timing it perfectly just before an attack hits the player will nullify the damage taken.
Dodge can help the player avoid enemy attacks. Certain attack animations can be cancelled by triggering dodge. Just like parry, a well-timed dodge will have invulnerability frames and slow down time.
Enemy and Boss Mechanics
Regular enemies can have multiple movesets. Bosses can even have different phases and different mechanics that change the longer the fight goes. It uses Behavior trees that have a bunch of Dynamic Behavior Tree nodes.
During combat, the AIController chooses what moveset to use. These can be based on different factors, such as enemy distance, health, move number, or anything else depending on what the move requires. Picking a moveset then builds the Dynamic Behavior Tree which will be used by the character. Some movesets will chase the target and move into range, while others will make the character stand in some area of the arena.
While out of combat, enemies can either have random roaming, patrolling or idle states. These are also dynamically added to the Behavior tree and can be assigned on each character.
Treasure Chests and Items (TODO)
Treasure chests and loot can be picked up. Potions can be used in the field to restore HP.
Dialog and Cutscenes (TODO)
There are two kinds of cutscenes: Dialog events and Sequencer cutscenes.
Future Implementations
Some design ideas I intend to add in future implementations.
- Shop System
- Town System
- Minigames
Old Videos
Thanks for stopping by.