工程分层与系统协作
了解 Framework、Gameplay 与通用插件的依赖方向,以及配置装配和运行状态的边界。
本页内容5 节
工程怎样分工
Starry 以 Unreal Engine 5.8 为基础。运行时代码主要位于 StarryGame 模块,内部按 Framework 与 Gameplay 区分可复用基础能力和具体玩法;StarryEditor 承担项目编辑器扩展,插件保留各自的模块边界。
这层划分帮助理解系统之间怎样接入。进入具体功能时,从 AstraAI、HaloDebug或 Input的功能目录继续查阅其架构与用法。
查看图表源码
flowchart TD
Gameplay(Gameplay 具体玩法) --> Framework(Framework 基础框架)
Gameplay --> Plugins(通用插件)
Framework --> Plugins
Framework --> Engine(Unreal Engine 5.8)
Plugins --> Engine
Gameplay --> EngineFramework 提供角色、能力、输入、AI 接入、界面等基础能力,Gameplay 继承或组合这些能力实现项目玩法。基础框架不反向包含具体玩法的头文件。玩法型 GameFeature 可以使用项目框架,按自身功能归属组织,不与图中的通用插件混为一层。
模块与接入方各自负责什么
通用插件维护可复用的领域能力,项目接入代码把这些能力与角色、Controller 和具体玩法连接起来。例如 AstraAI 提供行为组合与选择,项目 AI 接入负责加载角色配置、初始化决策和感知、在退出时释放本次资源。
HaloDebug 提供窗口与绘制基础,项目调试窗口读取各领域的真实状态;Input 的 Manager 负责输入配置与分派,Handler 调用实际的移动、技能或界面能力。这些功能各自在所属模块的文档中展开,依赖方向保持由使用方指向能力提供方。
Async Message System承担 World 内的解耦事件通知,技能、背包和快捷栏在各自规则处理或复制回调后发布消息;使用方负责登记与撤销自己的监听。插件不代替网络同步,状态复制和显式 RPC 仍由所属领域处理。
AsyncMixin管理宿主的异步加载步骤与有序回调。项目的指示器画布用它加载控件类,再交给控件池创建或复用界面;资源加载由 AssetManager/StreamableManager 执行,业务对象的有效性和界面清理由画布负责。
配置、资源与运行状态
Content 保存角色、场景、美术、UI、配置蓝图及数据资产;Config 保存项目和引擎设置。Content/Core 用于系统级、全局共享一份的配置;角色、PawnData、Experience 等配置放在 Content/Blueprints 对应领域,资源目录不与 C++ 目录机械对应。
配置描述能力与规则,运行状态由实际宿主拥有。共享资产是否会实例化,应以类型的真实生命周期为准。例如 Input Handler 是共享配置,不能保存某个玩家的运行状态;AstraAI 的执行数据属于各自 NPC,蓝图 Logic 在实际执行时创建实例。
系统怎样协作
Experience 与 GameFeature 负责装配功能;角色、Controller、组件和各领域系统在自己的生命周期中接入。玩家输入经 Handler 调用移动、技能或交互,AI 经选中的 Logic 使用相应领域能力,具体玩法继续拥有规则、状态和资源。
结束或切换时,各使用方撤销自己的绑定、订阅和任务,领域系统处理自身状态与资源。异步回调使用原请求或执行身份,避免旧任务的结果影响后来的执行。
网络玩法遵循当前世界的 Authority,服务器能力不依赖 LocalPlayer、界面或本地玩家存档存在。本地输入与表现、权威规则和持久保存分别由相应系统负责。
继续阅读具体功能
输入绑定的共享与释放见 Input 的配置与绑定,AI 动作的执行资源见 AstraAI 的Logic 生命周期,调试窗口怎样接入领域数据见 HaloDebug 的窗口扩展与属性绘制。其他内容可通过手册导览、侧栏或页眉搜索继续查阅。