节点导航图系统
< Zh
Jump to navigation
Jump to search
节点导航图(nodegraph)是地图中专用于辅助非玩家角色(NPC) 实时寻路的特殊组件。它由手动放置的"节点"和自动生成的连接线构成,在加载包含NPC的地图时会自动生成。
每个节点代表地图上一个NPC可移动的精确位置。游戏会自动在相邻节点间生成"连接线",NPC通过连接线在节点间移动(不一定沿直线移动,也不一定精确到达节点位置)。

编译生成
节点导航图会在加载地图时自动编译为AIN 文件(除非已存在校验码匹配的AIN文件),输出文件存储在<game>\maps\graphs
目录。编译时会向所有玩家显示"节点图已过期,正在重建..."提示。

.ain
文件时,游戏仍会判定文件过期并强制重建,导致所有玩家首次加载地图时看到重建提示。提示:可通过
ai_norebuildgraph
控制台参数禁用重建(建议写入autoexec.cfg )。但需注意这意味着.bsp
的改动不会自动更新.ain
,需手动同步节点图。
核心组件
节点类型
不同移动方式使用不同节点:
Hammer中的对应实体:
- 地面节点
- info_node
- info_node_hint
- 空中节点
- info_node_air
- info_node_air_hint
- 攀爬节点
- info_node_climb
连接类型
节点图编译时,AI系统会在间距<720单位的节点间生成直线连接,并计算各NPC碰撞体 可通过性(忽略动态物体如物理道具和门)。
连接类型包括:
- 地面连接:可步行/奔跑通过的节点间连接
- 跳跃连接:需跳跃通过的相邻地面节点连接
- 攀爬连接:攀爬节点间的垂直移动连接
- 空中连接:空中节点间的飞行路径连接
NPC可配置使用多种连接类型,例如 半衰期2的npc_fastzombie能同时使用地面、跳跃和攀爬连接。
连接控制实体:
构建指南
节点布局

节点图应粗略覆盖所有NPC可行走区域。基本原则:
- 每个障碍物转角放置节点
- 复杂区域需密集节点(支持战术动作如掩体利用)
- 开阔区域减少节点(如海滩场景促使NPC快速推进)
- 目标点需密集节点(避免NPC堆积)
实时编辑
主条目: map_edit
使用map_edit
工具可在游戏内第一人称视角快速放置节点(自动解决displacement 地形适配问题),支持高级功能如手动删除连接。
提示节点
主条目: Hint nodes
提示节点 为NPC提供环境信息:
- 保留普通节点的导航功能
- 仅在精确位置生效
- 关键类型包括:
- 蹲伏掩体提示
- 标记安全掩体位置(不被敌人直视时生效)
- 跳跃权限覆盖
- 允许本不能跳跃的NPC(如市民)执行跳跃动作
完整列表参见Hint nodes 专题。
调试验证
主条目: ai_show_connect
使用ai_show_connect
命令验证连接:
- 确保关键路径存在绿色连接线
- 注意不同NPC Hull 类型的通过性差异
- 修正方案:
- 在转角处添加中转节点 - 确保路径全程满足碰撞体尺寸 - 适当外移靠近墙壁的节点
高级控制
info_node_link可强制建立节点连接,典型应用场景:
- 电梯等移动平台NPC寻路
- 使用方法:
1. 放置起点/终点节点 2. 创建info_node_link实体 3. 输入两节点的NodeID
布局规范
门廊节点布局
- 主移动节点
- 确保门框直线通过性
- 略微前置避免NPC拥堵
- 侧翼节点
- 提供备用路径和掩体点
- 进出管制点
- 使用info_node_hint的"Entrance/Exit Pinch"类型
- 强制NPC单列通过(注意存在NPC误占位的BUG)
NPC寻路逻辑
NPC寻路流程: 1. 定位最近起点/终点节点 2. 验证路径连通性 3. 使用移动探针 检测实际可达性