Skip to content
fantuan812Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aura —— UE5 GAS 课程 C++ 源码知识点详解

本仓库是对 Udemy 课程 《Unreal Engine 5 - Gameplay Ability System: Top Down RPG》(讲师 Stephen Ulibarri / Druid Mechanics)官方项目 DruidMech/GameplayAbilitySystem_Aura 的 C++ 源码学习笔记。

项目简介

Aura 是一个基于 UE 5.3 的俯视角暗黑类 ARPG 课程项目,完整演示了 GAS(Gameplay Ability System) 在现代 UE5 项目中的工程化用法。工程约 100+ 个 C++ 文件,涵盖:

  • 属性系统(AttributeSet):主属性 / 次属性 / 抗性 / 生命法力 / Meta 属性
  • 伤害管线(ExecCalc):抗性减免、护甲、破甲、格挡、暴击、Debuff、径向伤害
  • 技能系统(ASC):输入绑定、技能槽位、升级解锁、被动技能
  • 技能实现:火球(FireBolt)、电击(Electrocute)、火焰爆裂(FireBlast)、召唤(Summon)、秘法碎片
  • 战斗表现:浮字伤害、受击反应、死亡溶解、击退/击飞
  • AI:行为树 + 黑板(寻敌、攻击、HitReact 状态)
  • UI:WidgetController 模式 + MVVM 加载界面
  • 存档:LoadScreen 存档 + 世界状态序列化(SaveGame 标记属性)

源码位置

原项目:https://github.com/DruidMech/GameplayAbilitySystem_Aura(本机:C:\work\GameplayAbilitySystem_Aura) 源码根目录:Source/Aura/

Source/Aura/
├── Public/ 与 Private/ 对应镜像
│   ├── AbilitySystem/          # GAS 核心:ASC、AttributeSet、ExecCalc、技能、数据资产
│   ├── Actor/                  # 投射物、火球、魔法阵、效果物、刷怪点
│   ├── AI/                     # AIController、行为树 Service/Task
│   ├── Character/              # 角色基类、玩家角色、敌人
│   ├── Checkpoint/             # 检查点、地图入口
│   ├── Game/                   # GameMode、GameInstance、存档类
│   ├── Input/                  # 输入配置与绑定组件
│   ├── Interaction/            # 接口:战斗、玩家、敌人、高亮、存档
│   ├── Player/                 # PlayerController、PlayerState
│   └── UI/                     # HUD、WidgetController、MVVM、伤害浮字

文档目录

# 文档 内容
00 00-源码覆盖索引 按上游源码目录组织的覆盖索引(✅/🟡/🔴/⚪)
1 01-项目架构总览 整体架构、类关系、初始化流程
2 02-GameplayTags与核心数据结构 原生 Tag 单例、FDamageEffectParams、自定义 EffectContext
3 03-属性系统 AttributeSet 属性定义、复制、伤害处理、XP/升级、Debuff 施加
4 04-伤害计算 ExecCalc_Damage 完整伤害公式:抗性→护甲→暴击→格挡→Debuff
5 05-能力系统 ASC 输入绑定、技能槽位、升级/装备/被动、RPC
6 06-技能实现详解 FireBolt / Electrocute / FireBlast / Summon 逐技能解析
7 07-投射物与战斗Actor AuraProjectile、AuraFireBall、MagicCircle、效果物、刷怪
8 08-角色系统 角色基类、玩家角色、死亡/溶解/受击、接口实现
9 09-玩家控制器与输入 点击移动、光标追踪、自动寻路 Spline、技能输入
10 10-AI与敌人 AIController、行为树、黑板、敌人实现
11 11-UI与WidgetController HUD、三种 WidgetController、MVVM 加载界面
12 12-存档系统 LoadScreenSaveGame、世界状态序列化、检查点
13 13-工具库与杂项 AuraAbilitySystemLibrary、接口、Niagara 组件、日志
14 14-设计原理-GAS核心 为什么这么设计:Tags/EffectContext/AttributeSet/ExecCalc/ASC/数据资产
15 15-设计原理-技能与战斗 为什么这么设计:技能继承树/各技能/投射物/战斗 Actor/刷怪
16 16-设计原理-角色玩家与输入 为什么这么设计:角色分层/PlayerState 持 ASC/点击移动/输入/AI
17 17-设计原理-UI存档与框架 为什么这么设计:WidgetController/MVVM/字节存档/检查点/GameMode
18 18-设计原理-接口工具与杂项 为什么这么设计:接口体系/静态库/Niagara 声明式/全局扩展点
19 19-完整战斗调用链 FireBolt / 技能装备 / XP升级 / 存档 四条完整调用链
20 20-GAS网络复制与预测 ASC 位置/初始化时序/PredictionKey/TargetData/RPC 总表
21 21-蓝图与资产依赖图 GA/GE/DataAsset 映射表与 Blueprint-only 流程
22 22-GAS调试与排错 断点清单/观察数据/12 类常见 Bug
23 23-GAS关键数据结构 Spec/EffectSpec/Context/ActorInfo/TargetData/PredictionKey 六问解析

上游版本

分析基线:UPSTREAM.md —— DruidMech/GameplayAbilitySystem_Aura @ cd631e4(UE 5.3)

知识结构

源码覆盖索引(00)
    → 类/模块文档(01~13)
    → 设计原理(14~18)
    → 系统调用链(19)→ 网络时序(20)→ 资产映射(21)→ 调试排错(22)→ 数据结构(23)
    → 实践 Lab(labs/00~13)

实践 Lab(从零复刻 Mini Aura)

按顺序完成 labs/00 → labs/13,即可从空工程搭建一个最小可运行的 GAS ARPG(含多人测试):

# Lab 目标
00 实验环境 搭建 UE 5.3 C++ 工程
01 接入GameplayAbilities模块 启用 GAS 插件与模块
02 ASC与AttributeSet 挂载并初始化 GAS 组件
03 GameplayTag输入 Tag 驱动的输入绑定
04 第一个GameplayAbility 输入激活技能
05 Cost与Cooldown 蓝耗与冷却
06 伤害ExecCalc 最小伤害公式
07 Projectile技能 服务器生成投射物
08 Debuff 动态构建周期伤害 GE
09 技能升级与装备 技能状态机 + RPC
10 WidgetController UI 数据驱动
11 AI调用Ability 行为树触发技能
12 SaveGame 存档与读档
13 DedicatedServer测试 多人网络行为验证

每个 Lab 使用统一模板:本节目标 / 完成效果 / 前置知识 / 新建类 / 新建资产 / 实现步骤 / 关键代码 / 完整调用链 / 为什么这么设计 / 如何验证 / 常见 Bug / 与 Aura 原版的区别 / 下一步。

学习路径建议

  1. 先读 01-项目架构总览,建立整体认知
  2. 再按 标签 → 数据资产 → 属性 → 伤害 → 技能 的顺序读 GAS 部分(02~06)
  3. 然后读战斗 Actor 与角色(07~08)
  4. 再读输入、AI、UI、存档(09~12)
  5. 理解"为什么":通读设计原理系列(14~18),每个类/函数的设计动机与取舍
  6. 串起来:读 19(完整调用链)→ 20(网络)→ 21(蓝图/资产)→ 23(数据结构)
  7. 动手:按 labs/00~13 从零复刻(每节含验证方法与常见 Bug)

工程化

  • 完善方案:方案/仓库完善执行方案.md(7 阶段规划与执行状态)
  • 文档站点:MkDocs Material 配置(mkdocs.yml),GitHub Pages 自动构建(.github/workflows/docs.yml:链接检查 + Markdownlint + 构建)

设计原理系列(14~18)逐类回答了:这个类为什么存在?这个函数为什么这么设计?解决了什么问题?权衡了什么?

注意:本文档基于官方仓库 main 分支最新提交(cd631e4 Upgrade to 5.3 and fix MVVM compatibility issues)整理。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors