Files
PHY/AGENTS.md
2026-04-25 23:43:40 +08:00

73 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PHY Codex 工作协议
## 项目原则
- 项目以 C++ 和配置文件为主要实现手段,优先级固定为:`C++` > `项目配置文件` > `DataAsset` > `蓝图/编辑器装配`
- 只有插件强制要求、动画/UI 资产装配、或无法用 C++/配置表达时,才允许使用蓝图或 DataAsset使用时必须在交付说明里写明原因。
- 项目按多人优先设计:战斗、交互、背包、效果触发默认考虑 Server authority、复制、预测或回滚风险。
- 首期平台目标为 Win64 / UE 5.7。`AuroraDevs_UGC` 当前只声明 Win64因此不要承诺其他平台可用。
- Marketplace 插件源码只允许读取和适配,不直接修改 Engine 下的插件文件。
- Git 远程仓库固定为 `https://git.codable.cn/cit110/PHY.git`
- `Content` 目录只管理 `Content/AGame` 及其子文件;`Content/Collections``Content/Developers` 等其他目录默认不纳入版本控制。
- 每次完成修改并通过对应验证后,必须提交并推送到 `origin`;如果远程认证或冲突阻塞推送,必须在最终汇报中说明。
## 插件源码位置
- Generic Combat System`D:\ue\UE_5.7\Engine\Plugins\Marketplace\GenericCd51b9e2c8181V4`
- Runtime 模块:`GenericInputSystem``GenericGameplayAbilities``GenericGameplayAttributes``GenericCombatSystem`
- Generic Game System`D:\ue\UE_5.7\Engine\Plugins\Marketplace\GenericG08270e38e585V5`
- Runtime 模块:`GenericEffectsSystem``GenericCameraSystem``GenericUISystem``GenericGameSystem`
- Generic Inventory System`D:\ue\UE_5.7\Engine\Plugins\Marketplace\GenericI359982083d7bV3`
- Runtime 模块:`GenericInventorySystem`
- Smooth Locomotion System`D:\ue\UE_5.7\Engine\Plugins\Marketplace\SmoothLo6fa0c61bf7bdV5`
- Runtime 模块:`SLSCore``SmoothLocomotionSystem``TraversalSystem``FootStepSystem``SLSIntegration``SLSCameraModeSystem`
- Ultimate Gameplay Camera`D:\ue\UE_5.7\Engine\Plugins\Marketplace\Ultimate683e2e68927aV34`
- Runtime 模块:`AuroraDevs_UGC`
## Agent 职责和汇报链
- 总架构/协调 Agent 是唯一总负责人,直接向用户汇报;所有专家向它汇报。它负责接口边界、任务拆分、跨系统决策、合并顺序、是否允许使用蓝图/DataAsset。
- 相机专家向总架构汇报。主责 `AuroraDevs_UGC`、战斗锁定/瞄准/移动相机状态;不得主动引入 `GenericCameraSystem``SLSCameraModeSystem` 作为玩法层依赖。
- 战斗/GAS 专家向总架构汇报。主责 ASC、Ability、Attribute、GameplayTag、GameplayCue、伤害、复制、预测。
- 输入专家向总架构汇报。主责 `GenericInputSystem``EnhancedInput`、输入到 GAS/UGC/运动/UI 的路由。
- 运动专家向总架构汇报。主责 `SmoothLocomotionSystem``SLSCore``TraversalSystem``SLSIntegration``FootStepSystem`;运动状态只通过项目接口通知相机。
- UI 专家向总架构汇报。主责 `GenericUISystem``CommonUI`、UMG、HUD、输入模式切换。
- 背包专家向总架构汇报。主责 `GenericInventorySystem`、物品、装备、拾取、战斗/UI 联动。
- 交互/效果专家向总架构汇报。主责 `GenericGameSystem``GenericEffectsSystem``SmartObjects``TargetingSystem`、Niagara。
- 验证 Agent 向总架构汇报,但拥有阻断权;构建、测试、多人验证失败时不得合并。
- Git/仓库 Agent 向总架构汇报只在验证通过后处理提交、分支、LFS、忽略规则。
## 工作流
- 用户需求先交给总架构 Agent总架构拆成单系统任务或跨系统任务并指定唯一 owner。
- 专家进入实现前先读项目源码、配置和对应插件源码;不得直接修改 Engine Marketplace 插件源码。
- 专家方案必须说明 C++ 接口、配置文件、是否需要蓝图/DataAsset、多人影响、依赖模块。
- 单系统任务由 owner 完成;跨系统任务由总架构先定接口,再分派给对应专家,避免互相改同一批文件。
- 专家交付必须包含:`改动范围``新增/修改接口``配置文件``蓝图/DataAsset 使用原因``验证结果``遗留风险`
- 验证 Agent 通过构建和必要测试后Git/仓库 Agent 才能提交;总架构最终向用户汇报结果。
- Git/仓库 Agent 初始化仓库时必须设置 `origin=https://git.codable.cn/cit110/PHY.git`,启用 Git LFS并确认 `Content` 跟踪范围仅限 `Content/AGame/**`
- Git/仓库 Agent 在每次修改完成后负责提交并推送当前改动,不保留已完成但未提交的工作树。
- 相机/输入/运动/战斗之间的接口冲突、是否使用蓝图/DataAsset、是否引入插件模块依赖统一由总架构裁决。
## 相机规则
- 项目相机主入口统一使用 Ultimate Gameplay Camera`AuroraDevs_UGC`
- `GenericCameraSystem``SLSCameraModeSystem` 只允许作为插件内部依赖、示例资产参考或薄适配层依赖;项目玩法层尽可能不用。
- 相机状态由项目级接口接收输入、运动和战斗状态,不允许业务代码到处直接耦合多个相机系统。
## C++ 和配置规则
- 配置按功能拆分,不把项目自定义设置堆进一个 ini。
- 项目自有设置使用 `UCLASS(Config=PHYCombat, DefaultConfig)` 这类配置类,对应 `Config/DefaultPHYCombat.ini`
- UE 引擎强制读取的内容仍放在标准文件中,例如 `DefaultEngine.ini``DefaultInput.ini``DefaultGame.ini`;项目玩法参数尽量迁移到功能专属配置类。
- 建议功能配置文件:`DefaultPHYCore.ini``DefaultPHYInput.ini``DefaultPHYCombat.ini``DefaultPHYCamera.ini``DefaultPHYLocomotion.ini``DefaultPHYUI.ini``DefaultPHYInventory.ini``DefaultPHYInteraction.ini``DefaultPHYEffects.ini`
- `.h` 文件注释使用符合 Doxygen 风格的中文注释:公开类、结构体、枚举、函数、属性使用 `/** ... */`,需要时使用 `@brief``@param``@return`
- `.cpp` 文件也使用中文注释,但不用 Doxygen 风格;避免在实现文件里写 `/** ... */` 形式的 API 文档。
- 包含 `*.generated.h` 的头文件,其对应 `.cpp` 必须在包含自身头文件后使用 `#include UE_INLINE_GENERATED_CPP_BY_NAME(文件基名)`
- 反射声明禁止 `ClassGroup`,也禁止在 `meta=(...)` 中写 class 分组。
- Gameplay Tags 全部使用 Native Gameplay Tags 宏,按功能域拆分到 `Source/PHY/Public/GameplayTags``Source/PHY/Private/GameplayTags``PHYGameplayTags.h` 只作为聚合入口,不直接堆放声明。
- 新增 Gameplay Tag 时按职责放入对应领域文件,例如输入、状态、能力、事件、效果;如果领域不匹配,先新增清晰命名的领域文件,不把所有 Tag 写在一个文件里。
- 核心 Tag 禁止只写在 ini、蓝图字符串或裸字符串里。
## 验证命令
- 基线构建:
`D:\ue\UE_5.7\Engine\Build\BatchFiles\Build.bat PHYEditor Win64 Development -Project="D:\ue\Projects\PHY\PHY.uproject" -WaitMutex -NoHotReloadFromIDE`
- Git 验证:`git status --short --branch` 不应显示 `Binaries``Intermediate``Saved``DerivedDataCache`
- 代码审查检查中文注释、Doxygen 规则、`UE_INLINE_GENERATED_CPP_BY_NAME`、反射 metadata、Native GameplayTags。
- 相机验证UGC 能响应移动、战斗锁定、瞄准、UI 输入模式;业务层不得新增 `GenericCameraSystem` / `SLSCameraModeSystem` 直接依赖。
- 多人验证:战斗、输入、交互、背包、效果改动至少做双客户端 PIE 或 dedicated server smoke test。