画路、命名与地点

问道的地图不是扫描出来的,是你自己画的:路网是导航的骨架,等级决定这条路值多少速度, 名字决定播报里怎么称呼它,地点决定你能把哪里设成目的地。这一页讲的就是怎么把这三样东西放下去。

进入编辑模式

在世界地图上按 R 切换编辑模式。打开后,屏幕左下角显示当前绘制状态与路网统计 (当前道路层、本段长度、总长、节点数、道路数),右下角竖排列出全部快捷键 (包括 - / + 道路层)——不需要记住这一页。

除 Ctrl + 左键在地图上选目的地之外,所有编辑操作都必须先按 R: 绘制、Shift 选中、命名、改层、放地点、改等级、删除、撤销重做,都在这道门后面。 这样在世界地图上随手点一下不会把路画歪。

编辑模式也跟着地图走:世界地图被任何非编辑面板的界面替换时(回世界、聊天、别的模组界面), 它会自己结束,不必先按一次 R 退出。编辑器自己打开的命名面板、线路配置、 地图存档不算——从它们返回来还是那张地图,编辑模式照旧。

编辑模式只对世界地图生效,而且完全在客户端:路画在你自己的地图上,服务器与其它玩家都看不到。

画一条路

操作 作用
左键 落一个点。连续落点就是在画一条折线。
Alt + 左键 自由放置:落在光标真正指的位置,不吸附到附近的路或节点。
右键 结束当前折线。手上没有正在画的线时,按住右键拖动就是平移地图 (走的是 Xaero 自己的平移,手感与平时一样);右键单击不拖照旧清除选中。

一条折线就是一条路:中间的点是它的节点,点与点之间是它的路段。带弯的路是多个路段共用一个名字, 所以后面关于「名字」和「选整条路」的规则,说的都是整条折线而不是其中一段。

地图上看到的那条线,和数据里的顶点是两件事:画出来的线是平滑曲线(0.2.2 起)。 每个路段另带一份只用于显示的折线,先把一格一格的台阶按 0.9 格容差抽稀成斜线, 再对折角按固定 1.25 格半径做圆弧倒角,首尾仍然钉在道路两端。 它只影响显示:寻路、测距、选中与存档里都是你落下的那些整数顶点,一格没动。 道路文件里多一个可选的 curve 字段,写了才出现,旧存档照常读。

六个等级

按 < 与 > 循环切换当前等级(在绝大多数键盘上就是逗号与句号键; [ 与 ] 被 Xaero 自己的地图快捷键占着)。等级决定了画出来的颜色与线宽:

等级 颜色 宽度 谁走得了
高速 highway #3FA9F5 7 格 步行、驾车
公路 road #3FD07A 5 格 步行、驾车
小路 path #C8A24A 3 格 步行
铁路 rail #FFA028 4 格 公共交通
水路 water #2F6FE0 6 格 公共交通
冰道 ice #9FE4FF 5 格 步行、公共交通

宽度不只是好看:它决定这条路在地图上画多粗。但偏航容差不是按宽度算的—— 它量的是「画笔那条中线多远还算在路上」,而那条线是画在路中间的一条折线, 所以容差按等级单独配置(on_road_tolerance_blocks, 默认 高速 24 / 公路 16 / 小路 8 / 铁路 16 / 水路 32 / 冰道 12), 详见 导航与 HUD 与 配置。

道路层:高架与地下

地图是平面俯视图,画不出「谁在谁上面」,所以每一段路另有一个层。 按 N 打开的面板标题是「道路:名称与层」:名称下面就是层数, 范围 -32 ~ +32,默认 0。0 是地表, 正数依次是「高架 1 层」「高架 2 层」……,负数依次是「地下 1 层」「地下 2 层」…… 面板里会实时写出你填的是哪一层。

不想开面板时,编辑模式下直接按 - 与 + 加减正在画的层 (= 键与小键盘的 - + 同样有效,层数在 -32 ~ +32 之间截住)。它只改「接下来画的路画在哪一层」,不动已经画好的东西——所以一整条隧道填一次就够; 这个层数本身是一个绘制模式,不写进存档,也不进撤销记录。 要改已有的路,仍然走 N 面板(Shift 点击选中那条路,或者把光标放在路上按 N),在那里名称与层一起改、一起撤销。当前层一直写在屏幕左下角那行读数里 (道路层:高架1层),按一下就能看见数字跟着变;右下角的快捷键列表里也多了一行 - / + 道路层。

层还决定谁压着谁:世界地图从低层往高层画,高架压在自己跨过去的地面路之上、 隧道在地面路之下,所以桥真的盖得住下面的路、隧道不会浮在地面上。同一层内的先后不变, 仍然是先画完所有描边再画填充——路口看起来才是一条路从另一条上跨过去, 而不是两笔互相盖掉一半。平面俯视图画不出高度,画序是唯一能表达上下的东西,这就是层存在的理由。

除了画序,层决定的另一件事是哪里能连、哪里不能连:

  • 有节点相连的路,无视层数,一律连通:在一个路口交汇就是交汇, 桥墩接着引桥就是接着。
  • 没有节点相连的路,只有同层才合并:两条路的端点差一两格时,同层会被当成同一个地点; 一层在地表、一层在高架时不会被合并,所以桥还是桥、隧道还是隧道。

想让只差一两格的两个端点算一个地点,就把它们画在同一个节点上(编辑器会吸附), 或者明确放在同一层——同层的近似端点会被当作一个地点,一层在高架就不会。

吸附、拆分与选择

落点时,光标附近有已有的节点或路段就会自动吸附过去,并把吸附目标画成醒目的圆环。 落在一条路段的中间不是「叠一个点上去」,而是真正把那条路段拆开, 在交点处建立一个节点——两条路因此在拓扑上真的相接,而不是看着相交。

用 Alt 落点可以关掉吸附,把点放在光标真正指的位置:修一条紧贴着另一条路的路, 或者在一个密集的路口里想精确落点时会用到。

光标附近没有手画道路时,吸附会落到自动识别的铁轨上(黄色吸附环),阡陌交通自动生成的路与结构也一样。此时它只取位置: 不会拆分、也不会连接它们——那段几何属于 Create、MTR 或阡陌交通,不属于编辑器(见 阡陌交通)。

选择与拖动

Shift + 点击的位置 结果
一个节点 抓住这个节点,可以直接拖动它,整条路跟着变形。
一个路段 选中它所在的整条路(带弯的路是若干路段首尾相接的一条链,不分支的节点不算路口), 可以改名、改等级、改层、标单行或删除它——不必重画。
自动识别的铁路上 选中整条铁路线(高亮),命名时整条线共用一个名字。

选择是后面所有操作的入口:命名、改等级、改层、标单行、删除,优先作用于选中的东西。 选中一条路之后,左下角的读数是四项: 「已选道路:公路 · 双向 · 道路层:高架1层 · 全长 320 格」—— 层是平面地图看不出来的那一半(桥还是隧道),全长是整条路加起来 (也就是地图上高亮的那一整条),不是光标底下那一段。

命名与改层

按 N 打开编辑面板,优先作用于选中项,没有选中时作用于光标所在处。编辑的对象可以是 整条道路、一个地点,也可以是整条自动识别的铁路线;界面标题会分别显示为「道路:名称与层」 「地点名称」与「铁路线名称(机械动力自动识别)」。

道路那一栏把名称与层放在同一处编辑:同一次确认、同一步撤销。填的层数不合法 (不是数字或超出 -32 ~ +32)时面板不会关闭,而是把原因写在下面,改一下就行。 层的作用见上面的 道路层。

  • 一条路一个名字:折线的所有转折段共用同一个名字(数据里只有一个), 改名、改层都作用在整条路上。
  • 字号不超过路宽:线上的名字按这条路画出来的宽度缩放——宽路字大、窄路字小, 名字永远落在路面里。路太细时(缩小的远景、小路、铁路)先不写名字,放大到够宽才出现。
  • 长路会有好几个名字:一段路很长时,沿路每隔约 190 像素 再写一个 (每段最多 8 个),而且只写在屏幕上看得见的那些段里;可见段比名字还短时,这一段不写。
  • 名字互相不重叠:地点名、铁路名、道路名在同一张「已占位置」表上按这个顺序排队, 排不下就不画——所以两个地点挨得近时只会显示一个,放大到名字框分开才都显示出来。
  • 名字顺着线写:道路名按路的走向旋转,读起来像是这条路自己的标签; 地点与车站名保持水平,因为它们是点标签而不是线上的名字。

单行道

按 O 把选中(或光标所在)的那条路设成单行道。和 N 一样, 优先作用于选中的路;连续按会在三种状态里循环:

状态 含义 地图上
双向 默认状态,两个方向都能走。 没有箭头。
单行道(顺向) 只能顺着这条路被画出来的方向走。 沿路画出箭头,指向允许通行的方向。
单行道(逆向) 只能逆着画的方向走。 箭头整体反了个方向。
  • 按整条路生效:作用范围是同等级、中间不被路口打断的一整段路,而不是光标下那一小截。 一条弯了两个弯的街,只把其中一段设成单行不是任何人会做的事。
  • 弯道两侧方向一致:一条路的两个半截可能是从相反方向画出来的(画完一半再从另一头接着画), 所以标记单行时会沿着整条路重新定向每一段,而不是把同一个值写上去——否则弯道两侧会各走一个方向。
  • 所有交通方式都遵守,步行也一样。一条街之所以是单行,是因为它是什么(窄巷、站台出口、单车道桥), 本模组没有信息去判断它属于哪一种,所以「行人可以不管」这种规则是替玩家发明的。 想让行人不受限,就在旁边画一条小路。
  • 箭头是屏幕尺寸的:间隔与大小都按屏幕像素算,所以放大地图时箭头不会变成一串挤在一起的点; 缩得太远(整片区域都在屏幕上时)箭头会收起,路本身照画——那时你在看的是路网的形状,不是在读某一条街。
  • 规划会遵守它:反向的路线会改走别的路,真的没有别的路时如实报「没有路线」。 公共交通的线路如果站序和单行方向相反,线路配置界面里那一站会标红——详见 公共交通线路。

为什么是「方向」而不是一个开关:一个开关只能表达「单行」,表达不了「朝哪边单行」, 而一条路在文件里是从哪头开始存的,取决于你先点的是哪一端——那是画的时候的偶然, 不该成为你意图的一部分。所以这里存的是方向,按一下换个方向,地图上的箭头会立刻告诉你结果。

地点(POI)

按 P 在光标处放一个地点,随后可以在编辑界面里改名字与类型。四种类型:

类型 用途 限制
地点 place 默认类型,任何值得记一笔的地方。 无
资源点 resource 矿点、林地一类值得远远跑一趟的地方。 无
商店 shop 村民交易点、集市。 无
站点 station 公共交通的上下车点,可以在线路配置里按顺序串起来。 必须建在道路上(或道路端点),否则会提示「站点必须建在道路上(或道路端点)」。

「必须建在路上」是站点唯一的硬性要求,因为公共交通的接驳是从路网算出来的:一个悬在路外的站点, 规划器没法把你从路上送过去。其余三种类型只影响地图显示与缩放取舍(见 地图显示与缩放),不影响导航。

每个地点在地图上都是一个黄色方块,与编辑模式下画地点用的手柄是同一套画法; 光标悬停会显示「名称(坐标)」。

地点名默认写在标记下方;那个位置被占就依次试上方、右方、左方和四个斜角, 都不行才退一步。地点名与地点标记来自同一份目的地列表(自己标的地点、 机械动力车站、MTR 车站),所以 MTR 的站名也会一起画出来;字号按类型分, 资源点最小、商店最大。裁剪与缩放的细节见 地图显示与缩放。

删除、撤销与修路

删除按 Del 或 Backspace,撤销 Ctrl + Z、 重做 Ctrl + Y,最多 64 步。这些同样都要求先按 R 进入编辑模式。

删除删的是整条路,而不是光标底下那一段(0.2.1 起)。带弯的路在数据里是若干路段 在「直通节点」处首尾相接,所以选中它时选中的是整条链:地图高亮的也是整条, 改名、改等级、改层、标单行这些操作一直作用在整条链上,只有删除曾经是个例外——它只删掉光标所在的那一截, 于是一条弯了两个弯的街要按三次删除键才删得掉。现在删除和别的操作问同一个问题:「这条链是什么」, 然后整条链一起删;节点照旧按节点删,落在它上面的路段跟着走。

还有一个看不见但很重要的开关:repair_road_joins(默认开)。 手画的路常常「看着连上、其实没连上」——两条路交叉而过却没有交点,或者两条路的端点差了一格。 路由器不会从一条路走到另一条路上去,于是明明看着是十字路口却报「没有路线」。 打开这个开关后,规划前会先把路网修一遍:

  • 落在路段上的节点会拆开那条路段,在交点处建立路口;
  • 两条交叉的路互相打断,各自在交点处分段;
  • 几乎重合的两个节点(差一两格)并成同一个路口。

合并是有条件的:只把「同一辆车能同时走这两条路」的路并起来,而且高度要大致相同, 所以桥还是桥、立交还是立交,不会被压到地面上连成一片。想完全按你画的样子走, 把这个开关关掉即可,规则与默认值见 配置与数据文件。