UE5 GAS 学习笔记0.0 介绍

阅读提示:1.本文按照作者个人所搜集的学习资料汇编而成,参考资料中会详细列出来源,如有侵权,请联系作者删除!2.本文仅供大家作为学习参考,如有其他用途,请联系作者;3.如果有错误的地方,请在评论区留言指正,谢谢。


前言

阅读提示:此节非干货,可酌情跳过。

作者本人搜索了许多关于GAS的学习资料,国内的,国外的,官方的,非官方的,免费的,付费的,本着技术交流和抛砖引玉的想法,创建这个UE5 GAS学习笔记的系列文章。
所有相关的参考资料都会详细列出,这里不仅仅做的搬运工作,而是根据个人理解和实践进行转化,并且提供最佳实践。
独家的源码分析,插件案例分析,包括:GASDocumentation,GASShooter,LyraStarter等,通过实践掌握真知。
除此之外,作者确保会长期更新和维护,以保证其适用性和实用性。


阅读提示:以下是本篇文章正文内容。

GAS是什么?

官方介绍

Gameplay技能系统 是一个高度灵活的框架,可用于构建你可能会在RPG或MOBA游戏中看到的技能和属性类型。你可以构建可供游戏中的角色使用的动作或被动技能,使这些动作导致各种属性累积或损耗的状态效果,实现约束这些动作使用的"冷却"计时器或资源消耗,更改技能等级及每个技能等级的技能效果,激活粒子或音效,等等。简单来说,此系统可帮助你在任何现代RPG或MOBA游戏中设计、实现及高效关联各种游戏中的技能,既包括跳跃等简单技能,也包括你喜欢的角色的复杂技能集。

Gameplay Ability System(GAS)插件由Epic Games开发, 随Unreal Engine 4 (UE4)发布,目前已经更新到UE5. 它已经由3A商业游戏的严格测试, 例如帕拉贡(Paragon)和堡垒之夜(Fortnite)等等.

该插件对于单人和多人游戏提供了开箱即用的解决方案:

  • 执行基于等级的角色能力(Ability)或技能(Skill), 该能力或技能可选消耗和冷却时间.
  • 管理属于Actor的数值Attribute.
  • 为Actor应用状态效果GameplayEffect.
  • 为Actor应用GameplayTag.
  • 生成视觉或声音效果GameplayCue.
  • 为以上提到的所有应用同步(Replication).

在多人游戏中, GAS提供客户端预测支持:

  • 能力激活.
  • 播放蒙太奇.
  • Attribute的修改.
  • 应用GameplayTag.
  • 生成GameplayCue.
  • 通过连接于CharacterMovementComponentRootMotionSource函数形成的移动.

GAS必须由C++创建, 但是GameplayAbilityGameplayEffect可由设计师在蓝图中创建.

GAS中的现存问题:

  • GameplayEffect延迟调节(Latency Reconciliation).(不能预测能力冷却时间, 导致高延迟玩家相比低延迟玩家, 对于短冷却时间的能力有更低的激活速率.)
  • 不能预测性地移除GameplayEffect. 然而我们可以反向预测性地添加GameplayEffect, 从而高效的移除它. 但是这不总是合适或者可行的, 因此这仍然是个问题.

UE5 GAS 学习笔记目录


前置技能:1.编程语言C++;2.Unreal Engine 5;3.Github和VS开发环境


0.0 介绍
0.1 案例预览
0.2 配置插件


1.0 概念
1.1 能力系统组件(AbilitySystemComponent)
1.2 游戏标签(GameplayTag)
1.3 属性(Attribute)
1.4 属性集(AttributeSet)
1.5 游戏效果(GameplayEffect)
1.6 技能(GameplayAbility)
1.7 任务(AbilityTask)
1.8 特效(GameplayCue)
1.9 技能系统全局(AbilitySystemGlobals)
1.10 预测(Prediction)
1.11 目标定位(Targeting)


2.0 常用技能和效果
2.1 眩晕
2.2 冲刺
2.3 瞄准
2.4 生命偷取
2.5 在客户端和服务器生成一个随机数
2.6 暴击
2.7 受击
2.8 当游戏暂停时生成目标数据
2.9 一键互动系统


3.0 调试
3.1 显示调试信息
3.2 游戏调试器
3.3 日志


4.0 优化
4.1 技能批处理
4.2 特效批处理
4.3 技能系统组件网络同步模式
4.4 属性代理网络同步协议
4.5 技能系统组件懒加载


5.0 建议
5.1 效果容器
5.2 技能系统组件代理绑定


6.0 疑难
6.1LogAbilitySystem: Warning: Can't activate LocalOnly or LocalPredicted ability %s when not local!
6.2 脚本结构体缓存错误
6.3 动画蒙太奇没有同步到客户端
6.4 复制的蓝图角色把属性集设置为空指针
6.5 无法解析的外部符号:UEPushModelPrivate::MarkPropertyDirty(int,int)


7.0 常用缩写


8.0 参考资料
8.1 虚幻引擎官方文档
8.2 Github开源项目


9.0 迭代日志

  • 4.27
  • 4.26
  • 4.25.1
  • 4.25
  • 4.24

10. 0案例分析
10.1 GASDocumentation案例(上)
10.1 GASDocumentation案例(中)
10.1 GASDocumentation案例(下)
10.2 GASShooter案例解析
10.3 LyraStarter案例解析


猜你喜欢

转载自blog.csdn.net/qq_30137245/article/details/125231956