這個系列主要是想用 Rust 寫一個類似 Cities: Skyline 的遊戲,希望透過比較高效能的編程語言 (i.e. Rust) 去做比較精細、真實的模擬。目前使用 Bevy 框架,以及他的 ECS 框架來實作。
車流系統包含路徑規劃、號誌、以及避免碰撞。路徑規劃分為兩個等級:路口節點以及變換車道。
預先計算的路徑規劃不會規劃變換車道,但是會記錄可行的車道。例如:車子在下個路口要直行,會記錄這個節點可以走最右側以及中間車道。
變換車道則由區域系統決定,這個部分由以下因素決定:
移動速度、方向
移動速度、方向,代表附近車輛正在移動的方向及速度。代表周圍車輛在很短時間內就會進入這個區域,屬於最高優先度的鎖。
意圖
附近車輛若要變換車道,會在一段時間前表示意圖。
優先度
不同的路口型態可以表示不同路徑的優先度。若車輛發現自己的優先度比其他車輛的意圖高,可以決定駛入(即成為 1.),鎖定該區域;若發現自己優先度較低且距離足夠,可以決定減速禮讓。
車輛的移動與意圖由曲線表示,預計使用曲線交叉檢測。變換車道則由車輛向道路進行檢索,及時建構出軌跡曲線。