[Parity][motion-input][S1][R] 本地寻路算法是自创的,和 1.13c 玩家路径(PATHTYPE_STRAIGHT)不同,导致预测路径与服务器分歧 #588
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
来源审计项:
motion-input#8— [S1][R] 8. 本地寻路算法是自创的,和 1.13c 玩家路径(PATHTYPE_STRAIGHT)不同,导致预测路径与服务器分歧src/client/motion/pathfind.ts:1-16(设计说明)、:59-73(8 方向 + octile 启发)、:168-218(findNearestWalkableLocal)、:220-244(拉绳平滑)、:306-461(findPathLocal::314maxExpanded 16384、:316nearestRadius 10、:317allowPartial、:325连起点也做"最近可走"修正、:357直视捷径、:438部分路径)const maxExpanded = options.maxExpandedNodes ?? 16384;const resolvedStart = findNearestWalkableLocal(grid, startX, startY, nearestRadius)PATHTYPE_STRAIGHT,nDistMax73,nIDAStarInitFScore70,nMoveTestCollisionMask = COLLIDE_MASK_PLAYER_PATH(V-src D2CommonPath.cpp:719-726;路径函数表见Path.cpp:104-123)。PATH_Straight_Compute(D2MOO 注释标为 1.13c D2Common 0x6FDB7AD0)先用PATH_Toward直线前进;只有受阻且起点到终点的距离平方 ≤ 18²(=324)时,才调用PATH_AStar_ComputePath绕行,否则保留直线结果(V-srcPathMisc.cpp:583-620)。AStar.cpp:436、IDAStar.cpp:369)。|Δ|>100 直接拒绝(Path.cpp:394-397)。目标被挡时用PATH_FindValidTargetCoordsByMovingOrthogonally沿坐标轴方向小范围修正(Path.cpp:545-577)。