【開(kāi)發(fā)者日志02】交通AI——升級(jí)的交通模擬系統(tǒng)讓市民的出行更有智慧!
?大家好!《都市:天際線2》的又一期開(kāi)發(fā)者日志來(lái)了。本期日志將專門介紹全新的升級(jí)版交通AI。前作的核心玩法之一,即是在持續(xù)發(fā)展的城市中管理交通,續(xù)作中,我們希望進(jìn)一步優(yōu)化該系統(tǒng),以解決玩家多年來(lái)提出的種種意見(jiàn)與建議,并將城市打造得更真實(shí)、更生動(dòng)。
?
一座活潑有生氣的城市離不開(kāi)市民和交通。人們?cè)谀睦锞幼。谀睦锕ぷ?,空余時(shí)間又會(huì)去哪里?企業(yè)選址在哪里,如何生產(chǎn)商品?他們服務(wù)的是市民還是其他企業(yè)?客戶如何找到他們?在更短距離內(nèi),還有其他、更好的購(gòu)物去處么?以上只是影響城市中交通流動(dòng)的部分因素。本篇日志涵蓋的內(nèi)容不僅限于此。
?
本篇開(kāi)發(fā)者日志中,我們將談?wù)動(dòng)螒蛉绾文M交通運(yùn)作,尋路單位(城市中四處移動(dòng)的市民、服務(wù)和資源)在做決策時(shí)又會(huì)考慮哪些因素。那就讓我們開(kāi)始吧!
《都市:天際線2》與初代的區(qū)別
《都市:天際線2》采用與前作不同的尋路方式。《都市:天際線》中,尋路采用就近原則,也就是說(shuō)尋路單位在計(jì)算目的地距離或分配服務(wù)任務(wù)時(shí),只考慮直線距離,而忽視實(shí)際存在的交通網(wǎng)絡(luò)。舉個(gè)例子:發(fā)生火災(zāi)時(shí),將由直線距離最近的消防站派遣消防車,哪怕其通往火災(zāi)現(xiàn)場(chǎng)的道路其實(shí)比其他消防站更為曲折漫長(zhǎng)。這樣一來(lái),消防車響應(yīng)緩慢,無(wú)法及時(shí)趕到,就可能導(dǎo)致火災(zāi)蔓延、建筑物倒塌。尋路單位會(huì)選取所謂的最快路線,即使發(fā)生交通堵塞,也會(huì)在原定路線上持續(xù)等待。除非道路發(fā)生改建,原來(lái)的路線不再可行,否則他們會(huì)將一開(kāi)始的選擇貫徹到底。
?
《都市:天際線2》中,尋路單位選擇路線基于尋路成本。成本由多個(gè)因素綜合計(jì)算得到,包括城市道路網(wǎng)絡(luò)、所需時(shí)間、交通開(kāi)銷、尋路單位的喜好等等,下文將進(jìn)一步展開(kāi)介紹。此外,尋路單位還會(huì)根據(jù)沿途發(fā)生的事件調(diào)整路線。例如,他們會(huì)變道來(lái)繞開(kāi)車禍現(xiàn)場(chǎng)和停著的服務(wù)車輛、或?yàn)閼?yīng)急車輛讓路。
?

尋路成本
尋路運(yùn)算基于四個(gè)主要因素:時(shí)間、舒適度、金錢和行為模式。
時(shí)間是計(jì)算路徑的重要因素。其他因素也會(huì)影響路徑選擇,但時(shí)間通常是重中之重,畢竟所有尋路單位都希望盡快抵達(dá)目的地。如果只考慮行程所需時(shí)間,雖然小路的長(zhǎng)度可能短于公路,公路上的行駛速度卻高于小路,因而所需時(shí)間也更短。因此大多數(shù)情況下,如果公路總體耗時(shí)更短,尋路單位都會(huì)選擇公路。
舒適性是尋路的重要因素,包括將旅程規(guī)劃得盡可能順暢,避免在十字路口進(jìn)行多余的轉(zhuǎn)彎,以及找到合適的停車地點(diǎn)或下車的公共交通車站。舒適度直接計(jì)入尋路成本,其中每一項(xiàng)都會(huì)計(jì)入總成本。
金錢在尋路成本中體現(xiàn)為燃料消耗和潛在停車費(fèi)用。市民會(huì)權(quán)衡交通和停車費(fèi)用,將其與其他出行方式乃至步行比較,選取更快捷、舒適、實(shí)惠的方案。對(duì)于送貨車輛而言,送貨距離越長(zhǎng),運(yùn)送資源的成本就越高。因此,相較送往外部連接,就近銷售資源和產(chǎn)品的運(yùn)輸成本更低,公司成本效益更高。
行為模式是指尋路單位在移動(dòng)過(guò)程中做出“危險(xiǎn)”決定(例如掉頭)的意愿。市民和送貨車輛不太會(huì)為減少尋路成本而做出危險(xiǎn)決定,但應(yīng)急車輛的行為模式更寬松,這樣它們?cè)诰o急情況下不至于被堵在路上,必要時(shí)可以做出危險(xiǎn)的尋路決定。
?
我們還將市民的年齡層也納入了尋路考量中。青少年最看中的因素是金錢,不論是交通工具還是停車地點(diǎn),都會(huì)選擇便宜的。成年人重視時(shí)間,通常選擇最快捷的路線。老年人更在乎舒適度,傾向于選擇舒適成本最小的路線。
?
市民做決策時(shí)會(huì)權(quán)衡所有尋路因素,力求將尋路成本降至最低。
?
服務(wù)車輛基于最低尋路總成本派遣。需要調(diào)派服務(wù)車輛時(shí),算法會(huì)考慮所有可調(diào)派車輛在當(dāng)下和未來(lái)一小段時(shí)間內(nèi)離目的地的距離(比如車輛在完成上一項(xiàng)任務(wù)后會(huì)位于何處)。舉個(gè)例子,需要一輛道路養(yǎng)護(hù)車輛來(lái)維修某路段。算法會(huì)確認(rèn)所有可用車輛目前的位置,以及它們?yōu)榱送瓿僧?dāng)前任務(wù)需要去什么位置。如果車輛A在完成當(dāng)前任務(wù)后即將抵達(dá)路段附近地點(diǎn),那么算法也許會(huì)將任務(wù)分派給車輛A,而非當(dāng)下就在附近的車輛B。
?
距離增加會(huì)導(dǎo)致成本增加,因而資源運(yùn)輸會(huì)受到路線長(zhǎng)度影響。公司會(huì)盡可能選擇更近的收貨地點(diǎn),以增加利潤(rùn)。將資源和商品運(yùn)出城市成本高昂,會(huì)大大降低公司的盈利能力。

車道使用
《都市:天際線2》中,車輛會(huì)使用更多車道。車輛在行駛途中分散在所有可行駛車道上,盡可能更高效地使用道路,保持交通順暢。也就是說(shuō),如果多車道道路上的某一條車道擠滿了等待綠燈的車輛,新到達(dá)的車輛就會(huì)駛?cè)肟罩能嚨?,在路口均勻分布?/p>
?
在多車道道路上,如果算法察覺(jué)其他車道上的車較少,就會(huì)讓后車超越較慢的前車。車輛還會(huì)通過(guò)變道來(lái)避開(kāi)因交通事故、交通堵塞或車輛停靠(如救護(hù)車接病人上車)而完全堵塞的車道。另外,只要有可變道車道,車輛就會(huì)盡可能為應(yīng)急車輛讓路。
?

交通模擬、尋路單位和性能
?《都市:天際線2》有復(fù)雜的交通模擬系統(tǒng)。在城市的大小道路移動(dòng)時(shí),所有車輛和行人除了計(jì)算自身路線,還會(huì)時(shí)刻考慮到附近所有其他單位。尋路單位在移動(dòng)過(guò)程中會(huì)多次做出影響交通流的決策,這與他們的尋路決策相互獨(dú)立,包括隨車流加速,剎車減速,轉(zhuǎn)彎時(shí)避讓對(duì)向車流,變道以改善交通流,以及當(dāng)原定路線上發(fā)生交通事故等意外事件時(shí)做出新的尋路決策。
?
這意味著《都市:天際線2》的尋路計(jì)算在量與深度上都會(huì)超過(guò)一代,畢竟尋路單位的決策受到更多因素影響。不過(guò),由于包括尋路和模擬在內(nèi)的一系列計(jì)算充分利用多核CPU的所有可用處理能力,二代計(jì)算效率有所提升,系統(tǒng)整體性能更高。
?
此外,《都市:天際線2》相對(duì)前作還有一項(xiàng)重大改進(jìn):對(duì)尋路單位在城市中移動(dòng)沒(méi)有硬性限制??傮w而言,模擬和尋路的性能大幅提升,使得城市可以容納更多人口。模擬只會(huì)受到游戲運(yùn)行平臺(tái)的硬件性能限制。

環(huán)島行為模式
上一篇開(kāi)發(fā)者日志中,我們談到了環(huán)島的建造方式,但環(huán)島的改良不僅如此。交通模擬還將環(huán)島路口的進(jìn)出規(guī)則納入考量。正在進(jìn)入環(huán)島的車輛會(huì)給已在環(huán)島中的車輛讓行,然而,就像現(xiàn)實(shí)生活中一樣,一旦抓到機(jī)會(huì),車輛可能會(huì)插入另一輛車前方。這也是尋路單位行為模式的一部分,他們總是在試圖改善交通流,比如通過(guò)變道或趕著綠燈變紅的前一刻沖過(guò)十字路口。
?

交通事故
游戲中會(huì)發(fā)生交通事故:車輛失去控制,撞上其他車輛或建筑物。事故發(fā)生的概率按每個(gè)路段分別計(jì)算,惡劣的道路狀況、照明條件、天氣和災(zāi)害等因素都會(huì)增加事故發(fā)生率。利用道路養(yǎng)護(hù)服務(wù)、安裝路燈,可以將道路保持在良好狀態(tài),有效降低道路事故發(fā)生概率。
?
當(dāng)一路段觸發(fā)事故,會(huì)隨機(jī)使該路段上的一輛車“失去控制”,將其推向隨機(jī)方向,施加簡(jiǎn)單的碰撞和物理效果,使其沖撞移動(dòng)方向上的障礙物。如果該車輛與另一尋路單位相撞,后者在事故期間也會(huì)獲得物理碰撞效果。
?
事故現(xiàn)場(chǎng)需要由警察保護(hù),由道路養(yǎng)護(hù)部門清理。算法會(huì)中斷受事故影響車道上的交通,車輛需等待道路恢復(fù)暢通才能繼續(xù)行駛。如果事故嚴(yán)重、出現(xiàn)重傷人員,救護(hù)車也可能趕往現(xiàn)場(chǎng)。如果清理事故現(xiàn)場(chǎng)導(dǎo)致交通長(zhǎng)時(shí)間堵塞,尋路單位可能重新計(jì)算路線,做出“危險(xiǎn)”行為,掉頭尋找其他路線來(lái)繞過(guò)堵塞車道。

停車
停車是《都市:天際線2》中的新功能,也是尋路的四大要素之一。尋路單位計(jì)算路線并決定如何前往目的地時(shí),會(huì)考慮可用的停車區(qū)域。通常,尋路單位最舒適的選擇是將車停在緊挨目的地大樓的停車位上。如果不行,再選擇其他停車地點(diǎn)或不同的出行方式。停車地點(diǎn)不足,市民就會(huì)傾向選擇其他地方開(kāi)展購(gòu)物或娛樂(lè)等活動(dòng)。
?
不同年齡層市民在出行舒適度、時(shí)間和費(fèi)用方面有不同喜好。這些因素都會(huì)受到停車條件的影響。老年人更看中舒適度,他們傾向于選擇目的地附近的停車區(qū)域,即使收費(fèi)可能較高。成年人最關(guān)心時(shí)間,會(huì)選擇最快路線沿途的地點(diǎn)。青少年經(jīng)濟(jì)最不自由,所以會(huì)選擇便宜的停車方式,寧可走更長(zhǎng)的距離或搭乘其他交通工具出行。
?
尋路單位的停車選擇和尋路成本計(jì)算可能受到具體停車場(chǎng)、建筑物的設(shè)定收費(fèi),以及區(qū)域內(nèi)所設(shè)路邊停車位費(fèi)用的影響。如果收費(fèi)較低或免費(fèi),所有年齡層市民都會(huì)更愿意停車,如果收費(fèi)較高,則富有市民更可能停車。
?

信息視圖
?《都市:天際線2》有兩種信息視圖:交通信息視圖和道路信息視圖,供玩家監(jiān)控交通狀況,盡早解決問(wèn)題。
?
交通信息視圖
交通信息視圖顯示城市的整體交通流、交通量,堵塞道路顯示為紅色,以便玩家快速發(fā)現(xiàn)道路網(wǎng)絡(luò)中的問(wèn)題區(qū)域。交通流代表城市交通流動(dòng)的順暢程度。交通流數(shù)值高,意味著沒(méi)有堵塞,而數(shù)值低則表示可能有瓶頸路段。交通量則顯示道路上在一天的不同時(shí)間段有多少車輛行駛。交通量大表明為高峰時(shí)段。

道路信息視圖
道路信息視圖顯示具體道路更詳細(xì)的信息,包括道路狀況以及交通流、交通量。使用這些工具,你可以精確改進(jìn)道路網(wǎng)絡(luò)。如果某條道路交通量很大,這多半是一條主干道,隨著城市發(fā)展,你可能需要密切關(guān)注它,拓寬它,以緩解未來(lái)的交通擁堵。
?
道路狀況不好,會(huì)增加事故發(fā)生概率,降低行駛速度。通過(guò)道路養(yǎng)護(hù)車輛的維護(hù)、在冬季掃除積雪等,使交通更順暢,出行更安全。

服務(wù)車輛
服務(wù)車輛收到來(lái)自建筑物和路段的任務(wù)時(shí),會(huì)計(jì)算通往目的地的合適路線。車輛前往目的地時(shí),會(huì)影響沿途和/或周圍環(huán)境。例如,當(dāng)垃圾車收到前往下一個(gè)目的地收取垃圾的指令,會(huì)順便收取沿途的垃圾。同樣,道路養(yǎng)護(hù)車輛在前往目的地途中也會(huì)修復(fù)沿途路段。
?
警車和消防車等應(yīng)急車輛有更多影響其尋路的規(guī)則。相比市民,其他服務(wù)車輛和送貨車輛,它們的行為“更危險(xiǎn)”:只要能縮短到目的地的路線,他們可以“非法”掉頭。如果條件允許,其他車輛會(huì)在多車道道路上變道,給應(yīng)急車輛讓路。
?
警車巡邏行為有額外規(guī)則,如果發(fā)生緊急情況,例如搶劫或交通事故,警車會(huì)暫時(shí)擱置巡邏任務(wù)(巡邏任務(wù)能降低所巡邏地區(qū)的犯罪率)。
?
除出租車以外的公共交通車輛會(huì)沿指定路線行駛。出租車能按照近似私家車的尋路規(guī)則自由選擇路線。他們起初在出租車站上客,出租車站升級(jí)后,就可以在城市的任何地方上客。
?
服務(wù)車輛可以只在玩家創(chuàng)建的區(qū)域運(yùn)營(yíng)。該情況下,這些車輛只響應(yīng)指定地區(qū)內(nèi)的命令和緊急情況。任何城市服務(wù)都可以面向一個(gè)或多個(gè)地區(qū),乃至整個(gè)城市(默認(rèn)設(shè)定)。

城市間的交通
?
《都市:天際線2》還支持城市間的交通,可以在外部連接間往來(lái)。這不會(huì)給城市帶來(lái)經(jīng)濟(jì)效益,但隨著城市發(fā)展、公路融入城市道路網(wǎng)絡(luò),這類交通會(huì)成為整體交通流的一部分。如果玩家在兩個(gè)外部連接之間建立一條更短、尋路成本更低的路線,這些城市之間的交通將改用新創(chuàng)建的路線。

以上就是本次開(kāi)發(fā)者日志的全部?jī)?nèi)容。我們希望這篇日志能加深大家對(duì)《都市:天際線2》中交通運(yùn)作的理解,幫助大家設(shè)計(jì)理想的城市。交通AI是《都市:天際線》中反復(fù)出現(xiàn)的話題,《都市:天際線2》中的交通模擬系統(tǒng)經(jīng)過(guò)升級(jí),更為真實(shí),我們期待收到大家對(duì)這個(gè)系統(tǒng)的反饋。下周,我們將為大家?guī)?lái)公共交通和貨物運(yùn)輸,以及其將如何融入玩家城市的相關(guān)介紹。
