刷特位置选择可视化
对应 2026-08 工作区(inf_nav_team_nearest 1):扩展做一次多源反向 Dijkstra,每个 Nav 区域记录「到最近可用生还者的路径距离 + 归属 owner」;插件按 10 个固定距离层由近到远搜索,层内按 Flow 从前到后消费。灰墙 = 不可走区域,可以直观看到“路径距离 ≠ 直线距离”。生还者可以直接拖动;拖动后按当前状态重算距离场。
2D 模式:左键直接抓取生还者拖动,空白处拖动即平移视野,滚轮以光标为中心缩放,双击复位;「画墙 / 擦墙」选中后按住拖动绘制(仅内置网格)。
3D 模式:左键拖动旋转(带平滑),右键或 Shift+左键平移,滚轮向光标方向缩放,双击复位视角;生还者请回 2D 摆位,悬停仍有高亮。
图模式 2D:左键拖动生还者会吸附到最近 Nav 区域中心,空白处拖动平移;「封锁区域」可点击/拖扫切换动态阻挡(模拟电梯/门/nav_block),封锁的区域从距离场与候选中剔除。
图模式可见性:加载几何数据后对 BSP 三角做真实射线检测(world+disp 全部三角参与遮挡,含地板/天花板;隐形墙不遮挡视线;直线距离 ≤1800 才检测);未加载几何时回退「直线 ≤1500、|Δz| ≤120、绕路比 ≤1.6」启发式。导出数据只含地面连接(无梯子边)。真实地图数据在服务器上用 sm_navgraph_export 命令导出后,通过「导入地图 JSON」加载。
三方图无需服务器:把 .vpk / .zip / 裸 .bsp+.nav 拖进画面或点「解析本地图」。浏览器本地解析,文件不上传;不支持 .7z/.rar(请先解压出 vpk)。解析结果是地图文件预置集:没有 Anne stripper 的 blocker、没有 director 回合物品,flow 是自算近似。官图或需要运行时真相时,继续用下拉框 / 「导入地图 JSON」加载 sm_navgraph_export 导出。
生还者状态(点击开关,可拖动位置)
本次搜索状态
场景存档(浏览器本地)
搜索日志(对应 [FIND]/[SpawnPerf] 口径)
一次普通刷特尝试的完整流程(team-nearest 分支)
本页与真实实现的对应关系 / 简化说明
| 真实实现 | 本页演示 |
|---|---|
| AnneSpawn_NavCandidatesPrepareTeam / CollectTeam(多源 Dijkstra,owner=实现最短路的生还者,平距取小编号) | 网格 8 向 Dijkstra,逐格记录 dist+owner,平距取小编号;1 格 = 50u |
| TEAM_NAV_LAYER_EDGES 10 层 ∩ 职业 [classMin, min(finalMax, inf_SpawnDistanceMax×2)],半开区间、末层闭区间 | 完全一致(按所选职业裁剪,空层跳过) |
| 层内 flowOrder:Flow 降序(前方优先),team 模式不做三分位交错、不洗牌 | 一致(Flow=横向进度) |
| 距任意生还者直线 <max(250, inf_SpawnDistanceMin) 排除;可见性 trace;卡壳;路径复核 | 排除圈 + 网格视线(Bresenham 过墙判定);卡壳/路径复核省略 |
| inf_score_behind_reject_gap 8 / _hjc 4;owner 进度≥90 只扣分不硬拒 | 一致 |
| SpawnScore_BuildCandidate 多因子评分 + 12 个候选预算选优 | 前方奖励 − 后方梯度 − 距离偏离 − 核密度;硬分散 100u 硬拒;预算 12 选优 |
| SI_Target_limit: limit=(上限/可动人数)+1,队首×2(仅刷特容量口径) | 一致;每刷 1 只 owner 计数 +1,达限后退出参与集合并重算距离场 |
| 层耗尽 → Director Range(DIRECTOR_FALLBACK_MAX_TEAM_DISTANCE=2000 直线)兜底 | 提示性标注(随机可行远点) |
| 核密度(贴脸不计、核半径随上限收缩) / 硬分散(固定 100u) / Nav 冷却 / 传送监督 | 冷却、硬分散 100u、核密度(半径随上限收缩)已做;传送监督省略 |
| 真实地图 Nav 图(sm_navgraph_export 导出:区域中心/角点/flow/属性位/有向边) | 图模式:同一状态机跑在导入的邻接表上;加载几何数据后可见性为真实三角射线检测(与引擎 trace 仍有细微差异:无动态 prop、无玻璃材质语义),无几何时回退启发式(直线 ≤1500、|Δz| ≤120、绕路比 ≤1.6);无梯子边,IsValidFlags 的终局分支未复刻 |
| blocked 快照由扩展逐帧从引擎实时读取(电梯/门/nav_block 等动态阻挡) | 图模式「封锁区域」手动标记,Dijkstra 与候选收集直接跳过被封锁节点 |
| 物品/阻挡实体层为地图加载后的运行时快照(天然含 stripper 增删改);Director 回合开始可能按物品密度删减部分预置点 | 可视化按快照原样渲染物品图标与阻挡盒,不模拟 Director 的删减,仅 v2 导出数据可用 |