Modular Game Features(模块化游戏功能框架)
If we want to go faster,we have to slow.
发展由来
GamePlay
GameAbilitySystem
SubSystem
Game Features
Why Game Features?
- 需要一种模块化的逻辑组织方式
- 新人更容易上手,因为无需了解其他项目的内在工作机制,就能开发这些独立功能
- 更少的漏洞,更易读代码。自包含的代码天然更易于进行单元测试,可以自然地避免在构建时意外或偶然地依赖其他代码
- 更轻松的在多个团队或项目中共享功能
- 更容易在大型或分布式开发环境中协作
- 更容易在“快迭代更新”游戏中迭代功能,也能快速安全地删除出现问题的功能
基础用法
开启插件
创建GF
- 必须放在:
Game/Plugins/GameFeatures/
显示GF
- 必须显示插件内容才可显示GameFeatures的内容
- 根目录下有一个插件同名的GameFeatureData,定义了该GameFeature的机制和Actions,不要改名!
配置AssetManager
- 配置P
rojectSettings/AssetManager
里的PrimaryAssetTypes
以便可以加载GameFeatureData(若已自动加上则可以略过)
配置Actions
- 配置GameFeature的Actions
- 配置GF的初始状态
- 重启
配置Actor
激活GF
框架机制
核心概念
- Core Game
- Game Feature -
GF
- UGameFeatureData -
GFD
- UGameFeatureAciton -
GFA
- UGameFeatureSubsystem -
GFS
- UGameFrameworkComponentManager -
GFCM
Game Features 启动流程 - 最初
创建加载策略
创建加载策略-配置策略
GFS设置
GF Policies-设置如何加载GF
GFD Asset Manager 配置
加载GF.uplugin
GF状态 - 切换
GF状态机
GF状态机加载流程
检查存在性
加载GF C++模块
加载GameFeatureData
预加载资产和配置
激活生效
GF状态机总结
GF状态监听
AddComponent
GFA_AddComponent 最常见最重要
AddComponent - Component
AddComponent - Actor BP
AddComponent - Actor C++
GFA_Action扩展
GF 依赖机制
GF 模块协作
最佳实践
《古代山谷》项目
CoreGame预留好逻辑注入点
可继承扩展的类
如何转换现有逻辑到GF?
Rethink in GF
注意要点
总结
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 InAction!
评论