【开发者日志02】交通AI——升级的交通模拟系统让市民的出行更有智慧!
大家好!《都市:天际线2》的又一期开发者日志来了。本期日志将专门介绍全新的升级版交通AI。前作的核心玩法之一,即是在持续发展的城市中管理交通,续作中,我们希望进一步优化该系统,以解决玩家多年来提出的种种意见与建议,并将城市打造得更真实、更生动。
一座活泼有生气的城市离不开市民和交通。人们在哪里居住,在哪里工作,空余时间又会去哪里?企业选址在哪里,如何生产商品?他们服务的是市民还是其他企业?客户如何找到他们?在更短距离内,还有其他、更好的购物去处么?以上只是影响城市中交通流动的部分因素。本篇日志涵盖的内容不仅限于此。
本篇开发者日志中,我们将谈谈游戏如何模拟交通运作,寻路单位(城市中四处移动的市民、服务和资源)在做决策时又会考虑哪些因素。那就让我们开始吧!
《都市:天际线2》与初代的区别
《都市:天际线2》采用与前作不同的寻路方式。《都市:天际线》中,寻路采用就近原则,也就是说寻路单位在计算目的地距离或分配服务任务时,只考虑直线距离,而忽视实际存在的交通网络。举个例子:发生火灾时,将由直线距离最近的消防站派遣消防车,哪怕其通往火灾现场的道路其实比其他消防站更为曲折漫长。这样一来,消防车响应缓慢,无法及时赶到,就可能导致火灾蔓延、建筑物倒塌。寻路单位会选取所谓的最快路线,即使发生交通堵塞,也会在原定路线上持续等待。除非道路发生改建,原来的路线不再可行,否则他们会将一开始的选择贯彻到底。
《都市:天际线2》中,寻路单位选择路线基于寻路成本。成本由多个因素综合计算得到,包括城市道路网络、所需时间、交通开销、寻路单位的喜好等等,下文将进一步展开介绍。此外,寻路单位还会根据沿途发生的事件调整路线。例如,他们会变道来绕开车祸现场和停着的服务车辆、或为应急车辆让路。

寻路成本
寻路运算基于四个主要因素:时间、舒适度、金钱和行为模式。
时间是计算路径的重要因素。其他因素也会影响路径选择,但时间通常是重中之重,毕竟所有寻路单位都希望尽快抵达目的地。如果只考虑行程所需时间,虽然小路的长度可能短于公路,公路上的行驶速度却高于小路,因而所需时间也更短。因此大多数情况下,如果公路总体耗时更短,寻路单位都会选择公路。
舒适性是寻路的重要因素,包括将旅程规划得尽可能顺畅,避免在十字路口进行多余的转弯,以及找到合适的停车地点或下车的公共交通车站。舒适度直接计入寻路成本,其中每一项都会计入总成本。
金钱在寻路成本中体现为燃料消耗和潜在停车费用。市民会权衡交通和停车费用,将其与其他出行方式乃至步行比较,选取更快捷、舒适、实惠的方案。对于送货车辆而言,送货距离越长,运送资源的成本就越高。因此,相较送往外部连接,就近销售资源和产品的运输成本更低,公司成本效益更高。
行为模式是指寻路单位在移动过程中做出“危险”决定(例如掉头)的意愿。市民和送货车辆不太会为减少寻路成本而做出危险决定,但应急车辆的行为模式更宽松,这样它们在紧急情况下不至于被堵在路上,必要时可以做出危险的寻路决定。
我们还将市民的年龄层也纳入了寻路考量中。青少年最看中的因素是金钱,不论是交通工具还是停车地点,都会选择便宜的。成年人重视时间,通常选择最快捷的路线。老年人更在乎舒适度,倾向于选择舒适成本最小的路线。
市民做决策时会权衡所有寻路因素,力求将寻路成本降至最低。
服务车辆基于最低寻路总成本派遣。需要调派服务车辆时,算法会考虑所有可调派车辆在当下和未来一小段时间内离目的地的距离(比如车辆在完成上一项任务后会位于何处)。举个例子,需要一辆道路养护车辆来维修某路段。算法会确认所有可用车辆目前的位置,以及它们为了完成当前任务需要去什么位置。如果车辆A在完成当前任务后即将抵达路段附近地点,那么算法也许会将任务分派给车辆A,而非当下就在附近的车辆B。
距离增加会导致成本增加,因而资源运输会受到路线长度影响。公司会尽可能选择更近的收货地点,以增加利润。将资源和商品运出城市成本高昂,会大大降低公司的盈利能力。

车道使用
《都市:天际线2》中,车辆会使用更多车道。车辆在行驶途中分散在所有可行驶车道上,尽可能更高效地使用道路,保持交通顺畅。也就是说,如果多车道道路上的某一条车道挤满了等待绿灯的车辆,新到达的车辆就会驶入空着的车道,在路口均匀分布。
在多车道道路上,如果算法察觉其他车道上的车较少,就会让后车超越较慢的前车。车辆还会通过变道来避开因交通事故、交通堵塞或车辆停靠(如救护车接病人上车)而完全堵塞的车道。另外,只要有可变道车道,车辆就会尽可能为应急车辆让路。

交通模拟、寻路单位和性能
《都市:天际线2》有复杂的交通模拟系统。在城市的大小道路移动时,所有车辆和行人除了计算自身路线,还会时刻考虑到附近所有其他单位。寻路单位在移动过程中会多次做出影响交通流的决策,这与他们的寻路决策相互独立,包括随车流加速,刹车减速,转弯时避让对向车流,变道以改善交通流,以及当原定路线上发生交通事故等意外事件时做出新的寻路决策。
这意味着《都市:天际线2》的寻路计算在量与深度上都会超过一代,毕竟寻路单位的决策受到更多因素影响。不过,由于包括寻路和模拟在内的一系列计算充分利用多核CPU的所有可用处理能力,二代计算效率有所提升,系统整体性能更高。
此外,《都市:天际线2》相对前作还有一项重大改进:对寻路单位在城市中移动没有硬性限制。总体而言,模拟和寻路的性能大幅提升,使得城市可以容纳更多人口。模拟只会受到游戏运行平台的硬件性能限制。

环岛行为模式
上一篇开发者日志中,我们谈到了环岛的建造方式,但环岛的改良不仅如此。交通模拟还将环岛路口的进出规则纳入考量。正在进入环岛的车辆会给已在环岛中的车辆让行,然而,就像现实生活中一样,一旦抓到机会,车辆可能会插入另一辆车前方。这也是寻路单位行为模式的一部分,他们总是在试图改善交通流,比如通过变道或赶着绿灯变红的前一刻冲过十字路口。

交通事故
游戏中会发生交通事故:车辆失去控制,撞上其他车辆或建筑物。事故发生的概率按每个路段分别计算,恶劣的道路状况、照明条件、天气和灾害等因素都会增加事故发生率。利用道路养护服务、安装路灯,可以将道路保持在良好状态,有效降低道路事故发生概率。
当一路段触发事故,会随机使该路段上的一辆车“失去控制”,将其推向随机方向,施加简单的碰撞和物理效果,使其冲撞移动方向上的障碍物。如果该车辆与另一寻路单位相撞,后者在事故期间也会获得物理碰撞效果。
事故现场需要由警察保护,由道路养护部门清理。算法会中断受事故影响车道上的交通,车辆需等待道路恢复畅通才能继续行驶。如果事故严重、出现重伤人员,救护车也可能赶往现场。如果清理事故现场导致交通长时间堵塞,寻路单位可能重新计算路线,做出“危险”行为,掉头寻找其他路线来绕过堵塞车道。

停车
停车是《都市:天际线2》中的新功能,也是寻路的四大要素之一。寻路单位计算路线并决定如何前往目的地时,会考虑可用的停车区域。通常,寻路单位最舒适的选择是将车停在紧挨目的地大楼的停车位上。如果不行,再选择其他停车地点或不同的出行方式。停车地点不足,市民就会倾向选择其他地方开展购物或娱乐等活动。
不同年龄层市民在出行舒适度、时间和费用方面有不同喜好。这些因素都会受到停车条件的影响。老年人更看中舒适度,他们倾向于选择目的地附近的停车区域,即使收费可能较高。成年人最关心时间,会选择最快路线沿途的地点。青少年经济最不自由,所以会选择便宜的停车方式,宁可走更长的距离或搭乘其他交通工具出行。
寻路单位的停车选择和寻路成本计算可能受到具体停车场、建筑物的设定收费,以及区域内所设路边停车位费用的影响。如果收费较低或免费,所有年龄层市民都会更愿意停车,如果收费较高,则富有市民更可能停车。

信息视图
《都市:天际线2》有两种信息视图:交通信息视图和道路信息视图,供玩家监控交通状况,尽早解决问题。
交通信息视图
交通信息视图显示城市的整体交通流、交通量,堵塞道路显示为红色,以便玩家快速发现道路网络中的问题区域。交通流代表城市交通流动的顺畅程度。交通流数值高,意味着没有堵塞,而数值低则表示可能有瓶颈路段。交通量则显示道路上在一天的不同时间段有多少车辆行驶。交通量大表明为高峰时段。

道路信息视图
道路信息视图显示具体道路更详细的信息,包括道路状况以及交通流、交通量。使用这些工具,你可以精确改进道路网络。如果某条道路交通量很大,这多半是一条主干道,随着城市发展,你可能需要密切关注它,拓宽它,以缓解未来的交通拥堵。
道路状况不好,会增加事故发生概率,降低行驶速度。通过道路养护车辆的维护、在冬季扫除积雪等,使交通更顺畅,出行更安全。

服务车辆
服务车辆收到来自建筑物和路段的任务时,会计算通往目的地的合适路线。车辆前往目的地时,会影响沿途和/或周围环境。例如,当垃圾车收到前往下一个目的地收取垃圾的指令,会顺便收取沿途的垃圾。同样,道路养护车辆在前往目的地途中也会修复沿途路段。
警车和消防车等应急车辆有更多影响其寻路的规则。相比市民,其他服务车辆和送货车辆,它们的行为“更危险”:只要能缩短到目的地的路线,他们可以“非法”掉头。如果条件允许,其他车辆会在多车道道路上变道,给应急车辆让路。
警车巡逻行为有额外规则,如果发生紧急情况,例如抢劫或交通事故,警车会暂时搁置巡逻任务(巡逻任务能降低所巡逻地区的犯罪率)。
除出租车以外的公共交通车辆会沿指定路线行驶。出租车能按照近似私家车的寻路规则自由选择路线。他们起初在出租车站上客,出租车站升级后,就可以在城市的任何地方上客。
服务车辆可以只在玩家创建的区域运营。该情况下,这些车辆只响应指定地区内的命令和紧急情况。任何城市服务都可以面向一个或多个地区,乃至整个城市(默认设定)。

城市间的交通
《都市:天际线2》还支持城市间的交通,可以在外部连接间往来。这不会给城市带来经济效益,但随着城市发展、公路融入城市道路网络,这类交通会成为整体交通流的一部分。如果玩家在两个外部连接之间建立一条更短、寻路成本更低的路线,这些城市之间的交通将改用新创建的路线。

以上就是本次开发者日志的全部内容。我们希望这篇日志能加深大家对《都市:天际线2》中交通运作的理解,帮助大家设计理想的城市。交通AI是《都市:天际线》中反复出现的话题,《都市:天际线2》中的交通模拟系统经过升级,更为真实,我们期待收到大家对这个系统的反馈。下周,我们将为大家带来公共交通和货物运输,以及其将如何融入玩家城市的相关介绍。
