WEBVTT

00:00.110 --> 00:05.150
Welcome to the Ultimate course on the Unreal Engine five Gameplay Ability system.

00:05.150 --> 00:12.380
In this comprehensive course, we will create a fully functional top down RPG, complete with attributes,

00:12.410 --> 00:18.230
abilities, experience points and leveling up upgrading abilities and different ability levels.

00:18.260 --> 00:25.040
AI driven enemies, each with their own character classes and abilities, all in a data driven, scalable

00:25.040 --> 00:32.660
and expertly coded system designed to withstand a serious RPG style game and coded for multiplayer.

00:32.690 --> 00:39.260
Unreal Engine's gameplay Ability system is a code base inside of Unreal Engine designed to help architect

00:39.260 --> 00:45.590
game projects that require the management of attributes, abilities and effects, each of which have

00:45.590 --> 00:49.580
close relationships to the gameplay mechanics such as combat.

00:49.610 --> 00:57.290
This is how you manage a game such as an RPG, a multiplayer online battle arena shooter games, or

00:57.290 --> 01:03.600
any game project that involves a complex web of values related to gameplay games that might require

01:03.600 --> 01:10.080
experience points and leveling up, gaining new abilities and strengths as the player progresses, impacting

01:10.080 --> 01:16.470
important gameplay mechanics with attributes such as critical hit chance damage type resistances or

01:16.470 --> 01:18.060
block chance in combat.

01:18.060 --> 01:20.850
All can benefit from the gameplay ability system.

01:20.850 --> 01:26.300
When you enroll in this course, you will get an asset pack created specifically for this course.

01:26.310 --> 01:32.700
This way you won't have to go looking for free assets online or worry about retargeting animations to

01:32.700 --> 01:35.160
your characters that you're using in your game.

01:35.160 --> 01:40.290
Everything you need for this course will be provided, and it's all been designed with a consistent

01:40.290 --> 01:45.510
art style to fit this top down RPG called Aura Master of the Elements.

01:45.510 --> 01:49.980
We'll start this course by opening the asset pack and creating our code base.

01:50.010 --> 01:55.200
We'll make a base character class that will share all the functionality that the player controlled character,

01:55.200 --> 01:57.960
Aura and the enemies will have in common.

01:57.960 --> 02:03.900
We'll set up basic inputs and top down movement with the enhanced input system and get a targeting system

02:03.900 --> 02:08.370
in place so we can hover over our enemies and highlight them with a red outline.

02:08.370 --> 02:13.710
We'll then start on the gameplay ability system theory, learning the core parts of the gameplay ability

02:13.710 --> 02:15.900
system and how they work with each other.

02:15.900 --> 02:22.290
After a high level overview, we'll create our own ability system component and attribute set classes

02:22.320 --> 02:28.170
and assign them to aura and the enemy base class and show the different ways to handle these classes.

02:28.170 --> 02:32.490
Storing them on the player state for aura and on the character class for enemies.

02:32.490 --> 02:38.280
We'll then learn about attributes creating our four primary attributes for the basic character in this

02:38.310 --> 02:43.380
RPG strength, intelligence, resilience and vigor.

02:43.410 --> 02:47.550
These will indirectly affect all other attributes in this game project.

02:47.550 --> 02:53.520
Later on, we learn various ways to initialize these attributes and discuss the best way to set these

02:53.520 --> 02:54.150
values.

02:54.150 --> 02:55.710
Using gameplay effects.

02:55.710 --> 02:59.130
We then dive deep into gameplay effects and how they work.

02:59.130 --> 03:04.730
Modifying attributes with the use of modifiers, and we cover in depth all of the different types of

03:04.730 --> 03:09.320
modifiers, including arbitrarily complex custom calculations.

03:09.320 --> 03:15.050
We'll create an attribute menu which will show the player's current attributes as well as implement

03:15.050 --> 03:18.650
attribute points which will be awarded upon leveling up.

03:18.650 --> 03:24.800
These can be spent to upgrade attributes, making the character stronger as the other attributes which

03:24.830 --> 03:26.120
affect combat are.

03:26.120 --> 03:32.540
Based on these primary attributes, we'll learn about the usefulness of gameplay tags and how they are

03:32.540 --> 03:38.030
used all throughout the gameplay ability system and how gameplay effects can add and remove them.

03:38.030 --> 03:44.240
How abilities can be activated by the use of gameplay effects and will associate all of our attributes

03:44.240 --> 03:48.380
with gameplay tags so we can identify them in a well coded manner.

03:48.380 --> 03:54.110
We'll learn about the use of the model view controller architecture and utilize this pattern to handle

03:54.140 --> 04:02.180
our UI as RPGs often involve complex UI and a solid structure is necessary to handle all of the RPG

04:02.280 --> 04:03.000
data.

04:03.000 --> 04:09.630
Everything in this project is data driven and scalable, so the system can be expanded with little effort

04:09.630 --> 04:12.900
as we've created such a solid foundational framework.

04:12.900 --> 04:18.840
Well then learn about gameplay abilities and how these lie at the heart of the gameplay ability system.

04:18.840 --> 04:24.540
Gameplay abilities are classes that encapsulate the details of actions that a character performs in

04:24.540 --> 04:28.050
a game such as melee attacks and spell casting.

04:28.050 --> 04:34.890
Aura is an elementalist, so auras, offensive and passive abilities are magic based, but aura fights

04:34.890 --> 04:41.670
enemies of different character class types, including warrior and ranger, as well as other elementalists.

04:41.670 --> 04:45.780
So we will give aura magical spells such as Firebolt.

05:03.270 --> 05:04.530
Electrocute.

05:10.860 --> 05:12.360
Arcane shards.

05:27.740 --> 05:29.150
Fire blast.

05:45.360 --> 05:50.790
All of which devastate enemies that swarm and try to stab aura with spears.

05:50.820 --> 05:55.290
Shoot aura with slingshots and launch fireballs of their own.

05:55.350 --> 06:02.880
The Goblin Shaman class is an elementalist like aura, so it is capable of casting magical spells as

06:02.880 --> 06:08.040
well as summoning minions, little demons that can be assigned different classes themselves.

06:08.070 --> 06:14.040
Thanks to our code framework being data driven, it's a simple matter to spawn in a daemon and assign

06:14.040 --> 06:20.160
them the class of ranger or warrior and the attribute values, abilities and gameplay effects that they

06:20.160 --> 06:23.760
spawn in at, as well as the amount of damage they can cause.

06:23.790 --> 06:29.340
Scales depending on their character level, using curved trends that we can tweak with the click of

06:29.340 --> 06:35.670
a mouse, we'll implement the enemy AI behavior with behavior trees and the environment query system

06:35.670 --> 06:41.650
linking the behavior tree to the gameplay ability system, triggering the activation of gameplay abilities

06:41.650 --> 06:43.630
from behavior tree tasks.

06:43.660 --> 06:52.090
Our AI enemies will include goblin warriors with spears, Goblin rangers with slingshots, the Ghoul,

06:52.360 --> 06:59.170
the Goblin Shaman, which casts spells, including summoning demons, and of course, the demons themselves,

06:59.170 --> 07:04.360
which use their tails for melee attacks and also throw rocks for ranged attacks.

07:04.510 --> 07:11.140
After completing the AI for our enemies, we then finish up the rest of Ora's magical spells and create

07:11.140 --> 07:16.310
a fully functional spell menu with spell trees for offensive and passive spells.

07:16.330 --> 07:22.270
We award Ora with spell points when leveling up, which can be spent on spells to upgrade them.

07:22.270 --> 07:28.390
And we create a spell tier system where each spell has a level requirement and appears locked in the

07:28.390 --> 07:32.380
spell menu until a spell point has been spent to unlock it.

07:32.680 --> 07:38.830
When leveling up, if Ora is now eligible and meets a spell's level requirement, it can now be unlocked

07:38.830 --> 07:42.430
with a spell point and equipped in Ora's equipped spell row.

07:42.460 --> 07:48.160
The spell row assigns spells to different inputs such as the left and right mouse buttons, as well

07:48.160 --> 07:49.420
as the number keys.

07:49.450 --> 07:55.240
Again, we take a data driven approach here, creating a system where abilities can be swapped out and

07:55.240 --> 07:57.190
reassigned to different inputs.

07:57.220 --> 08:02.290
Want your firebolt assigned to the right mouse button and electrocute assigned to the one key.

08:02.320 --> 08:03.760
Just swap them out.

08:03.790 --> 08:07.030
Want arcane shards assigned to the left mouse button?

08:07.030 --> 08:11.770
Or maybe you don't want to use the mouse, but just want to use number keys to activate abilities.

08:11.800 --> 08:15.520
The player has the choice because our system is designed to be flexible.

08:15.550 --> 08:21.580
We then create a passive spell system where passive spells are activated as soon as they are equipped

08:21.580 --> 08:22.780
and deactivated.

08:22.780 --> 08:27.910
If they're unequipped and they remain active the whole time while they're equipped, much like passive

08:27.910 --> 08:32.110
abilities in most RPGs that give you buffs that are always active.

08:32.140 --> 08:38.290
Our combat system dives deep into the inner workings of gas and takes advantage of all its major features.

08:38.290 --> 08:45.190
We will have multiple damage types fire, lightning, arcane and physical, and you'll have enough examples

08:45.190 --> 08:48.550
of ways to use them that you can make any damage type you want.

08:48.580 --> 08:52.300
Each damage type is associated with a type of debuff.

08:52.330 --> 08:54.810
Fire damage has a chance to burn.

08:54.820 --> 08:57.160
Lightning damage has a chance to stun.

08:57.160 --> 08:57.900
ET cetera.

08:57.910 --> 09:03.850
We implement combat features such as Knockback, where damage has a chance to launch the receiver of

09:03.850 --> 09:10.300
damage into the air and Death impulse, where the receiver of damage is blown away upon receiving fatal

09:10.300 --> 09:11.020
damage.

09:11.050 --> 09:16.750
We'll learn about gameplay cues and the different types built into the ability system and how they can

09:16.750 --> 09:23.200
be used to easily achieve producing effects such as particle systems and sounds and how these have multiplayer

09:23.200 --> 09:28.000
replication built in and when it's appropriate to use them and when you shouldn't.

09:28.030 --> 09:32.720
We learn how to replicate target data, sending it to and from the server.

09:32.740 --> 09:39.160
We learn how to create custom gameplay effect contexts which can carry important combat data through

09:39.160 --> 09:42.340
our combat pipeline, including weather damage.

09:42.340 --> 09:48.430
Was a successful block or a critical hit, allowing us to show various messages to the screen, like

09:48.430 --> 09:54.340
floating damage numbers and animated text that informs the user of a block or a critical hit.

09:54.370 --> 10:00.790
We create our own asset manager ability system globals class and Blueprint function library.

10:00.820 --> 10:08.050
We learn how gameplay tasks and async blueprint tasks work, creating our own C Cplusplus and exposing

10:08.050 --> 10:10.240
Cplusplus utilities to blueprint.

10:10.240 --> 10:16.090
And we use these to listen for cooldown tags so we can show a spell's cooldown in the HUD.

10:16.120 --> 10:18.730
Spells will have both cost and cooldown.

10:18.760 --> 10:22.240
Their cost using up the resource of mana.

10:22.270 --> 10:27.820
Everything we do in this course follows best practices used in the industry, and the game project is

10:27.820 --> 10:29.530
made to be scalable.

10:29.560 --> 10:33.580
This is the foundation you can use to create a serious RPG.

10:33.970 --> 10:39.970
We'll wrap up the course by creating a save game system, implementing checkpoints that save our progress.

10:40.230 --> 10:46.380
Including all of the ability system info such as attributes and spells as well as world state.

10:46.410 --> 10:51.960
We'll create beacons that can be reached throughout our dungeons and they will remain lit up so you'll

10:51.960 --> 10:54.670
know where you've already reached in any given level.

10:54.690 --> 11:00.240
We'll create level entrances that can be configured to transport the player to any destination and any

11:00.240 --> 11:04.050
map allowing for easy travel between worlds in the game.

11:04.050 --> 11:10.950
And we'll create a robust load screen menu with multiple slots that can save progress and load the player

11:10.950 --> 11:14.280
back in to their last checkpoint in the level they were in.

11:14.340 --> 11:18.660
I haven't even mentioned half of the game features that we'll implement in this course.

11:18.690 --> 11:22.050
I'd keep listing them off, but there's just no time, I'm afraid.

11:22.050 --> 11:28.320
I've got some dungeons to crawl through, some enemy creatures to slay, some experience, to gain,

11:28.320 --> 11:32.010
some leveling up to do, and some spells to upgrade.

11:32.160 --> 11:38.010
Join my party and take on this epic quest to learn the Unreal Engine gameplay ability system.

11:38.130 --> 11:42.780
This course assumes that you have the basics of Unreal Engine C plus plus down already.

11:42.790 --> 11:46.480
I highly recommend that you take my course that teaches you these basics.

11:46.510 --> 11:48.160
It's called Unreal Engine five.

11:48.190 --> 11:51.120
C plus plus the ultimate game developer course.

11:51.130 --> 11:56.410
If you've taken this course or have equivalent knowledge, you're ready to embark on one of the most

11:56.410 --> 11:59.350
exciting adventures of your game development life.

11:59.890 --> 12:01.210
See you in battle.
