If we want to go faster,we have to slow.

发展由来

GamePlay

Alt text

GameAbilitySystem

Alt text

SubSystem

Alt text

Game Features

Alt text

Why Game Features?

  • 需要一种模块化的逻辑组织方式
  • 新人更容易上手,因为无需了解其他项目的内在工作机制,就能开发这些独立功能
  • 更少的漏洞,更易读代码。自包含的代码天然更易于进行单元测试,可以自然地避免在构建时意外或偶然地依赖其他代码
  • 更轻松的在多个团队或项目中共享功能
  • 更容易在大型或分布式开发环境中协作
  • 更容易在“快迭代更新”游戏中迭代功能,也能快速安全地删除出现问题的功能

基础用法

开启插件

Alt text

创建GF

  • 必须放在:Game/Plugins/GameFeatures/

Alt text

显示GF

  • 必须显示插件内容才可显示GameFeatures的内容
  • 根目录下有一个插件同名的GameFeatureData,定义了该GameFeature的机制和Actions,不要改名!

Alt text

配置AssetManager

  • 配置ProjectSettings/AssetManager里的PrimaryAssetTypes以便可以加载GameFeatureData(若已自动加上则可以略过)

Alt text

配置Actions

  • 配置GameFeature的Actions
  • 配置GF的初始状态
  • 重启

Alt text

配置Actor

Alt text

激活GF

Alt text

框架机制

核心概念

  • Core Game
  • Game Feature - GF
  • UGameFeatureData - GFD
  • UGameFeatureAciton - GFA
  • UGameFeatureSubsystem - GFS
  • UGameFrameworkComponentManager - GFCM

Alt text

Alt text

Game Features 启动流程 - 最初

Alt text

创建加载策略

Alt text

创建加载策略-配置策略

Alt text

GFS设置

Alt text

GF Policies-设置如何加载GF

Alt text

GFD Asset Manager 配置

Alt text

加载GF.uplugin

Alt text

GF状态 - 切换

Alt text

GF状态机

Alt text

GF状态机加载流程

  1. 检查存在性
    Alt text

  2. 加载GF C++模块
    Alt text

  3. 加载GameFeatureData
    Alt text

  4. 预加载资产和配置
    Alt text

  5. 激活生效
    Alt text

GF状态机总结

Alt text

GF状态监听

Alt text

AddComponent

Alt text

GFA_AddComponent 最常见最重要

Alt text

AddComponent - Component

Alt text

AddComponent - Actor BP

Alt text

AddComponent - Actor C++

Alt text

GFA_Action扩展

Alt text

GF 依赖机制

Alt text

GF 模块协作

Alt text

最佳实践

《古代山谷》项目

Alt text

CoreGame预留好逻辑注入点

Alt text

可继承扩展的类

Alt text

如何转换现有逻辑到GF?

Alt text

Rethink in GF

Alt text

注意要点

Alt text

总结

Alt text