Initialize PHY Codex workflow

This commit is contained in:
2026-04-25 23:43:40 +08:00
commit 5aacc79f03
38 changed files with 2804 additions and 0 deletions

72
AGENTS.md Normal file
View File

@@ -0,0 +1,72 @@
# 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。