--- tags: - CAGE_dev_log - CAGE - rust - bevy - game_dev --- # CAGE Dev Log - Day 1 這個系列主要是想用 Rust 寫一個類似 Cities: Skyline 的遊戲,希望透過比較高效能的編程語言 (i.e. Rust) 去做比較精細、真實的模擬。目前使用 Bevy 框架,以及他的 ECS 框架來實作。 ## Roadmap ### 短期 - Implement traffic system with predefined car spawning point and dispawning point - Implement pedestrian - Implement road editor ### 中期 - Split into server and client so we can play it remotely. - Implement Citizen - Add public transportation ## 目前進度 - 實作 camera - 實作曲線的簡單渲染。 ![curve](https://hackmd.io/_uploads/SJuF0vY-A.jpg) ## Traffic 車流系統包含路徑規劃、號誌、以及避免碰撞。路徑規劃分為兩個等級:路口節點以及變換車道。 預先計算的路徑規劃不會規劃變換車道,但是會記錄可行的車道。例如:車子在下個路口要直行,會記錄這個節點可以走最右側以及中間車道。 變換車道則由區域系統決定,這個部分由以下因素決定: 1. **移動速度、方向** 移動速度、方向,代表附近車輛正在移動的方向及速度。代表周圍車輛在很短時間內就會進入這個區域,屬於最高優先度的鎖。 2. **意圖** 附近車輛若要變換車道,會在一段時間前表示意圖。 3. **優先度** 不同的路口型態可以表示不同路徑的優先度。若車輛發現自己的優先度比其他車輛的意圖高,可以決定駛入(即成為 1.),鎖定該區域;若發現自己優先度較低且距離足夠,可以決定減速禮讓。 車輛的移動與意圖由曲線表示,預計使用曲線交叉檢測。變換車道則由車輛向道路進行檢索,及時建構出軌跡曲線。