Cleanup 1

This commit is contained in:
SepComet
2026-04-02 11:21:07 +08:00
parent 5ed792b09f
commit 1052cc0136
26 changed files with 600 additions and 2057 deletions
+5 -5
View File
@@ -40,11 +40,11 @@
- 当前主瓶颈明确:`MoveSeperation` 是绝对热点(约 `43%~47%` 帧占比),P2 优先并行化该阶段。
- 评估口径可复现:Android 端受 `60 fps` 上限影响,性能判断以 CPU `ms` 为准。
## 回滚开关说明
- 开关字段:`SimulationWorld._useSimulationMovement`(序列化私有字段)
- 对外接口:`UseSimulationMovement` / `SetUseSimulationMovement(bool)`
- 回滚方式:将开关置 `false`,敌人立即回退到旧 `MovementComponent` 更新路径。
- 验证建议:同场景同刷怪参数下执行 A/B 对比,确认行为一致与性能差异。
## 路线收敛说明
- `SimulationWorld.Tick(...)` 已收敛为战斗内唯一仿真执行入口。
- `UseSimulationMovement` 不再承担运行时双路径路由职责,不应再作为回滚到旧 `MovementComponent` 路径的开关理解。
- 敌人、投射物与目标查询的运行时行为统一以 `SimulationWorld` 主容器和 Burst Job 管线为准。
- 验证建议:聚焦单一路径下的敌人移动、投射物生命周期、最近敌查询和 area hit 结果,而不是做旧路径 A/B 对照。
## P2 交接建议
- Job/Burst 第一优先级:`MoveSeperation` 阶段并行化。
+13 -17
View File
@@ -6,7 +6,7 @@
目标:
- 固化压测口径(0.5k/1k/1.5k/2k)
- 给出回归验证结论
- 给出开关/回滚策略
- 给出单一路径架构下的验证策略
- 给出最终验收判定(通过/不通过)
## 2. 验收标准(对齐 TodoList)
@@ -23,21 +23,17 @@
- Profiler 口径:以 CPU `ms` 为主,`fps` 仅作辅助(Android 端存在 60fps 上限)
- Profiler 配置:`Call Stacks = Off`
## 4. P2 开关与回滚策略
## 4. P2 路线收敛说明
### 4.1 运行开关
- `UseSimulationMovement`
- `UseJobSimulation`
- `UseBurstJobs`
### 4.1 当前运行时语义
- `SimulationWorld.Tick(...)` 是战斗内唯一仿真执行入口。
- 敌人移动、敌人分离、投射物推进、碰撞 broad-phase、最近敌查询统一走 Burst/Job 管线。
- 文档中的 `UseJobSimulation`、`UseBurstJobs` 当前没有代码实现,不应再作为实际回滚方案描述。
### 4.2 生效时机约束
- `UseSimulationMovement` / `UseJobSimulation`:战斗内不支持热切换,需在 Battle 外修改后生效。
- `UseBurstJobs`:可切换,但建议仅用于战斗外 A/B。
### 4.3 回滚策略(建议)
1. 切回非 Job 路径:`UseJobSimulation = false`
2. 若仍异常,切回旧移动:`UseSimulationMovement = false`
3. 保留 `UseBurstJobs` 仅在 Job 路径 A/B 对照
### 4.2 验证重点
1. 验证单一路径下的敌人移动、投射物生命周期、碰撞候选与 area hit 结果。
2. 验证 `Battle -> LevelUp -> Shop -> Battle` 与清场流程不会留下脏的仿真状态。
3. 验证 Debug/测试表面不再暴露旧 solver 或双路径开关语义。
## 5. 回归验证(Checkpoint 9)
@@ -57,7 +53,7 @@
#### 用例 1:10 分钟连续战斗
- 执行时间:待填
- 场景/波次参数:待填
- 运行开关:`UseSimulationMovement = true`,`UseJobSimulation = true`,`UseBurstJobs = true`
- 运行路径:`SimulationWorld` Burst/Job 单一路径
- 结果:待填
- 日志/录屏:待填
- 备注:待填
@@ -66,7 +62,7 @@
- 执行时间:已执行,见 `Logs/editmode-test-results.xml`
- 操作步骤:由 EditMode 测试 `ProcedureGame_TransitionsBattleToLevelUpShopAndBackToBattle` 覆盖
- 执行方式:自动化测试
- 运行开关:`UseSimulationMovement = true`,`UseJobSimulation = true`,`UseBurstJobs = true`
- 运行路径:`SimulationWorld` Burst/Job 单一路径
- 结果:通过
- 日志/录屏:`Logs/editmode-test-results.xml`
- 备注:验证 `ProcedureGame` 可从 `Battle` 正确切换到 `LevelUp`、再到 `Shop`,并最终返回 `Battle`
@@ -75,7 +71,7 @@
- 执行时间:已执行,见 `Logs/editmode-test-results.xml`
- 验证范围:掉落注册 / 更新 / 回收
- 执行方式:自动化测试
- 运行开关:`UseSimulationMovement = true`,`UseJobSimulation = true`,`UseBurstJobs = true`
- 运行路径:`SimulationWorld` Burst/Job 单一路径
- 结果:通过
- 日志/录屏:`Logs/editmode-test-results.xml`
- 备注:由 EditMode 测试 `PickupLifecycle_UpsertAndRemove_KeepsBindingsConsistent` 覆盖,验证掉落在 `SimulationWorld` 中的生命周期与 binding remap 正常
+5 -7
View File
@@ -40,8 +40,8 @@
- [x] Checkpoint 3:建立 Simulation 主更新入口并接入 Battle 状态
- 在 `GameStateBattle.OnUpdate` 中增加 `SimulationWorld.Tick(...)` 调用。
- 先只接“敌人移动/追踪”系统,其他逻辑保持原路径。
- 增加开关(建议 `UseSimulationMovement`)用于 A/B 对比与回滚。
- 完成标准:关闭开关与当前行为一致;开启开关后敌人仍能正常追踪玩家。
- 路线已收敛:不再维护 `UseSimulationMovement` 作为运行时 A/B 与回滚开关。
- 完成标准:`SimulationWorld.Tick(...)` 成为唯一执行入口,敌人仍能正常追踪玩家。
- [x] Checkpoint 4:迁移敌人核心移动逻辑到 Simulation(去 MonoBehaviour 核心逻辑)
- 将 `MeleeEnemy/RemoteEnemy` 的目标追踪、移动方向、攻击距离判定迁至 Simulation。
@@ -117,11 +117,9 @@
- `com.unity.jobs`(已废弃并并入 `com.unity.collections`,Unity 2022.3 不再单独锁定包)
- `com.unity.burst`
- `com.unity.mathematics`
- 增加 P2 运行开关(建议):
- `UseJobSimulation`
- `UseBurstJobs`
- 约束:默认可一键回退到 P1.5 路径,避免全量切换导致定位困难。
- 完成标准:Editor/Development Build 均可编译运行;关闭开关时行为与 P1.5 一致。
- 文档中的 `UseJobSimulation` / `UseBurstJobs` 当前未落代码实现,不再作为运行时方案前提。
- 约束:以当前 `SimulationWorld` Burst/Job 单一路径为唯一验收对象。
- 完成标准:Editor/Development Build 均可编译运行;单一路径行为稳定。
- [x] Checkpoint 2:Simulation 与 Job 数据通道打通(仅建通道,不改行为)
- 为敌人/投射物建立 Job 输入输出结构(纯数据,不含 `Transform`/托管引用)。