Learning Unreal Engine's Gameplay Ability System

Unreal Engine’s Gameplay Ability System (GAS) has become popular over the last year or so when it comes to making gameplay systems and balancing. It allows for quick iteration time and is extremely useful for balancing weapons, items, and other stats as a whole. This allows the designer to go into one place and balance everything in a few short minutes instead of opening up every asset and plugging in a different number. With this in mind, I decided to learn as much as I could about it in about 2 weeks time. I had three tasks I wanted to complete at this time. First was to download Unreal’s Action RPG template project (https://docs.unrealengine.com/4.27/en-US/Resources/SampleGames/ARPG/)  and play through it to see how it played, the character’s abilities, enemy abilities, and the overall progression of the character. The second task was to read through the documentation to create a new potion that affects the character in a unique way. And the third task was to design a new weapon that could be implemented into the game. 

Task One: Playtesting and Analyzing

The first task went pretty smoothly. I didn’t only look at the player and enemy’s abilities, but also looked to see where I could improve the template as a whole, as if I was going to release it. There were several things with the User Interface that would need work, along with teaching the player certain aspects of the game. As this was simply a template, I dove deep into the abilities and balancing as a whole. I noticed that dodge rolling was infinite and immediately attack when coming out of a dodge roll. This is one area where I the GAS would come in handy. First you create a stamina system and lock those type of movements to it. The stamina system would then be scaled on a basis of level, where the player would have more total stamina the higher their level. The progression of the game feels off. The player does progress by defeating waves of enemies, but there is no reward for their efforts. This can come down to either weapons not dropping, inability to carry multiple potions for later rounds when needed, or not collecting enough souls to purchase new abilities or weapons. Having the debug feature to add more souls allows me to test the varying weapons, abilities, and potions. What I discovered is that everything is expensive for the amount of souls the player can obtain each wave. This makes it difficult to counteract stronger enemies. Besides that, every weapon feels unique and strong. Each ability is fun to use, and the potions help. Overall, this is a really solid template for anyone looking to get started with and is great for learning the gameplay ability system. 

Task Two: Designing a new Potion

The second task was interesting to me. I wanted to make a new potion, but I didn’t want to make something that seemed like an obvious solution. I didn’t want to make a simple potion just to make a simple potion. I thought of making a speed potion to run around faster, but then I accidentally discovered the sprint button. Speed potion was also already an obvious choice, so I wanted to go with something else. Creating a potion that sped up the player’s attack felt like a decent choice, but that wouldn’t reflect the overall combat design of the game. This would also break the game due to weapons either already having a fast attack speed, or extremely powerful weapons having a ridiculous advantage. After I played through the game several times, I noticed that there was nothing to help me if I was swarmed by enemies. Popping a health potion would give more health, but it wouldn’t help me with the situation I was in. I would gain more health and still be trapped with a very slight advantage now. This is when I had an idea to make a potion like the overshield from Halo. The character would get a buff to their defense stats for a short duration and heal. This would allow the player to either defeat all the enemies or have a high enough defense to get out of the situation. At the surface, this potion seems extremely broken due to the buffs it gives, which is why the cost would be extremely high. This situation occurs in the late game, which means the potion needs to be worth its high cost, while also making it so players can’t abuse it. Having a duration also means that players need to think about how they use it. Use it too early and it’s useless, while using it too late means you lost the game. 

Problem: While implementing the potion in the engine, it was difficult to understand how to use the GAS to interact with the HUD. I needed to know this because I needed a timer to show how long the potion is active for and when it would run out. 

Solution: I watched videos and read more documentation about the GAS to understand how to implement my design. I utilized a radial progress bar to track the potion duration and had it disappear from the HUD when it’s not in use. I thought about using a standard progress bar, but that would be empty and useless 95% of the time. 

Task Three: Designing a new Weapon

There are many different weapons I could design for this game, including adding a new sword, hammer, or ax. By this task, I was already closing in on my two week mark, so I knew I could design it on paper but probably not implement it. I wanted to go with something different, in a unique way with how these style of games work. My original idea was to make a weapon like the Morningstar Chain Whip from the Castlevania series, but wanted something a little more unique as the chain whip acts too similarly to Kratos’ Blades of Chaos in God of War. I decided to create a scythe. This idea came from the anime Hunter x Hunter where a scythe is used in several moments during the chimera ant arc. The scythe is also typically used as farming equipment and cutting grass, which makes an interesting story if the character happens to come from a grassy, farming area. The scythe could chop through large groups of enemies, all though it would have a slower attack speed. The weapon would be ideal in open areas with large groups of enemies.

Conclusion

Overall, I am pretty happy with what I learned from this experience and feel I know what I can use this for in the future. It has helped me better understand how we can create a balance between weapons, items, and abilities, but also how it can be used in statistical manners like health, stamina, and experience points. I hope that you learned something from my experience and why not try this for yourself?

Previous
Previous

PFI Importance in Combat Design

Next
Next

I may have gotten carried away...