工程分层与系统协作

了解 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 --> Engine

Framework 提供角色、能力、输入、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 的窗口扩展与属性绘制。其他内容可通过手册导览、侧栏或页眉搜索继续查阅。

Starry手册导览从模块进入子模块与具体功能,查阅功能用途、配置步骤、技术架构和扩展方法。工程分层与系统协作了解 Framework、Gameplay 与通用插件的依赖方向,以及配置装配和运行状态的边界。模块总览与接入从行为系统、执行系统与机会调度了解 AstraAI,再为角色配置第一套组合决策。组合与覆盖正确区分优先级、行为分数与 Stack 顺序,按完整路径组织可撤销的配置。评分与抢占沿着条件、优先级、分数、持续有效性与冷却,解释一个行为为何开始或退出。Logic 与生命周期把动作接入 Start、Cancel、Cleanup,正确处理共享模板、蓝图实例与过期异步回调。BT、StateTree 与 HTN复用控制器上的树组件,正确传入数据、报告整树结果并等待安全退出。Objective 与机会生成把领域事实整理成当前机会,让评分只读数据,让生成器独立管理订阅。命令发布与领取发布一条命令后,经机会评估、Take、执行与 EndUse 完成一次受控使用。行为区域用可挂载的 Zone 组件分配行为层,并把回区机会与实际导航分开。调试与排查从初始化到候选、机会、应用层与后端,沿真实运行路径定位 AI 没有行动的原因。模块总览与使用了解通用调试工具的操作、远程连接与窗口扩展,再由各模块的排查说明定位具体问题。netImgui 远程面板在独立桌面程序查看调试窗口,区分远程 UI、游戏视口绘制与玩法网络权限。窗口扩展与属性绘制复用窗口生命周期、反射 Inspector 和场景绘制,避免为每个调试页重做基础设施。模块总览与接入从配置绑定、动作处理、通道缓存与玩家改键了解 Input,再接入角色的输入配置。绑定与配置生命周期理解跨 IMC 的共享绑定、配置所有权、延迟初始化,以及切换角色时的清理。Handler 与能力分派选择正确的输入阶段,把输入交给移动、GAS、GameplayEvent 或 UI,保持共享 Handler 无玩家状态。修饰器与双击选择输入值变换所在层,理解玩家设置修饰器与 Double Tap 的时序规则。通道输入缓存按 GameplayTag 通道开窗,保留首批或末批输入,正常关闭执行,中断取消丢弃。改键与玩家设置通过 GameSettings 统一编辑与应用,区分 SharedSettings 偏好和 Enhanced Input 键映射数据。调试与排查使用 Gamepad 与 Actions 观察和模拟输入,沿设备、映射、绑定、缓存与能力定位问题。模块总览与接入使用 UE 5.8 原生 Async Message System,把事件通知与接收方解耦,查阅消息收发、路由和 Starry 的实际接入。蓝图收发与解绑通过消息 Id、监听、载荷封装与解包的核心连线,掌握蓝图收发和任务解绑。C++ 收发与解绑按取得系统、登记监听、读取载荷、发送与解绑的顺序,查阅原生 C++ 接口用法。标签、时机与生命周期理解消息的标签层级、World 和 Endpoint 路由、游戏线程派发、载荷快照与 C++ 监听清理。项目消息与排查查阅 Starry 已接入的消息标签、载荷和触发点,区分本地通知、状态复制与 RPC 转发,并沿真实链路排查。模块总览与项目接入管理软引用加载、有序回调与任务作用域,了解指示器画布的实际接入,以及加载完成后的资源和宿主生命周期。软引用加载与 C++ 用法用组件加载软对象和控件类,保存加载结果,理解路径数组、同步回调、失败结果,以及重载与退出时的取消清理。主资产与资源驻留按主资产 ID 和 Bundle 预加载资源,理解句柄保留、取消与 GC 引用的关系,以及 AssetManager 和打包配置的职责。回调顺序与独立作用域理解并行加载与有序回调的区别,使用 FAsyncScope 分开取消任务,了解 AsyncEvent、开始完成通知和等待条件的当前边界。在文档中说明蓝图用法将真实蓝图节点嵌入正文,结合步骤、引脚和连线说明功能,节点文本随文章保存。维护这本手册本地文件与网页编辑共用一份 MDX,日常只改内容与关系,沿用共享版式和图表。