GenericAISystem

系统边界与协作关系

梳理 GenericAISystem 命令、小队、阵型、StateTree、战术分配、队伍和移动的数据交接与项目职责边界。

目录

GenericAISystem 由可以独立接入的能力系统组成。项目不必一次启用所有部分;关键是让每个决策、运行时真源和执行层只由合适的系统承担。本页用一张关系图先建立整体心智模型,再说明每条关键交接的责任边界。

系统关系图

图中的箭头表示系统间交换的职责和结果,不是固定代码调用顺序。例如 Tactical Assignment 只在项目需要自动选择时进入;没有它时,项目可直接通过 Command System 发起明确命令。Formation 也可以单独用于空间查询,而不一定创建 Squad。

项目的 UI、输入和业务规则可以发起请求,但不应成为第二份运行时真源。GAIS 输出状态和建议后,由项目已有的移动、动画、网络或 GAS 层按项目规则执行。

各系统各自拥有的事情

系统拥有的决策或真源不应承担的职责
Command System明确命令的校验、调度和执行交接。自动寻找最合适的单位或目标。
Tactical Assignment候选单位/目标、评分、分配与命令生成。直接替代项目移动后端。
Squad System成员、角色、容量、槽位占用和成员 Movement Intent。定义槽位几何或直接实现项目移动。
Formation System阵型布局、最终槽位位置和导航自适应。决定成员归属、角色或移动控制。
StateTree 调度当前行为层的覆盖、恢复和任务调度。取代小队真源或绕过命令验证。
Team Identity队伍身份及接入项目阵营规则的边界。单独定义战术、阵型或行为状态。

三条最常用的交接关系

明确命令与自动战术选择

Command System 接收“谁对什么做什么”的明确请求,并负责校验、调度与执行交接。Tactical Assignment 不替代 Command:它在 AI 需要自行挑选 Unit、目标和意图时,先形成候选、评分和分配,再把得到的命令交给 Command System。项目已经明确指定单位和目标时,直接使用 Command System;不要为此额外创建战术分配计划。

小队、阵型与移动层

FormationComponent 产出最终槽位位置;SquadComponent 决定成员占用并以该结果刷新 Movement Intent;UnitComponent 镜像成员侧结果;每支小队配置的 Driver 或项目移动层再消费 Intent。任何一层都不应倒过来改写前一层的真源。

这条边界使项目可以替换导航、Mover、GMS、动画驱动移动或网络策略,而不必复制阵型和小队的组织逻辑。若 Intent 正确但单位不动,应从 Driver/项目移动层排查;若槽位错误,应回到 Formation 或 Squad 分配,而不是修改 Driver。

StateTree 与队伍身份

StateTree Stack 与 Queue 让 Unit、Squad 或 Command 在不同层组织当前行为和执行序列。它可以触发阵型选择,或临时改变 Movement Intent 的消费策略,但仍需通过所属系统入口提交状态。Team Identity 则为命令、招募、过滤和项目规则提供共同的阵营语义;它不替代这些系统各自的权限、选择或生命周期。

常见跨系统误用

现象应回到的边界
Driver 试图决定谁属于小队或占哪个槽位回到 SquadSystem。
直接使用阵型资产 Offset 作为单位目的地使用 Formation 的最终槽位世界结果。
Command、AIController 和 Driver 同时写移动指定当前移动控制权,明确暂停、覆盖或合并 Intent 消费。
用 Tactical Assignment 强行实现已经明确的玩家命令直接走 Command System。
用 StateTree 直接篡改复制容器通过 Squad、Formation 或 Command 的公开入口提交状态改变。

下一步可从 核心功能地图 回到具体系统;字段、扩展和症状排查分别在 参数参考扩展点指南调试与排错