上手指南

CSUR 是一套为游戏《都市:天际线》开发的道路建设系统。和游戏自带的道路系统相比,CSUR 能帮助玩家更高效地在游戏中建造逼真的道路设施和庞大的交通网络。

CSUR 的核心概念

原版游戏:按路修建

在都市天际线原版游戏里,城市路网的修建是以“路”为单位的。这意味着你在建造城市时使用的每个道路组件都代表“一整条路”。我们来看下面的简单例子。在下图中,一条4车道的高速路分叉为两条2车道的高速路。由于原版的道路组件以路为单位,这个匝道的左分叉和右分叉都是2车道高速路,所以这两个分叉接出的路完全相同。也就是说,原版游戏对于一个匝道是无法区分左分叉和右分叉的。

fig1

都市天际线原版游戏按路修建的体系因此也带来了一些明显的问题,使得修建非常逼真的道路设施需要花费大量的额外人工。游戏无法区分一个匝道的左右叉,这意味着游戏也不能自动作出匝道分叉所对应的道路标线。比如4车道分出1车道可以有左出口和右出口两组,然而游戏无法分辨是左出口还是右出口,自然也不能画出标线。另外一个例子是同一条路上车道数量的增减。现实世界中,一条3车道的路拓宽到4车道,往往会从最左边或者最右边增加一个车道,同时3车道的路和4车道的路对应地根据右侧或者左侧对齐。而在原版游戏里,如果直接连接一条3车道和4车道的路,这两条路是居中对齐的。所以在原版的道路系统下,我们往往需要仔细地用 Move it 调整道路分支的位置和对齐,再手动画上每个接口的标线,才能得到非常真实的效果。这也是大部分都市天际线的造景玩家修路的主要方法。

CSUR:按道修建

和原版游戏的道路体系(包括工坊上的绝大部分道路资产)相比,CSUR采用一种完全不同的修路理念:按道修建。这意味着CSUR中每个道路组件代表的不是一整条路,而是一条路中的一组或者多组行车道。我们来看和原版高速相对应的例子。在下图中,一条CSUR的4车道高架路分为两条2车道的道路。由于CSUR的道路组件以车道为单位,由第1–4道组成的4车道道路会分叉成位于1–2车道的左分支和位于3(.5)–4(.5)车道(半个车道的宽度用于容纳道路护栏)的右分支。左右分支的两组车道位置不同,它们也就对应于两个不同的CSUR组件(2R和2R4P)。

fig1

因此,CSUR的每个接口组件确定了每条车道发生什么变化(如增减、分叉等),自然也就能预先画好标线,同时一步到位修出完美平滑的道路接口。和原版道路体系相比,CSUR无疑需要花一些时间来学习,然而对于追求精细景观的玩家来说,使用CSUR能够省去大量手动摆放标线的时间,同时也使得存到更难达到游戏的prop上限。

CSUR 模块和命名概要

由于上文提到的按道修建的概念,CSUR包含数量极其庞大的道路组件。比如在宽度不超过6车道的情况下1车道的组件就可以有6种。再加上各种可能出现的接口模块,我们在工坊发布的CSUR道路合集的资产总数多达近400个。为了迅速生产大量的道路模块,我们开发了一套基于Blender的道路建模软件,以及在游戏资产编辑器使用的道路自动导入MOD。如果你发现工坊发布的道路包里没有你所需要的模块,或者你想自己定制一套CSUR道路包,你只需下载CSUR建模软件和道路导入MOD,不需要任何3D建模或资产制作的技能,就可以在几分钟之内制作你所需要的定制道路。

CSUR的组件命名是高度规律的, 组件的名称可以唯一确定它所对应的道路连接方式,。这也使得根据需求搜索要用的CSUR模块变得十分简单。我们从CSUR对每条车道的位置编号开始,逐步介绍各种模块的命名方式。

车道

CSUR对车道标号的规律非常简单。从道路中心线开始,正好沿中心线居中对齐的车道为第0道,类比坐标系中的原点。紧贴着第0道右侧的车道就是第1道,再右侧就是第2道,依此类推。 fig1

同时我们也会使用编号带有0.5的车道。比如左边缘贴着道路中心线的一条车道,相对第0道向右偏移了半条车道,所以就是+0.5道。带有小数点的名称容易造成程序混淆,CSUR中”.5”用P来表示,即挨着中心线右边的车道是0P,向右为1P, 2P, 依此类推。 fig1

车道组

一条或多条连续位置的车道并排在一起,就形成了一组车道(block),或者叫一条行车线 (carriageway)。每组车道根据它的位置 (左,中,右) 和车道数量命名。比如4条车道构成一组,如果这4条车道相对道路中心线居中 (即-1.5, -0.5, 0.5, 1.5), 则称为4C。如果相对中心线向右偏移,那么用最右边的车道编号来命名这一组车道,若最右道是第5道则为4R5。反之,如果相对中心线向左偏移,就以最左边的车道标号,如4L5。目前的CSUR模块都是靠右行驶的,所以暂时没有左偏移的组件。根据这个规律,我们很容易就能从每组车道的编号知道它的位置。比如3R4就是3条车道向右至第4道。特别地,如果一组车道从第1条车道开始,它的编号就会省略R(L)之后的数字,比如2R2简写为2R,3R3简写为3R。 fig1

模块

一个CSUR模块由沿着行车方向首尾两端连接的车道组构成。CSUR的道路模块分为4种:

  1. 基本 (base) 模块:两端为完全相同的一组或多组车道。如 4R,6DR4。
  2. 平移 (shift) 模块:改变一组车道在路中的相对位置,即向左或者向右移动。如3R=3R4。
  3. 过渡 (transition) 模块:增加或减少一组车道中的车道数。如3R=4R。
  4. 匝道 (ramp) 模块:多组车道在首尾之间分流或合流。如4R=2R2R4P,3R3R6P=2R2R4P2R7

后三种模块也统称接口 (interface) 模块。CSUR的模块逻辑能保证任意连接首尾的车道组,得到的模块总属于这4种之一。模块的命名方式为 (首端车道组)=(尾端车道组)。由于基本模块首尾一样,省略等号和之后的部分。根据模块的命名,我们也很容易知道它连接的是哪些车道。比如3R3R6P=2R2R4P2R7是一个两组车道 3R 和 3R6P 分成三组车道 2R、2R4P 和 2R7 的匝道模块。

上文描述了单向模块的命名。双向模块的命名分对称和不对称两种情况。如果直接把一个模块双向对称处理,它的名称就是原来单向模块的车道数后加上 “D”,并把车道数乘以2。比如两条 3R 成为 6DR,两条5R6成为10DR6。如果模块恰好挨着道路中心线 (如1R0P,2R1P) ,对应的双向道路就不会有中央分隔带,相当于在居中的一组车道中间画了一条双黄线。比如2R1P对应的双向模块相当于画了黄线的4C,因此称为4DC。如果双向模块不对称,那么直接用 (左侧模块)–(右侧模块) 命名,如 3R4–4R, 2R3–4R3。

使用 CSUR 道路资产

每个 CSUR 资产的缩略图和文字描述里都指出了它的功能。同一个模块可能存在多个资产,分别对应不同的样式和使用场景 (如有无自行车道)。

与前期版本的关系

现版本的 CSUR 系统是 2018 年的老版 CSUR 和更早 2017年 CSUE 的继任者。相比这两个前期版本,新版 CSUR 包括了多项重大改进。由于前期版本 (2018版 CSUR 和 CSUE) 的道路资产是逐件手工制作的,它们的命名相对于新版 CSUR 没有那么标准化。不过前期版本仍然使用了统一的车道命名方式,找到对应的老版和新版模块相互转换或连接也很容易。下表给出了新版CSUR和前期版本车道编号的对应关系。n代表模块中车道的数量。

CSUR(2018), CSUE CSUR (2019)
nR4 nR2
nR5 nR3
nR5P nR3P
nR6 nR4P
nR7 nR5P
nR9 nR7

老版本CSUR的标准化模块名称对照表可参见这个链接,对用过老版CSUR/CSUE的玩家会比较有用。

兼容性

为了优化用户体验,CSUR 是完全独立于原版道路系统而设计的。这意味着你可以只用 CSUR 的道路建造你的城市,同时只用 CSUR 也是推荐的玩法。这也意味着我们即使尽量提高了 CSUR 的兼容性,也无法保证 CSUR 道路和任意一个不在 CSUR 标准或软件框架下制作的道路完全兼容。CSUR 在2019年10月发布的道路资产能够和原版游戏的小路,二车道路和四车道路连接,不会出现模型空洞的情况。如果把CSUR和原版高速公路连接,接口处会下沉到路面以下,使得车辆在经过接口的时候会浮在空中。

局限性

世上没有万金油。在用什么工具建造你梦想中的城市的问题上,也是这个道理。和原版路相比,CSUR以及按道修路的概念的确也有天生的不足之处,其主要原因是在游戏中不使用道路节点的副作用。比如用CSUR修建菱形立交会非常困难,甚至几乎不可能修建分叉式菱形立交。游戏机制限制车辆路径必须平行于道路区段,所以在匝道和平移模块中,车子没有办法精确沿着道路标线行驶。这个问题最坏情况下可以导致车辆直接穿模开到路外面。CSUR已知问题的不完整列表参见这个连接(施工中)。但是一般来说,如果你按照正确方法使用CSUR的话,完全不会出问题