SepComet
|
ccbd27e87e
|
Checkpoint 9
|
2026-03-16 22:19:57 +08:00 |
SepComet
|
76094b711b
|
fix 2
1. MaxTargets 现在严格生效(包含玩家候选)
- 玩家先被加入候选后,会计入 selectedCount,达到上限后不再继续查敌人桶。
2. UseSimulationMovement/UseJobSimulation 战斗中不生效
- 在 SimulationWorld 的 setter 中增加 Battle 状态保护:战斗中调用会被忽略并打 warning。
- 在 ProcedureGame 暴露当前状态类型,供 SimulationWorld 判断。
3. AOE 结算不再依赖结算时刻的 Weapon.IsAttacking
- 在 AOE query 入队时快照 source 活跃状态(武器用 IsAttacking)。
- Query 数据结构增加 SourceWasActiveAtQueryTime。
- 结算时使用该快照判定,并通过 AIUtility.PerformCollision(..., ignoreRuntimeState: true) 避免被实时状态误伤。
|
2026-02-23 11:48:05 +08:00 |
SepComet
|
688fefe848
|
fix 1
1. 修复投射物闪避口径(使用 Value,与全局伤害逻辑一致)
- 将 SimulationWorld 内投射物伤害计算改为直接复用 AIUtility.CalcDamageHP(...)。
- 删除了 SimulationWorld 里那套重复且使用 dodgeStat.Percent 的私有计算函数,避免再次分叉。
2. 修复目标选择索引“重建过于激进”
- 去掉了 Job Tick 末尾的“每帧强制 MarkDirty + Build”。
- 改为在 Job 输出回写时,只有敌人 XZ 坐标发生变化才标记 dirty。
- 空间索引构建条件改为“仅 dirty 时重建”,不再因跨帧自动重建。
|
2026-02-23 11:21:35 +08:00 |
SepComet
|
1a45b513f2
|
Checkpoint 8
1. 统一调度收口为单点 Complete
2. 移除 Job 内部 Complete(),改为返回 JobHandle
3. 修复调度后 NativeList 安全冲突(关键)
- 将 PrepareEnemyJobOutputBuffer/PrepareProjectileJobOutputBuffer/PrepareEnemySeparationJobBuffers 前置到 BuildInput
- 互斥候选统计改为读取 _enemyJobInputs,不再在 Complete 前读取 _enemyJobOutputs
4. 新增 CP8 profiler markers
5. 新增回归用例(验证使用最新敌人移动结果构建碰撞候选)
|
2026-02-23 10:53:15 +08:00 |
SepComet
|
e6d722ee1d
|
Checkpoint 7
1. Job 通道数据结构改为 Unity.Mathematics 类型(float3/quaternion),并保留 Simulation 主数据结构不变。
2. 更新了通道边界转换函数:进入 Job 通道时转为数学类型,回写 Simulation 时转回 Vector3/Quaternion。
3. 敌人 Job 热路径去掉 Vector3/Quaternion 中间态,核心执行统一 math.* + float3/quaternion。
4. 投射物移动 Job 热路径同样统一为数学类型计算与输出。
5. 新增 Burst 开关 A/B 一致性回归测试(EditMode + PlayMode),并补了反射入口校验。
|
2026-02-23 10:29:47 +08:00 |
SepComet
|
f0abf78128
|
Checkpoint 5 & Checkpoint 6
|
2026-02-22 22:00:43 +08:00 |
SepComet
|
5fb7ea499f
|
Checkpoint 3 fix
修复将互斥算法由同步转成异步产生的抖动问题
|
2026-02-22 14:11:53 +08:00 |
SepComet
|
34b1424bb6
|
Checkpoint 2 & Checkpoint 3
Checkpoint 2:Simulation 与 Job 数据通道打通
- 新增 Job 数据通道(Persistent NativeList)与 Simulation <-> NativeContainer 拷贝/回写流程
- 在生命周期接入通道管理(初始化、清空、集中释放)并接入 UseJobSimulation 分支
- 增强通道健壮性:失效容器自动重建,避免 EditMode 下 ObjectDisposedException
- 增加 UseJobSimulation 分支回归用例(EditMode/PlayMode 各 1 条)
Checkpoint 3:敌人移动与朝向 Job 化
- UseJobSimulation 分支正式切到 Job 路径
- 新增敌人移动/朝向 Job 实现(IJobParallelFor):
- Burst 版本 + 非 Burst 版本(受 UseBurstJobs 开关控制)
- Job 计算移动、朝向、状态;主线程补做分离避让回补
- 扩展数据通道能力(为 Job 输出缓冲和投射物输出同步提供接口)
- 补充分支回归测试(开启 UseJobSimulation 后验证追踪与朝向)
|
2026-02-22 10:47:42 +08:00 |
SepComet
|
76ed9a3e53
|
Checkpoint 1:依赖锁定与运行开关落地
- 在 `SimulationWorld` 里添加 P2 运行开关 `UseJobSimulation` 与 `UseBurstJobs`
- 添加依赖包:
1. burst: 1.8.28
2. collections: 2.5.7
3. Mathematics: 1.3.2
4. jobs(不单独成包)
- 运行测试,均通过
|
2026-02-22 10:12:26 +08:00 |
SepComet
|
d55ead69a0
|
- Checkpoint 1:清理 `TickEnemies` 侧 GC
- Checkpoint 2:解耦 Simulation 核心与 `Transform` 运行时依赖
- Checkpoint 3:收口 `EntitySync` 职责边界
- Checkpoint 4:拆分 Simulation Tick 阶段
- Checkpoint 5:补最小回归测试
- Checkpoint 6:补充 P1.5 结项文档
|
2026-02-21 13:39:14 +08:00 |
SepComet
|
200277a703
|
- 修复 EntityBinding.cs 的字典不一致问题
|
2026-02-20 22:19:25 +08:00 |
SepComet
|
dedd07e187
|
Checkpoint 7 测试结论:
- TickEnemies 有明显 GC 增长,主要来自桶结构每帧重建
- Simulation 内核仍直接依赖 Transform(不是纯数据更新)
- 引入 P1.5 来解决上述问题,避免 P2 进行 Job 替换时返工
|
2026-02-20 21:27:53 +08:00 |
SepComet
|
31fe7a4d61
|
Checkpoint 5 & Checkpoint 6:
- SimulationWorld 只做逻辑计算与数据输出,不再直接写 Transform
- 在 ShowEntitySuccess 中接入 Pickup/Projectile 占位注册:
- Drop 走 UpsertPickup(...)
- Bullet/Projectile 走 UpsertProjectile(...)
- 在 HideEntityComplete 中接入对应回收:
- Drop 走 RemovePickupByEntityId(...)
- Bullet/Projectile 走 RemoveProjectileByEntityId(...)
- 新增占位数据构造:
- CreatePickupSimData(...)
- CreateProjectileSimData(...)
- 调整 EnemyManagerComponent 职责,现在只管“敌人相关”:
- 敌人刷怪节奏
- 敌人列表缓存与计数
- 玩家引用与 enemy.SetTarget(...)
- 新增嵌套类 SimulationWorld.Presentation,专门消费 EnemySimData 并回写 position/rotation
- 新增嵌套类 SimulationWorld.EntitySync 负责“Simulation 同步”:
- 监听 ShowEntitySuccess/HideEntityComplete
- 同步 Enemy/Drop/Projectile 到 SimulationWorld
- 敌人 SimData 构建、Pickup/Projectile 占位数据构建
|
2026-02-20 20:41:22 +08:00 |
SepComet
|
6494ebc5fd
|
Checkpoint 3 & Checkpoint 4:
- GameStateBattle 接入 Simulation 主更新入口
- SimulationWorld 增加开关 UseSimulationMovement(默认 false)
- SimulationWorld.Tick(...) 现在在开关开启时执行敌人追踪/移动模拟,基本还原 MovementComponent 功能(敌人互斥)
- 调整 IEnemySeparationSolver 系列方法,不再依赖 MovementComponent
|
2026-02-20 19:54:44 +08:00 |
SepComet
|
83f8a356f7
|
Checkpoint 2:
- 调整 SimulationWorld 作为 GameFrameworkComponent 组件
- ProcedureGame 接入 SimulationWorld 生命周期(创建/清理)并在敌人 Show/Hide 时同步注册/反注册
- 增加 EnemySimData 构建与缓存去重移除,避免重复注册和悬空映射
- SimulationWorld 增加 UpsertEnemy/UpsertProjectile/UpsertPickup,支持幂等注册
|
2026-02-20 18:47:00 +08:00 |
SepComet
|
3b8e0731f0
|
Checkpoint 1:
- 新增三类 SimData:
- EnemySimData
- ProjectileSimData
- PickupSimData
- 新增 Tick 上下文:SimulationTickContext
- 新增双向索引绑定:EntityBinding
- 新增纯数据容器世界:SimulationWorld
|
2026-02-20 18:27:14 +08:00 |