スポンサーリンク

Cities: Skylines II 開発日記 #2 Traffic AI

更新情報

Paradoxフォーラムにて

Cities: Skylines II

の開発日記#2が掲載されていますので紹介します。

今回の投稿の原本となったフォーラム内のページはこちらです↓

今回のテーマはTraffic AI、交通AIです。

以下パラドックス社フォーラム内の記事を意訳して紹介します。
下記の内容が必ずしも正しい翻訳とは限りません。
誤訳・誤解釈があると思いますがご了承ください。
正確な内容の把握はパラドックスフォーラム内の元投稿にてご確認ください。

Traffic AI

序文

みなさんこんにちは!またCities:Skylines IIの新しい開発日記へ戻ってきました。
今日は、新しく改良されたTraffic AI(交通AI)について紹介します。
成長する都市の交通を管理することはCities:Skylinesというゲームの中核部分であり、続編である本作、IIでは長年にわたって共有されてきたフィードバックに対応し、都市をより現実的で生き生きとしたものに感じさせるために、より高度なシステムを提供したいと思っていました。

市民と交通は、生きて息づく都市の中核部分です。
人々はどこに住み、どこで働き、自由時間にどのような場所を訪れるのか?
企業はどこにあり、販売する商品をどのように入手しているのか?
顧客は市民なのか、それとも他の企業なのか?
顧客はどのようにお店を見つけ、近くに他のより良いショッピングオプションはあるのか?
これらは全て都市の交通の流れに影響を与えています。

この開発日記では、交通シミュレーションがどのように機能するか、およびエージェント(市内を移動する市民、サービス、資源を指す)が経路探索の決定を行う際にどのような特徴を考慮するかを確認します。
詳しくは下記のハイライト動画をご覧ください。

Cities: SkylinesとCities: Skylines IIの違い

Cities: Skylines IIでは、前作とは異なる方法で経路探索が機能します。
前作、Cities: Skylinesでの経路探索は近接性に基づいていたため、エージェントは既存の道路網を考慮せずに、目的地を計算したり、直線距離でサービスを注文したりしていました。
これは、火災が発生した場合、目的地までの道路接続により、応対する消防車がより長い経路を走る事になったとしても、最寄りのステーションからやって来ることを意味します。
よって、対応時間が長くなると火災の拡大を食い止めたり建物を倒壊から救ったりするために消防車が間に合わなくなる可能性がありました。
前作ではエージェントは目的地までの最速ルートを選択してそれを守り、渋滞が発生した場合は辛抱強く渋滞に座り込み、道路網が変更されて元の経路が使えなくなった場合にのみルートを変更していました。

Cities: Skylines IIでは、エージェントは経路探索コストに基づいて経路を選択します。
このコストは、都市の道路網、移動時間、移動コスト、エージェントの好みなど、複数の要素から計算されます。
さらにエージェントは道中の出来事に基づいてルートを調整します。
交通事故や停車中のサービスカーを避けるために車線を変更したり、緊急事態に対応する車両のためにスペースを確保したりすることもあるのです。

あなたの街のレイアウトは、エージェントが移動方法を決定するときの方程式の一部にすぎない

経路探索のコスト

経路探索の計算の中心は、時間、快適さ、お金、行動の4つの要素があります。

時間は経路を計算する際の重要な要素です。
経路探索には他の要因も影響しますが、すべてのエージェントが目的地までの最短ルートを探す傾向があるため、通常は時間が最も重要です。
移動時間のみを考慮した場合、小さな道路の方がより時間が短い可能性がありますが、そこでの移動速度は高速道路の長距離移動速度よりも低いため、高速道路が全体的に速くなるルートである場合はエージェントはほとんどのシナリオにおいて高速道路を選択します。

快適さは経路を見つける上で重要な要素であり、交差点での不要な曲がり角を避けるだけでなく、降りるのに適した駐車場や公共交通機関の停留所を見つけるなど、できるだけスムーズなルートを計画することが含まれます。
快適さは経路発見コストに直接計算され、各オプションが全体のコストに加算されます。

お金は燃料の使用量と駐車料金の可能性という形で、経路探索の選択要素に入ってきます。
市民は移動コストと駐車料金を天秤にかけ、他の移動手段や徒歩と比較し、どの選択肢が早く、快適で、手頃な価格かを検討します。
配送車両の場合、輸送する資源のコストは配送先が遠くなるほど高くなります。
その結果、資源や商品を地元で販売する方が外部に貨物を運ぶよりも配送コストが低いため、企業にとってコスト効率が高くなります。

行動とは、Uターンするなど交通において「危険な」判断をしようとするエージェントの意思を指します。
市民や配達車両は、道路の経路探索コストを削減するために交通の中で危険な判断をする可能性が低く、緊急車両は、緊急時に道路網をナビゲートし、必要に応じて危険な経路探索の決定を行うことができるよう、より寛大な行動モデルを持っています。

経路探索は旅行者の年齢層も考慮しています。
10代の若者にとって最も重要な要素はお金です。
彼らは移動手段であれ駐車行動であれ、旅行時に安価な選択肢を求めています。
大人は時間を大切にするので、通常は一番早いルートが一番良いと評価します。
そして高齢者は高い快適性レベルを好みます。
快適性のコストが小さい限り、高齢者はそのオプションを選択する傾向があります。

市民は意思決定の際にすべての経路探索の要素を比較検討し、全体的に最も低い経路探索コストを目指します。

サービス車両は全体的な経路探索コストが最も低いものに基づいて発注され、新規発注時には、現在および近い将来(例:車両は以前のサービス注文を満たした後、どこに行くのか)の該当するすべての車両の距離が考慮されます。
例として道路整備サービス車両が道路セグメントの修理を指示されたとしましょう。
シミュレーションでは現在使用可能なすべての車両がどこにあるか、現在の注文がどこで受け付けられているかを確認します。
車両が現在注文されたサービスを終了した直後にすでに近くの現場に向かっている場合、現在その目的地の近くにある車両は新しい命令の対象に選択されない可能性があります。

資源輸送は距離が離れるとコストが増加するため、ルートの長さに影響され、企業は自社の利益率を高めるために貨物をできるだけ近くに輸送しようとします。
都市外への資源や物資の輸送はコストがかかり、企業の収益性を大きく低下させる可能性があります。

物資をを遠くに輸送するほど、企業にとってのコストは高くなる

道路レーンの使用状況

Cities: Skylines IIの車両はより多くの車線を使用します。
目的地までの移動中、利用可能なすべての車線を占有して、できるだけスムーズな交通ができるように道路の利用状況を最適化しようとします。
これは多車線道路の1車線が信号待ちの車両で埋まっている場合、交差点に到着する新たにやってきた車は、他の空いている車線を選択して交差点を均等に埋めることを意味します。

多車線道路ではシミュレーションで他の車線の使用率が低いことに気づくと、車両は低速の車両を追い越すことができます。
また交通事故や交通渋滞、救急車が患者を搬送するなどの停止車両による車線の完全閉塞を避けるために、車両は車線を切り替えます。
さらに車両は可能な場合は他の車線に切り替えることで、緊急車両のためのスペースを確保しようとします。

車両は道路上の交通に適応して交通の流れを改善する

交通シミュレーション、エージェント、パフォーマンス

Cities:Skylines IIでは交通シミュレーションが複雑になっています。
すべての車両と歩行者は、その経路を計算するだけでなく、市内の通りや経路を移動する際に、常に近くにいるすべてのエージェントを考慮します。
エージェントは経路探索の決定とは別に、移動中に交通量に影響を与える決定を複数回行います。
この中には交通に沿って加速すること、減速するためにブレーキをかけること、曲がるときに対向車を避けること、車線を切り替えて交通の流れを最適化すること、最初に計画されたルートで交通事故などの予期せぬイベントが発生したときに経路を決定することなどが含まれます。

これはエージェントの決定に影響を与える機能が増えたため、前作Cities: Skylinesよりも経路探索の計算がより多く、複雑であることを意味します。
ただし計算はより効率的になり、計算の中でも経路探索とシミュレーションがマルチコアCPUの利用可能なすべての処理能力を利用するため、全体としてのパフォーマンスは向上しています。

また前作からの大幅な改良として、Cities:Skylines IIでは街中を動き回るエージェントに対する厳しい制限がありません。
全体としてシミュレーションと経路探索のパフォーマンスは大幅に向上し、より多くの母集団を扱うことが可能になります。
実際のシミュレーションの唯一の制限は、ゲームを実行するプラットフォームのハードウェア的な制限に依存します。

大都市を建設し、市民が仕事やレジャーのために移動するのを見ましょう

ラウンドアバウトでの挙動

前回の開発日記でラウンドアバウトの作り方を紹介しましたが、改良点はそれだけではありません。
交通シミュレーションではラウンドアバウトの出入りに関するルールも考慮されています。
ラウンドアバウトに進入する車両はすでにラウンドアバウトに進入している車両に道を譲りますが、現実と同じように適切な機会があれば、すでにラウンドアバウトに進入している車両の前に割り込むこともあります。
これはエージェントの行動の一部であり、車線変更や交差点のすり抜けなど、交通の流れを良くするための適切な場所を常に探しているためです。

車両は常に交通の隙を突く準備ができている

交通事故

このゲームには車両がコントロールを失い交通や建物に衝突する、交通事故が登場します。
事故が発生する可能性は道路セグメントごとに計算され、道路状況、照明の条件、気象、災害などの特徴によって増加します。
道路整備サービスを利用して道路を良好な状態に保ち街灯を設置することは、道路での事故確率を下げる良い方法です。

ある道路セグメントで事故チェック判定に成功すると、そのセグメントの車両がランダムに選択され「制御不能」になります。
車両はランダムな方向に押し出され、単純な衝突と物理現象を獲得し、進行中の障害物にぶつかることになります。
車両が別のエージェントと衝突した場合、その事故の間は衝突と物理現象も発生します。

事故現場は、それぞれ警察と道路整備によって確保され、除去される必要があります。
シミュレーションは、事故の影響を受けた車線の交通を停止させ、車両は道路が整うまで待機してから進みます。
また重傷を負うほどの事故であれば救急車を呼ぶこともあります。
事故現場を片付けたことで長期間にわたって渋滞が発生した場合、エージェントが経路を再計算した結果として「危険な」行動が発生し、Uターンして封鎖された車線を迂回する代替ルートを見つける可能性があります。

駐車場

駐車場はCities: Skylines IIの新機能で、経路探索の4つの主要な要素の1つでもあります。
エージェントは経路探索を計算し、目的地までの移動方法を決定するときに、使用可能な駐車スペースを考慮します。
通常、エージェントにとって最も快適な選択肢は、移動先の建物の敷地に駐車できることです。
それができない場合は、別の駐車場を選択するか、別の交通手段を選択します。
駐車場がないが故に市民は買い物や余暇に別の場所を選ぶなど、他の場所を好んで活動する可能性もあります。

旅行の快適さ、時間、旅行に費やすお金に関しては、市民の年齢層によって好みが異なります。
駐車場はこれらすべての側面に何らかの形で影響を与えます。
高齢者は快適さを好み、目的地の近くに駐車スペースがあれば、駐車料金に関係なく選択する可能性が高いです。
大人は時間を最も気にして最も速いルートに沿った場所を選びますが、10代はお金が最も少ないので、たとえ移動を完了するためにより長い距離を歩くか他の交通手段を使わなければならないとしても安い駐車場を選びます。

駐車場の選択やエージェントの経路発見コストの計算は、個々の駐車場や建物に設定された料金や、地区に追加される道路側の駐車料金によって影響を受ける可能性があります。
低料金または無料はすべての市民グループの駐車を促進し、高い駐車料金は裕福な市民に有利です。

駐車場には立体駐車場や地下駐車場に加え、複数のサイズがある

Infoviews(情報ビュー)

Cities:Skylines IIには、交通情報と道路情報の2つのインフォビュー(情報ビュー)があり、交通状況を把握して問題に早期に対処できるようになっています。

交通情報ビュー

交通情報ビューには、市内全体の交通の流れと交通量が表示され、渋滞が発生すると道路が赤く染まるため、道路網の問題箇所を素早く見つけることができます。
交通の流れは市内の交通がどれだけスムーズに流れているかを示します。
数値が大きいほど渋滞が発生していないことを意味し、数値が小さいほど潜在的なボトルネックが発生する可能性があることを示します。
最後に、交通量は1日の異なる時間帯に道路網を走行する車両の数を示します。交通量が多い場合はラッシュアワーを示しています。

Traffic Flow(交通の流れ)とTraffic Volume(交通量)を切り替えて、ネットワークが交通をどのように処理しているかを確認する

道路情報ビュー

道路情報ビューでは1つの道路に関するより詳細な情報が表示され、道路状況だけでなく、交通の流れや交通量も網羅されます。
これらのツールを使用すると、道路網を非常に正確に強化することができます。
特定の道路の交通量が多い場合は幹線道路である可能性が高く、都市の成長に合わせて注意し、将来的に交通渋滞を緩和するために大きな道路に改修する必要があるかもしれません。

道路状況は事故の確率と移動速度にマイナスの影響を与え、事故のリスクを高め、交通速度を低下させます。
道路整備車両は冬季に道路を良好な状態に保ち、雪が降らないようにすることで、よりスムーズな交通と安全な移動を可能にします。

道路情報ビューで道路の状態を確認し、道路整備車両を探す

サービス車両

サービス車両は、建物や道路セグメントから注文を受けると目的地までの適切な経路を計算します。
車両が目的地に向かって走行すると、走行経路やその周辺に影響を与えます。
例えばゴミ収集車が次の目的地に向かってゴミを拾うように指示を受けた場合、走行中にゴミを拾うこともあります。
同様に道路整備車は現在の目的地に向かう途中で道路の区間を修復します。

パトカーや消防車などの緊急車両には、経路探索に影響する追加の規則があります。
彼らの行動は、市民や他のサービス車両、配達車両に比べて「より危険」であり、目的地までの経路が短縮されれば「違法な」Uターンをすることができます。
また可能であれば、他の車両は多車線道路で車線を切り替えて緊急車両に道を譲ります。

警察のパトロールは強盗や交通事故などの緊急事態が発生した場合にパトロール任務を無効にすることができるため(通過する地域での犯罪発生率を下げる)、行動に追加のルールがあります。

公共交通機関の車両は指定された路線を走行しますが、タクシーは例外として自家用車と同様の経路探索ルールに従って自由に経路を選択することができます。
初期はタクシー乗り場で運賃を受け取りますが、タクシー乗り場がアップグレードされると市内のどこでも運賃を受け取ることができます。

サービス車両の運行はプレイヤーが作成した地区に限定できます。
このような場合、車両は指定された区域内での命令や緊急時にのみ対応します。
すべての都市サービスは(デフォルト設定では)1つ以上の地区もしくは都市全体にサービスを提供できます。

緊急車両がより早く目的地に到着できるよう、可能であれば他の車両は道を譲る

他都市間の交通

このゲームでは外部接続から次の都市への接続へと至る、他の都市間の交通も特徴となっています。
この交通は都市の経済には貢献しませんが、都市が成長し高速道路が都市の道路網に統合されるにつれ、他都市間の交通が全体的な交通フローの一部になる可能性があります。
プレイヤーが2つの外部接続間に短いルートを構築した場合、それらの都市間の交通が経路探索としてコスト効率が高い場合において、この新しく作成されたオプションを使用するように変更されます。

端のタイルに到達すると、新しい外部接続を追加できる

おわりに

以上、今回の開発日記はここまでです。
Cities: Skylines IIにおける交通の挙動についてご理解いただき、理想的な都市の設計に役立つことを願っています。
交通AIはCities: Skylinesで繰り返し登場するトピックです。Cities: Skylines IIでのより高度で現実的な交通シミュレーションについてのフィードバックをお待ちしています。
来週は公共交通と貨物輸送、そしてそれらが皆さんの街とどのように統合されるかについて取り上げます。


今回の内容は以上です。

感想・まとめ

Cities: Skylines IIの開発日記#2を紹介しました。

1と2はそんなに大きく変わらないのではないか?と思っていた部分もあったのですが、今回紹介された交通AIは大きく良い方向に変わっており、またCPUがより積極的にマルチコアを活用するようになることで前作に比べて処理の向上も期待できそうですね。

もっとも交通「の一部」にマルチコアを使うとは書いてあるものの、その他の部分、交通以外の部分はどうなのか?ということも含めて考えないと、全体的な処理がどのくらいになるのかはわかりませんが…。

ゲーム内容は進化して、それでいて処理が軽いというのが一番の理想ですが、最終的に包括した時にどうなるのか?は気になる所です。

[画像引用元:パラドックスフォーラム内 Development Diary #2: Traffic AI]