队伍身份与 GAS 扩展点
说明 GenericAISystem 中队伍身份、项目策略和 GAS 集成扩展点能改变的行为与边界。
相关文档:功能说明见 队伍身份与项目策略,接入流程见 接入队伍身份与阵营,字段见 队伍身份与调试参数。
职责分界
Team/Policy 只回答“谁属于哪一方、从哪里读写 TeamId、两个 Actor 的关系是什么”。Command 负责命令目标、需求标签、执行入口和失败回报。Ability/GAS 负责技能效果、成本、冷却、GameplayEffect、GameplayEvent 和预测语义。
不要让 TeamPolicy 触发技能,也不要让 Ability 反过来维护第二套队伍真源。Ability 可以读取 TeamId 作为效果规则输入;命令可以在执行层触发 Ability;失败原因应回到命令或 Ability 自己的结果通道。
UGAIS_ProjectPolicy
项目已有阵营系统时,自定义 UGAIS_ProjectPolicy 是首选接入点。覆写队伍查询和写入方法,让 GAIS 通过项目真源判断 TeamId 和 TeamAttitude。
Policy 对象作为 CDO 使用,应保持无状态,不要缓存运行时 Actor 或 Component 引用。
UGAIS_TeamAgentComponent
需要 GAIS 自己提供队伍真源时使用 TeamAgent。可覆写 OnTeamIdChanged 或监听 OnTeamIdChangedEvent 做 UI、调试和项目镜像同步。
Ability / GAS
GAIS 依赖 GameplayAbilities,但不把 AbilitySystem 作为独立中心模块。命令层负责目标数据、意图和组织;项目 GAS 负责技能、效果、冷却、成本和 GameplayEvent。
IGAIS_CommandAbilityInterface 和 GAIS_AbilitySystemExtensionLibrary 是命令与 Ability 接缝。扩展时让命令定义决定何时触发 Ability,让 Ability 决定具体效果,不要在 GAIS 文档或资产里复制项目技能实现。
可验证场景:
- 攻击命令通过 CommandDefinition 校验目标是敌方,失败时返回命令 reason,而不是静默不触发 Ability。
- 执行层触发项目 Ability,Ability 自己处理成本、冷却、命中、GameplayEffect 和结束事件。
- Ability 结束后把成功、失败或取消回报给命令执行层,CommandSystem 再释放当前命令或推进队列。
- GameplayDebugger 中 TeamSource、Command LastResult、Queue completion 和 Ability 日志能互相解释。
