Course Overview
This is the most comprehensive Unreal Engine course available. If you want to learn how to architect a fully-functional RPG game, this course will give you the ability to do so with an expandable code base, architected with AAA quality code. If you've ever wondered where to draw the line between C++ and Blueprints, this is the course for you. If you've ever wanted to create an RPG complete with a stats system, abilities, leveling up, spells, attributes, menus, all while keeping your code base clean and following best practices, this is the course for you. If you want to step up your Unreal Engine development capabilities and better understand the inner workings of the engine, this course is for you. If you have plans to make your own serious game with interconnecting systems, involving attributes, abilities, level ups, enemies and AI, and coded for multiplayer, this is the course for you!
In this course, we will create a top-down RPG style game, filled with systems architected using Unreal Engine's built-in Gameplay Ability System (GAS). This is where you will learn how to architect a shipped game, and code it expertly so it can be easily expanded, upgraded, and maintained. We follow SOLID coding principles, and balance the Blueprint/C++ ratio in a way that AAA shipped games do, such as Fortnite. My experience with AAA shipped game code, as well as consultations with industry veteran developers has allowed me to reveal to you the way a real shipped game's code base looks like. If you've ever wondered how much of a game can be kept in Blueprint versus C++, look no further. This course is the answer.
NOTE: This course involves programming in C++, which involves the use of an Integrated Development Environment (IDE) such as Visual Studio, Rider, or VSCode. The IDE used in this course by me will be Rider, but this IDE is not a requirement for students to follow the course. You can use any IDE of your choice.
The assets in this game project were made specifically for this course, and will be provided in an asset pack. This includes:
Characters, including Aura, the main character, as well as enemy characters including Goblin Warriors, Goblin Rangers, a Goblin Shaman, Red and Black Demons, the Ghoul, and a Shroom.
A modular dungeon pack that can be pieced together to make basic dungeons
A waypoint shrine and obelisks
Particle Niagara System Effects, including explosions, level up effects, slingshot rocks, hit impacts, electricity beams, fireballs, fire bolts, flames, stars for stun effects, and more!
Sound effects for enemies, footsteps, spells, and more!
Textures for the HUD, including high-quality buttons, frames, dynamically-animated spell globes, progress bars, XP bar, and more!
Full animation sets for Aura and all enemies
Much more!
In this course, we will be covering the following topics:
Setting up a Top-Down Project from scratch
Enemy and item selection with outline effects
Proper use of OOP and inheritance to create a character class hierarchy
Intro to the Gameplay Ability System and the core classes that comprise it
Custom Gameplay Ability System Components and Attribute Sets, and how to replicate Attributes
All important settings for all GAS classes and components
How to use Attributes for player stats, including Primary Attributes:
Strength (increases physical damage)
Intelligence (increases magical damage)
Resilience (increases Armor and Armor Penetration)
Vigor (increases Max Health)
Secondary Attributes, based off of primary attributes and other custom variables:
Armor (reduces damage taken, improves Block Chance)
Armor Penetration (ignores percentage of enemy Armor, increases Critical Hit Chance)
Block Chance (change to cut incoming damage in half)
Critical Hit Chance (chance to double damage plus critical hit bonus)
Critical Hit Damage (bonus damage added when a critical hit is scored)
Critical Hit Resistance (reduces critical hit chance of attacking enemies)
Health Regeneration (amount of Health restored every 1 second)
Mana Regeneration (amount of Mana restored every 1 second)
Max Health (maximum amount of Health obtainable)
Max Mana (maximum amount of Mana obtainable)
Vital Attributes - things like Health and Mana, which are dependent on all the other attributes
Gameplay Effects - classes in the GAS system used to apply changes to attributes
Gameplay Tags - an essential part of GAS, which allows us to identify qualities, attributes, abilities, character classes, and any other thing we can imagine
Game UI - how to handle complex UI in an RPG game efficiently, in an organized, modular, and scalable manner. We cover different UI paradigms, from MVC (Model View Controller) and MVVM (Model View ViewModel, using Unreal Engine's new ViewModel feature)
Full Attribute and Spell Menus, with upgrade abilities, spell trees, locked spell levels, spell upgrades by ability level, and more
Attributes - how to use Gameplay Attributes to represent player stats, and incorporate them into the gameplay mechanics by creating an Effect Application pipeline, allowing for calculations and results caused by phenomena in the game, such as combat damage
Gameplay Abilities - the heart of GAS. We create all manner of types of gameplay abilities to handle the casting of spells, handling important capabilities of the player character and enemy AI, and how to configure different abilities to suit your needs.
Different RPG Classes - we implement different character RPG classes including the Ranger, Warrior, and Elementalist, and do so in an easily-scalable manner so you can have any number of character class types in your game
Damage and Combat - we implement a full RPG style combat system with different damage types, damage resistances, and debuffs corresponding to damage types, and encode these calculations into our damage pipeline. All attributes, damage types, resistances and debuffs are functional in this game.
All combat mechanics are displayed in some form of visual feedback to the player. This includes floating text for damage, changing color based on custom criteria, floating text to inform of critical hits, blocked hits, and critical blocked hits. We also implement knockback and stun mechanics in response to lightning damage, incapacitating the character/enemy, as well as fire debuffs, where characters are set ablaze and take fire damage while burning.
Enemy AI - We implement the enemy behavior using Unreal Engine Behavior Trees and the Environment Query system (EQS) to provide customized behavior for the Ranged, Warrior, and Elementalist enemy types.
Enemies can cast spells and summon AI minions
Fading geometry when it gets in the way of the camera for a top-down game
Ability Cost and Cooldown (spells spend Attribute resources - in this game, spells cost Mana)
Fully functional HUD with Equipped Spells, displaying spell cooldown timers, and experience (XP)
The ability to assign Abilities to different inputs in the spell menu (assign FireBolt to the 1 key and Electrocute to the Left Mouse Button, swap them back, etc.)
Experience and Level-Up System - We craft an experience system, awarding XP for eliminating enemies, and leveling up when reaching XP thresholds for various abilities. XP and Level are displayed in the HUD, and Level Up messages and effects are as well. Leveling up is associated with gaining Attribute Points and Spell Points, which can be used to upgrade Attributes and Spell abilities in the Attribute and Spell Menus respectively, as well as topping off Health and Mana upon Leveling Up. (Basically, you will see enough examples of how to use this system that you'll be able to expand it with any functionality you want for your own games)
Passive Spells - Spells that you can equip which remain active while they are equipped.
A variety of Offensive Spells, showcasing different examples and features of GAS, including FireBolt, Electrocute, Arcane Shards, and FireBlast.
Saving Progress and Level Transitions
Intermediate/Advanced Unreal Engine topics, including custom Async Tasks, Ability Tasks, Blueprint Function Libraries, Asset Managers, Singletons (and why these are only good for a VERY select few cases), custom Gameplay Effect Contexts, Net Serialization, Struct Ops Type Traits, C++ Lambdas, game mechanics algorithms, and oh, so much more.
How to choose which functionality should go into C++ versus Blueprint - This is one of the most valuable lessons, and is taught all throughout the course. Students often ask me "which functionality should go in C++ versus in Blueprint?" This course is my answer. This is a serious-scale project foundation with over 100 hours of video, and no filler. The project is architected with approximately 50% Blueprints and 50% C++. I show you which functionality should be on the C++ side, which functionality is more appropriate for Blueprints, and why.
SOLID Coding Principles and code architecture - We keep our code base clean in this project. Another question I often get is "Is this best coding practice?" This course is my answer to this question. This is an example of code you would see in a AAA game, shipped to millions of players. Maintaining clean and modular code is essential to a serious game project that needs to be scalable, expandable, modular, maintainable, testable, performant, and efficient. This course will show you how.
This is not a beginner course. I expect you to already understand the C++ programming language and have at least created one Unreal Engine C++ project.
This course is my best course yet, and I'm very proud to bring you the Unreal Engine 5 - Gameplay Ability System - Top Down RPG course, the result of nearly a year of painstaking development, research, consultation with professionals, and asset creation. After taking this course, you will understand Unreal Engine far better than the average developer, and you'll be empowered to create your own well-architected projects, large and small, and you'll bring value to your team, your company, your solo venture, and anyone/anything else you grace with your skillset.
Join the course, and invest in the biggest leap of your game development career.
Stephen Ulibarri, founder of the Druid Mechanics Game Developer Community
This course project is created in Unreal Engine version 5.2. Updates are periodically added to ensure compatibility with newer engine versions.
FAQ
FAQ area empty
Course curriculum
-
Jetbrains Rider - Now Free for Non-Commercial Use!
Xem trước -
Project Creation
Xem trước -
Setting up Version Control (Optional)
Xem trước -
The Base Character Class
Xem trước -
Player and Enemy Characters
Xem trước -
Character Blueprint Setup
Xem trước -
Animation Blueprints
Xem trước -
Enhanced Input
Xem trước -
Aura Player Controller
Xem trước -
Movement Input
Xem trước -
Game Mode
Xem trước -
Enemy Interface
Xem trước -
Highlight Enemies
Xem trước -
Post Process Highlight
Xem trước -
Section 2 Quiz
-
The Gameplay Ability System
Xem trước -
The Main Parts of GAS
Xem trước -
The Player State
Xem trước -
Ability System Component and Attribute Set
Xem trước -
GAS in Multiplayer
Xem trước -
Constructing the ASC and AS
Xem trước -
Replication Mode
Xem trước -
Init Ability Actor Info
Xem trước -
Section 3 Quiz
-
Game UI Architecture
Xem trước -
Aura User Widget and Widget Controller
Xem trước -
Globe Progress Bar
Xem trước -
Health Globe
Xem trước -
Aura HUD
Xem trước -
Overlay Widget Controller
Xem trước -
Broadcasting Initial Values
Xem trước -
Listening for Attribute Changes
Xem trước -
Callbacks for Mana Changes
Xem trước -
Section 5 Quiz
-
Gameplay Effects
Xem trước -
Effect Actor Improved
Xem trước -
Instant Gameplay Effects
Xem trước -
Duration Gameplay Effects
Xem trước -
Periodic Gameplay Effects
Xem trước -
Effect Stacking
Xem trước -
Infinite Gameplay Effects
Xem trước -
Instant and Duration Application Policy
Xem trước -
Infinite Effect Application and Removal
Xem trước -
PreAttributeChange
Xem trước -
PostGameplayEffectExecute
Xem trước -
Curve Tables for Scalable Floats
Xem trước -
Section 6 Quiz
-
Gameplay Tags
Xem trước -
Creating Gameplay Tags in the Editor
Xem trước -
Creating Gameplay Tags from Data Tables
Xem trước -
Adding Gameplay Tags to Gameplay Effects
-
Apply Gameplay Tags with Effects
Xem trước -
Gameplay Effect Delegates
Xem trước -
Get All Asset Tags
Xem trước -
Broadcasting Effect Asset Tags
Xem trước -
UI Widget Data Table
Xem trước -
Retrieving Rows from Data Tables
Xem trước -
Broadcasting Data Table Rows
Xem trước -
Message Widget
Xem trước -
Animating the Message Widget
Xem trước -
Replacing Callbacks with Lambdas
-
Ghost Globe
-
Properly Clamping Attributes
-
Section 7 Quiz
-
Initialize Attributes from a Data Table
-
Initialize Attributes with Gameplay Effects
-
Attribute Based Modifiers
-
Modifier Order of Operations
-
Modifier Coefficients
-
Secondary Attributes
-
Derived Attributes
-
Custom Calculations
-
Player Level and Combat Interface
-
Modifier Magnitude Calculations
-
Initializing Vital Attributes
-
Section 8 Quiz
-
Attribute Menu - Game Plan
-
Attribute Menu - Framed Value
-
Attribute Menu - Text Value Row
-
Attribute Menu - Text Value Button Row
-
Attribute Menu - Construction
-
Button Widget
-
Wide Button Widget
-
Opening the Attribute Menu
-
Closing the Attribute Menu
-
Plan for Displaying Attribute Data
-
Gameplay Tags Singleton
-
Aura Asset Manager
-
Native Gameplay Tags
-
Attribute Info Data Asset
-
Attribute Menu Widget Controller
-
Aura Ability System Blueprint Library
-
Constructing the Attribute Menu Widget Controller
-
Attribute Info Delegate
-
Widget Attribute Tags
-
Mapping Tags to Attributes
-
Responding to Attribute Changes
-
Section 9 Quiz
-
Gameplay Abilities
-
Granting Abilities
-
Settings on Gameplay Abilities
-
Input Config Data Asset
-
Aura Input Component
-
Callbacks for Ability Input
-
Activating Abilities
-
Click To Move
-
Setting Up Click to Move
-
Setting Up Auto Running
-
Implementing Auto Running
-
Code Clean Up
-
Aura Projectile
-
Aura Projectile Spell
-
Spawning Projectiles
-
Section 10 Quiz
-
Ability Tasks
-
Sending Gameplay Events
-
Spawn FireBolt from Event
-
Custom Ability Tasks
-
Target Data
-
Send Mouse Cursor Data
-
Receiving Target Data
-
Prediction in GAS
-
Orienting the Projectile
-
Motion Warping
-
Projectile Impact
-
Projectile Collision Channel
-
Projectile Gameplay Effect
-
Enemy Health Bar
-
Ghost Bar
-
Section 11 Quiz
-
Meta Attributes
-
Damage Meta Attribute
-
Set By Caller Magnitude
-
Ability Damage
-
Enemy Hit React
-
Activating the Enemy Hit React Ability
-
Enemy Death
-
Dissolve Effect
-
Floating Text Widget
-
Showing Damage Text
-
Execution Calculations
-
Damage Execution Calculation
-
ExecCalcs - Capturing Attributes
-
Implementing Block Chance
-
Implementing Armor and Armor Penetration
-
Damage Calculation Coefficients
-
Implementing Critical Hits
-
Section 13 Quiz
-
The Gameplay Effect Context
-
Custom Gameplay Effect Context
-
NetSerialize
-
Implementing Net Serialize
-
Struct Ops Type Traits
-
Aura Ability System Globals
-
Using a Custom Effect Context
-
Floating Text Color
-
Hit Message
-
Damage Types
-
Mapping Damage Types to Resistances
-
Resistance Attributes
-
Resistance Damage Reduction
-
Multiplayer Test
-
Section 14 Quiz
-
Enemy AI Setup
-
AI Controller Blackboard and Behavior Tree
-
Behavior Tree Service
-
Blackboard Keys
-
Finding the Nearest Player
-
AI and Effect Actors
-
Behavior Tree Decorators
-
Attack Behavior Tree Task
-
Find New Location Around Target
-
Environment Query System
-
Environment Queries
-
EQS Tests
-
Distance Test
-
Using EQS Queries in Behavior Trees
-
Section 15 Quiz
-
Goblin Spear - Sound Notifies
-
Impact Effects
-
Melee Impact Gameplay Cue
-
Montage and Socket Tags
-
Goblin Spear - Hurt and Death Sounds
-
Goblin Slingshot - Sound Notifies
-
Rock Impact Effects
-
Goblin Shaman - Sound Notifies
-
Ghoul - Sound Notifies
-
Ghoul - Swipe Trail
-
Demon Blueprint
-
Demon Melee Attack
-
Demon Ranged Attack
-
Demon - Sound Notifies
-
Demon - Dissolve Effect
-
Shaman Summon Locations
-
Async Spawn Times
-
Summoning Particle Effect
-
Select Minion Class at Random
-
Minion Summon Montage
-
Minion Count
-
Elementalist Behavior Tree
-
Elementalist Attack Task
-
Decrementing Minion Count
-
Adding Juice with Tweening
-
Enemies Final Polish
-
Section 19 Quiz
-
Health Mana Spells Widget
-
Spell Globe
-
Adding Spell Globes
-
XP Bar
-
Ability Info Data Asset
-
Initialize Overlay Startup Abilities
-
For Each Ability Delegate
-
Binding Widget Events to the Ability Info Delegate
-
Gameplay Ability Cost
-
Gameplay Ability Cooldown
-
Cooldown Async Task
-
Cooldown Tags in Ability Info
-
Showing Cooldown Time in the HUD
-
Modeling Mode
-
Section 21 Quiz
-
Experience and Leveling Up
-
Level Up Info Data Asset
-
Adding XP to the Player State
-
Listening for XP Changes
-
Awarding XP Game Plan
-
XP Reward for Enemies
-
Incoming XP Meta Attribute
-
Passively Listening for Events
-
Sending XP Events
-
Showing XP in the HUD
-
Level Up Interface Function
-
Leveling Up
-
Showing Level in the HUD
-
Level Up Niagara System
-
Level Up HUD Message
-
Section 22 Quiz
-
Spell Menu Design
-
Spell Globe Button
-
Offensive Spell Tree
-
Passive Spell Tree
-
Equipped Spell Row
-
Spell Menu Widget
-
Spell Description Box
-
Spell Menu Button
-
Spell Menu Widget Controller
-
Constructing the Spell Menu Widget Controller
-
Equipped Row Button
-
Ability Status and Type
-
Showing Abilities in the Spell Tree
-
Ability Level Requirement
-
Update Ability Statuses
-
Updating Status in the Spell Menu
-
Show Spell Points
-
Selecting Icons
-
Deselecting Icons
-
Spell Menu Buttons
-
Selected Ability
-
Spending Spell Points
-
Rich Text Blocks
-
Spell Descriptions
-
FireBolt Description
-
Cost and Cooldown in Spell Description
-
Self Deselect
-
Equipped Spell Row Animations
-
Ability Types
-
Equipping Abilities
-
Updating the Overlay When Equipping Abilities
-
Globe Reassigned
-
Unbinding Delegates
-
Section 24 Quiz
-
Debuff Tags
-
Debuff Parameters
-
Damage Effect Params Struct
-
Using Damage Effect Params
-
Determining Debuff
-
Debuff Info in the Effect Context
-
Debuff in the Attribute Set
-
Dynamic Gameplay Effects
-
Debuff Niagara Component
-
Death Impulse Magnitude
-
Death Impulse in the Effect Context
-
Handling Death Impulse
-
Knockback
-
Section 25 Quiz
-
FireBolt Projectile Spread
-
Spawning Multiple Projectiles
-
Homing Projectiles
-
Click Niagara System
-
Invoke Replicated Event
-
Aura Beam Spell
-
Electrocute Montage
-
Player Block Tags
-
GameplayCue Notify Paths
-
Gameplay Cue Notify Actor
-
Electrocute Looping Sound
-
Target Trace Channel
-
First Trace Target
-
Additional Targets
-
Shock Loop Cues on Additional Targets
-
Electrocute Cost Cooldown and Damage
-
Applying Electrocute Cost and Damage
-
Electrocute Polish
-
Explode Dem FireBoltz
-
Stun
-
Stun Niagara System
-
Shock Loop Animations
-
Section 26 Quiz
-
Magic Circle
-
Spawning Magic Circles
-
Magic Circle Interface Functions
-
Arcane Shards Spell
-
Wait Input Press
-
Anti Aliasing and Moving Decals
-
Point Collection
-
Async Point Locations
-
Gameplay Cue Notify Burst
-
Arcane Shards Montage
-
Radial Damage Parameters
-
Setting Radial Damage Parameters
-
Radial Damage with Falloff
-
Tying Radial Damage All Together
-
Ignore Enemies while Magic Circle Active
-
Knockback Force and Death Impulse Overrides
-
Spell Descriptions
-
Arcane Shards Cost and Cooldown
-
Section 28 Quiz
-
Saving Progress
-
Main Menu
-
Play and Quit Buttons
-
Vacant Load Slot
-
Enter Name Load Slot
-
Taken Load Slot
-
Load Menu
-
MVVM
-
Changes Needed for 5.3+
-
View Model Class
-
Constructing a View Model
-
Load Slot View Model
-
Switching the Widget Switcher
-
Save Game Object
-
Binding Variables to ViewModels
-
Load Slot Status
-
Enabling the Select Slot Button
-
Enabling Play and Delete Buttons
-
Are You Sure Widget
-
Deleting a Slot
-
Map Name Field Notify
-
Saving the Map Name
-
Traveling to the Saved Map
-
Section 30 Quiz
-
Choosing the Player Start
-
Setting the Default Player Start
-
Save the Player Start Tag
-
Checkpoints
-
Interface Function for Saving Progress
-
Saving Player Data
-
Loading Player Data
-
Initializing Attributes From Disk
-
Showing Player Level in Load Screen
-
Saving Abilities
-
Notes on this lecture
-
Loading Abilities
-
Data Structures for Saving Data
-
Saving World State
-
Loading World State
-
Section 31 Quiz
-
Different Highlight Colors
-
Highlight Interface
-
Targeting Status
-
Highlighting Non-Enemies
-
Set Move-To Location
-
Beacons
-
Map Entrance
-
Dungeon Stair Entrance
-
Dungeon Entrance Blueprints
-
Polish Menu
-
Spawn Volumes
-
Player Death
-
Loot Tiers
-
Loot Effects
-
Loot Drop Curve
-
Pickup Sounds
-
Quit Button
-
Section 32 Quiz
Requirment
-
Knowledge of the C++ Programming Language
-
Fundamentals of Unreal Engine C++ - have at least created one Unreal Engine C++ project
Outcomes
-
Unreal Engine's Gameplay Ability System
-
Multiplayer Gameplay Mechanics
-
Creation of a full RPG with Combat, Experience and Level Ups, Enemies, Spells, Menus, Game Saving, and much more
-
SOLID coding principles and AAA quality code architecture
-
How to determine which code goes in Blueprints and which code goes in C++ for optimal performance in a shipped game
-
Scalable, modular, maintainable, and expandable code that can serve as the foundation for any serious game
-
All core features of the Gameplay Ability System
-
Code debugging tools and practices
Instructor
Nguyễn Đình Cường
1.2
-
1 Student
-
330 Courses
-
1253 reviews
Xin chào các bạn, tôi là Nguyễn Đình Cường, một lập trình viên và giảng viên đam mê công nghệ với hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Tôi tốt nghiệp từ Bưu Chính Viễn Thông và đã từng làm việc cho một số công ty công nghệ hàng đầu như FPT Software và VinGroup. Với chuyên môn chính là phát triển ứng dụng web, tôi đã làm việc với nhiều công nghệ như HTML, CSS, JavaScript, React cho front-end và Node.js, Express, MongoDB cho back-end. Không chỉ dừng lại ở việc viết mã, tôi còn yêu thích tìm hiểu sâu về thiết kế hệ thống và kiến trúc phần mềm. Tôi tin rằng quá trình học lập trình không chỉ đơn thuần là lý thuyết, mà còn là sự trải nghiệm thực tế và giải quyết vấn đề. Trong các khóa học của mình, tôi cố gắng cung cấp cho học viên những bài giảng thú vị và dễ hiểu, cùng với các bài tập thực hành giúp củng cố kiến thức. Tôi hy vọng rằng qua các khóa học của mình, bạn sẽ không chỉ học được cách viết mã, mà còn phát triển tư duy lập trình và kỹ năng giải quyết vấn đề. Hãy cùng nhau khám phá thế giới lập trình và biến ý tưởng của bạn thành hiện thực! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại liên hệ với tôi. Tôi rất vui được hỗ trợ bạn trong hành trình học tập của mình!
View Details