

[ 系统概述 ]
传统的启发式搜索 (A*) 或 NavMesh 架构在海量单位并发时,极易遭遇 CPU 瓶颈与 GC 垃圾回收卡顿。ChronoPath 是一款决定性图路由引擎。它基于底层 C++ 核心构建,将寻路计算完全卸载至非托管的原生内存空间,完美绕过 Unity 主线程与托管堆的性能瓶颈。
[ 性能基准 ]
(在 28,249 节点、66,722 条边的真实路网上评估,测试 CPU 为 AMD Ryzen 5 7500F — 15 次冷启动中位数)
- 距离求值:中位数 0.433 μs / 次查询。
- 路径还原(节点序列):中位数 0.333 ms / 次查询。
- 动态状态同步:全局路网重构中位数约 800 ms。支持后台异步计算,完全不阻塞前台查询的执行。
- 系统吞吐量:12 线程并发下,中位数达 19,250,000 QPS。
- 内存执行:在标准的查询与路径还原循环中,严格保持 0-Byte GC 内存分配。
- 极限压测(10,000 单位):在 100×80 网格且包含动态封路区域的场景中,无锁 0-GC A* 基线耗时 14,002 ms;ChronoPath 仅需 91 ms(加速约 154 倍)。
[ 核心机制 ]
- 解耦架构:将距离成本计算与物理内存操作分离,完美兼容决定性帧同步 (Lockstep) 模拟。
- 异步状态替换:拓扑修改(如修改边权重)会触发后台索引重构。前台查询将不受干扰地继续执行;更新完成后,新状态会自动无缝替换生效。
- 高并发执行:底层原生状态支持并发读取。可与标准 C# Parallel.For 循环或 async Task 完美集成。
- 输入数据净化:自动清理异常数值。无效浮点数 (NaN) 或极端离群值会自动转换为物理断点,确保数学计算的绝对稳定。
[ 5步快速入门 ]
- 第 1 步 (初始化):在启动时调用一次 new ChronoPathAPI(...),将你的地图数据喂给引擎。
- 第 2 步 (转换 ID):查询前,调用 GetInternalId() 将你自定义的节点 ID 转换为引擎的内部 ID。
- 第 3 步 (查询):创建一个可复用的大数组(如 new uint[32768])传给 RetrievePath()。循环读取时务必使用 Math.Min(actualLen, array.Length),防止越界崩溃。
- 第 4 步 (动态封路):如果道路被封锁,调用 UpdateEdgeWeight(),然后把 RebuildAll() 扔进后台 Task.Run 中,路网即可无卡顿更新。
- 第 5 步 (清理释放):退出游戏时,等待后台重构任务结束 (.Wait()),然后务必调用 Dispose() 释放原生内存,防止内存泄漏。
[ 购买前必读 ]
- 目标平台:当前版本仅提供 Windows 64-bit (x86_64) 的预编译动态库 (DLL),支持 Editor 和 Standalone 模式。
- 硬件建议:标准 x86_64 CPU 架构。推荐支持 AVX2 指令集的处理器以获得峰值性能,但不作强制要求(老 CPU 会自动安全回退)。
- Unity Job System 限制:由于托管数组互操作的限制,本引擎的 API 不支持在 Unity Burst/Job System 内部调用。
- 特别注意:本包不包含跨平台库(安卓、iOS、macOS、Linux)。
[ 联系与商务合作 ]
如需跨平台编译支持、源代码授权、企业级定制开发或寻求工作机会/技术岗位,请联系:
isacbieber51@gmail.com
