Cleanup 2
This commit is contained in:
+71
-71
@@ -187,21 +187,21 @@
|
||||
### 推荐实施顺序
|
||||
|
||||
1. 先确认唯一执行路径
|
||||
- `SimulationWorld` Burst 管线作为唯一运行时执行路径
|
||||
- 实体和组件只保留输入、注册、表现职责
|
||||
- `SimulationWorld` Burst 管线作为唯一运行时执行路径
|
||||
- 实体和组件只保留输入、注册、表现职责
|
||||
|
||||
2. 再处理战斗入口
|
||||
- 先改 `GameStateBattle` / `GameEntry` / `ProcedureGame`
|
||||
- 让运行时明确依赖当前 Burst 管线,不再保留双路径语义
|
||||
- 先改 `GameStateBattle` / `GameEntry` / `ProcedureGame`
|
||||
- 让运行时明确依赖当前 Burst 管线,不再保留双路径语义
|
||||
|
||||
3. 再清理旧组件驱动路径
|
||||
- 先收敛 `MovementComponent`
|
||||
- 再删敌人/玩家/投射物实体里的自驱动移动
|
||||
- 再删旧 fallback 查询和旧互斥 solver
|
||||
- 先收敛 `MovementComponent`
|
||||
- 再删敌人/玩家/投射物实体里的自驱动移动
|
||||
- 再删旧 fallback 查询和旧互斥 solver
|
||||
|
||||
4. 最后重建测试和文档
|
||||
- 先让行为稳定
|
||||
- 再补新的回归测试和文档
|
||||
- 先让行为稳定
|
||||
- 再补新的回归测试和文档
|
||||
|
||||
### 当前建议
|
||||
|
||||
@@ -355,72 +355,72 @@
|
||||
优先顺序建议:
|
||||
|
||||
1. 长枪 / 刺剑
|
||||
- 基于 `WeaponKnife`
|
||||
- 重点调:
|
||||
- 前刺距离
|
||||
- 命中半径
|
||||
- 冷却
|
||||
- 基于 `WeaponKnife`
|
||||
- 重点调:
|
||||
- 前刺距离
|
||||
- 命中半径
|
||||
- 冷却
|
||||
|
||||
2. 大剑 / 半月斩
|
||||
- 基于 `WeaponSlash`
|
||||
- 重点调:
|
||||
- `SectorAngle`
|
||||
- 攻击范围
|
||||
- 动画时长
|
||||
- 基于 `WeaponSlash`
|
||||
- 重点调:
|
||||
- `SectorAngle`
|
||||
- 攻击范围
|
||||
- 动画时长
|
||||
|
||||
3. 战锤 / 震地锤
|
||||
- 基于 `WeaponLightning` 或 `WeaponKnife`
|
||||
- 重点调:
|
||||
- 落点半径
|
||||
- 前摇
|
||||
- 低频高伤
|
||||
- 基于 `WeaponLightning` 或 `WeaponKnife`
|
||||
- 重点调:
|
||||
- 落点半径
|
||||
- 前摇
|
||||
- 低频高伤
|
||||
|
||||
4. 霰弹枪
|
||||
- 基于参数化后的 `WeaponHandgun`
|
||||
- 重点调:
|
||||
- 散射
|
||||
- 多 pellet
|
||||
- 近距离爆发
|
||||
- 基于参数化后的 `WeaponHandgun`
|
||||
- 重点调:
|
||||
- 散射
|
||||
- 多 pellet
|
||||
- 近距离爆发
|
||||
|
||||
5. 狙击枪
|
||||
- 基于参数化后的 `WeaponHandgun`
|
||||
- 重点调:
|
||||
- 单发高伤
|
||||
- 超远射程
|
||||
- 慢冷却
|
||||
- 基于参数化后的 `WeaponHandgun`
|
||||
- 重点调:
|
||||
- 单发高伤
|
||||
- 超远射程
|
||||
- 慢冷却
|
||||
|
||||
6. 陨石杖 / 圣光柱
|
||||
- 基于 `WeaponLightning`
|
||||
- 重点调:
|
||||
- `HoverHeight`
|
||||
- 爆炸半径
|
||||
- 冷却
|
||||
- 基于 `WeaponLightning`
|
||||
- 重点调:
|
||||
- `HoverHeight`
|
||||
- 爆炸半径
|
||||
- 冷却
|
||||
|
||||
### P3: 中成本扩展
|
||||
|
||||
1. 链式闪电
|
||||
- 在首目标命中后,继续寻找附近目标
|
||||
- 需要新增:
|
||||
- 连锁次数
|
||||
- 连锁半径
|
||||
- 每跳衰减
|
||||
- 在首目标命中后,继续寻找附近目标
|
||||
- 需要新增:
|
||||
- 连锁次数
|
||||
- 连锁半径
|
||||
- 每跳衰减
|
||||
|
||||
2. 穿透弹 / 火球
|
||||
- 复用现有 projectile/simulation 基础
|
||||
- 需要明确:
|
||||
- 穿透次数
|
||||
- 命中后是否爆炸
|
||||
- 复用现有 projectile/simulation 基础
|
||||
- 需要明确:
|
||||
- 穿透次数
|
||||
- 命中后是否爆炸
|
||||
|
||||
3. 地雷 / 陷阱
|
||||
- 本质是延时触发 area hit
|
||||
- 需要新增:
|
||||
- 布置后触发时机
|
||||
- 持续时间
|
||||
- 触发半径
|
||||
- 本质是延时触发 area hit
|
||||
- 需要新增:
|
||||
- 布置后触发时机
|
||||
- 持续时间
|
||||
- 触发半径
|
||||
|
||||
4. 回旋镖
|
||||
- 需要双阶段投射物状态
|
||||
- 成本高于普通枪械/范围武器
|
||||
- 需要双阶段投射物状态
|
||||
- 成本高于普通枪械/范围武器
|
||||
|
||||
### P4: 暂缓项
|
||||
|
||||
@@ -439,29 +439,29 @@
|
||||
## 新武器接入步骤模板
|
||||
|
||||
1. 在 `Weapon.txt` 新增一行
|
||||
- 配好基础字段
|
||||
- `Params` 写 JSON 对象
|
||||
- 配好基础字段
|
||||
- `Params` 写 JSON 对象
|
||||
|
||||
2. 新增 `WeaponType`
|
||||
- 在 `Assets/GameMain/Scripts/Definition/Enum/WeaponType.cs`
|
||||
- 在 `Assets/GameMain/Scripts/Definition/Enum/WeaponType.cs`
|
||||
|
||||
3. 新增武器数据子类
|
||||
- 新建 `WeaponXXXData`
|
||||
- 新建 `WeaponXXXParamsData`
|
||||
- 在构造里调用 `ParseParams<TParams>()`
|
||||
- 新建 `WeaponXXXData`
|
||||
- 新建 `WeaponXXXParamsData`
|
||||
- 在构造里调用 `ParseParams<TParams>()`
|
||||
|
||||
4. 新增武器逻辑类
|
||||
- 继承 `WeaponBase`
|
||||
- 接入状态机
|
||||
- 读取 `ParamsData`
|
||||
- 继承 `WeaponBase`
|
||||
- 接入状态机
|
||||
- 读取 `ParamsData`
|
||||
|
||||
5. 接入生成入口
|
||||
- 玩家初始武器
|
||||
- 商店购买武器
|
||||
- 其他掉落/奖励入口
|
||||
- 玩家初始武器
|
||||
- 商店购买武器
|
||||
- 其他掉落/奖励入口
|
||||
|
||||
6. 验证点
|
||||
- 武器生成正确
|
||||
- 参数生效正确
|
||||
- 描述文本正确
|
||||
- Simulation 模式和非 Simulation 模式都能命中
|
||||
- 武器生成正确
|
||||
- 参数生效正确
|
||||
- 描述文本正确
|
||||
- Simulation 模式和非 Simulation 模式都能命中
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
## 路线收敛说明
|
||||
- `SimulationWorld.Tick(...)` 已收敛为战斗内唯一仿真执行入口。
|
||||
- `UseSimulationMovement` 不再承担运行时双路径路由职责,不应再作为回滚到旧 `MovementComponent` 路径的开关理解。
|
||||
- 旧的 `UseSimulationMovement` 兼容属性已删除;运行时不再暴露“是否启用 SimulationWorld 移动”的壳层开关。
|
||||
- 敌人、投射物与目标查询的运行时行为统一以 `SimulationWorld` 主容器和 Burst Job 管线为准。
|
||||
- 验证建议:聚焦单一路径下的敌人移动、投射物生命周期、最近敌查询和 area hit 结果,而不是做旧路径 A/B 对照。
|
||||
|
||||
@@ -50,3 +50,4 @@
|
||||
- Job/Burst 第一优先级:`MoveSeperation` 阶段并行化。
|
||||
- 保持阶段边界不变:继续维持四阶段管线与 `ProfilerMarker`,避免失去对比口径。
|
||||
- 保持生命周期/索引规则不变:`EntitySync` 与 swap-back/remap 继续作为硬约束。
|
||||
|
||||
|
||||
+4
-3
@@ -40,7 +40,7 @@
|
||||
- [x] Checkpoint 3:建立 Simulation 主更新入口并接入 Battle 状态
|
||||
- 在 `GameStateBattle.OnUpdate` 中增加 `SimulationWorld.Tick(...)` 调用。
|
||||
- 先只接“敌人移动/追踪”系统,其他逻辑保持原路径。
|
||||
- 路线已收敛:不再维护 `UseSimulationMovement` 作为运行时 A/B 与回滚开关。
|
||||
- 路线已收敛:`UseSimulationMovement` 兼容属性已移除,运行时不再保留 A/B 与回滚开关壳层。
|
||||
- 完成标准:`SimulationWorld.Tick(...)` 成为唯一执行入口,敌人仍能正常追踪玩家。
|
||||
|
||||
- [x] Checkpoint 4:迁移敌人核心移动逻辑到 Simulation(去 MonoBehaviour 核心逻辑)
|
||||
@@ -72,13 +72,13 @@
|
||||
## 2.5 P1.5 Simulation 收尾(P2 前置)
|
||||
- [x] Checkpoint 1:清理 `TickEnemies` 侧 GC(优先级最高)
|
||||
- 目标:将 `TickEnemies GC` 从当前 `27~108 KB` 降到 `< 5 KB / frame`。
|
||||
- 重点文件:`Assets/GameMain/Scripts/Utility/EnemySeperator/GridBucketEnemySeparationSolver.cs`。
|
||||
- 历史热点已收口到 `SimulationWorld` 内部敌人分离管线,不再维护独立 legacy solver 文件。
|
||||
- 处理方式:桶容器与临时列表复用(包含 bucket list 复用池),避免每帧重建集合。
|
||||
- 完成标准:`2k` 敌人压测下 `TickEnemies GC` 稳定 `< 5 KB / frame`。
|
||||
|
||||
- [x] Checkpoint 2:解耦 Simulation 核心与 `Transform` 运行时依赖
|
||||
- 目标:`SimulationWorld.TickEnemies` 不直接读取或写入 `Transform`。
|
||||
- 重点文件:`Assets/GameMain/Scripts/Simulation/SimulationWorld.cs`、`Assets/GameMain/Scripts/Utility/EnemySeperator/IEnemySeparationSolver.cs`、`Assets/GameMain/Scripts/Utility/EnemySeperator/EnemySeparationSolverProvider.cs`。
|
||||
- 当前重点文件:`Assets/GameMain/Scripts/Simulation/SimulationWorld.cs` 及其敌人分离/数据通道实现;legacy provider/interface 已删除。
|
||||
- 处理方式:互斥求解输入改为纯数据(位置/半径/索引),`Transform` 仅在 Presentation 阶段回写。
|
||||
- 完成标准:`TickEnemies` 热路径中不出现 `Transform` 访问。
|
||||
|
||||
@@ -241,3 +241,4 @@
|
||||
## 测试命令
|
||||
- PlayMode: `& "C:\UnityProjects\Unity Editor\2022.3.62f3c1\Editor\Unity.exe" -batchmode -nographics -projectPath . -runTests -testPlatform PlayMode -testResults Logs/playmode-test-results.xml -logFile Logs/playmode-tests.log`
|
||||
- EditMode: `& "C:\UnityProjects\Unity Editor\2022.3.62f3c1\Editor\Unity.exe" -batchmode -nographics -projectPath . -runTests -testPlatform EditMode -testResults Logs/editmode-test-results.xml -logFile Logs/editmode-tests.log`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user