Why Ability Systems?
In 2023 we saw two Spidermen sling webs around New York while Link killed Bokoblins more creatively than ever. 2023’s best games continued a push for exciting character-centric gameplay. As game developers, we need to choose gameplay systems that support character-centric gameplay and provide players with intuitive interactions in the game world. Which gameplay system is quickly becoming the industry standard? Ability Systems!
Ability Systems manage ownership of specific game world interactions, enforce activation rules, and handle resources needed for those abilities. When developing a game you often need a way to define which characters can access each action in your game world and how those actions flow to avoid having them interrupt one another.
One way Ability Systems help is by standardizing the stages abilities move through. This flow provides an easy breakdown for each subsection of the ability lifetime and lets those abilities create common interaction patterns with the game world.
Unreal Engine 5 Gameplay Ability System
The Unreal Gameplay Ability System plugin (GAS for short) contains a set of features that can be used to create the gameplay systems seen in Roguelikes, MOBAs, and even Class-Based Shooters. Gameplay abilities can be set up as asynchronous tasks, allowing developers to have abilities with a variety of activation lengths, input styles for controlling the ability, and spawn differing effects from each ability.
Let’s look at an example attack ability created with GAS in blueprint:
This blueprint section allows an animation montage to control the timing of the effect container application, as well as specify when the ability ends. Montages leverage Gameplay Tags to avoid bugs caused by string mismatches and additionally filter the effects fired by a montage. A punch animation can contain multiple additive effects and our ability can control their conditional activation using the Event Tags input parameter.
Ability Activation via Gameplay Tags
Any actor needing to activate or be affected by abilities has an Ability System Component attached to it. Those components can have an array of gameplay tags applied to them which communicate state and control additional ability activations. In the Gameplay Ability class defaults you can find the tags associated with the activation rules for each ability. This includes the tags applied to the character while the ability is active, the tags of other abilities that get canceled upon activation of this ability, and abilities whose activation is continuously blocked while this ability is active.
Example: Fast Attack Ability
The Fast Attack Ability tag configuration above is an example of a melee attack ability. The ability gets its name from the “Ability Tags” section: Attack.Fast. The Fast Attack ability should block movement-based abilities, so in the “Activation Blocked Tags” section there’s Ability.Movement listed as a blocked activation. If an ability with the tag Ability.Movement.Jump is attempted while a player is doing a Fast Attack Ability , then the jump ability would fail due to the Ability.Movement parent tag being in “Activation Blocked Tags”. Fast Attack is only activatable when the player is on the ground, so Character.State.OnGround is listed in the “Activation Required Tags” section.
With tag containers we can build additional ability types such as stances for a martial character with offensive and defensive weapon types, abilities that transform characters into different forms and grant additional abilities during that time, and provide abilities that exist for players in a revivable state. A designer can add additional depth to their gameplay by detecting compatible tags on a target and potentially enhancing applied effects such as doubling cold damage on a frozen target.
Real World Implementations
Ability systems are becoming increasingly popular in character based games. Lets take a look at a few real-world examples of how character based games could apply these concepts.
Aliens: Fireteam Elite
Aliens: Fireteam Elite shows how each class has a different set of base abilities available to complete a mission. If all the character classes have similarly functioning abilities bound to similar input buttons, developers can give the player a sense of familiarity between classes. Now a player can intuitively use new abilities without needing to learn new systems.
Another game that really showcases a wide range of intuitive abilities is Hades, a Roguelike from Supergiant Games.
While a MOBA or Class Based Shooter might define more explicit abilities and attributes granted to each character by default, Roguelikes use this ability system differently. In a Roguelike, abilities stack on a character and allow the ability system to interact with itself for additional synergies and combinatorics. While the basic attack ability may not get swapped out in each room of a Roguelike, the abilities gained since the start of the game can apply additional damage or status effects when a target is hit to give the game an additional breadth of possibilities.
In the case of Hades, the ability system allows Supergiant to augment a dash ability with various gained abilities which not only modify the art but also the effect of the ability as well. The god of water’s upgrade modifies the player’s dash ability to also push enemies away from the player while the god of war’s upgrade leaves behind areas of damage after using the dash ability. Using applied tags from upgrades, the dash ability can sustain additional effects throughout the course of its activation.
The solutions provided by a gameplay ability system are helpful for a wide range of game types, making it a system worth being familiar with. If any developer finds themselves dealing with gameplay mechanic ownership, having multiple player interactions with the game world that require management of the activated mechanics, or creating game features that have various flows based on the owner’s status, then knowing how to use this tool will save you and your team time and energy as you create deep and fun mechanic interactions.