大家好,火車是我們最喜歡的遊戲部分之一。我們之前已經討論過了如何改進鐵軌 (https://factorio.com/blog/post/fff-377) ,現在討論一下如何改進運行在鐵軌上的火車操控系統。
火車調度列表插入系統
目前控制火車的方式非常靜態,火車只是一一經過站點列表。唯一動態的部分是每個站點的等待時間,但沒有辦法根據正在發生的事件動態去其他的地方。
這種限制帶來的最明顯的問題是如何給火車加油。在 1.1 中,您需要確保每個調度列表都有一個同時也可以為機車加油的站點。例如,主基地的卸鐵站也有一個用於裝載燃料的插入器。但您擁有的路線越獨特,您需要的加油站就越多。
這有點無聊和重複,當你想改變燃料類型時就更煩人了。另一種辦法是設置一個專門的加油站,放在每個調度列表裡就可以了,但感覺很浪費。
我們希望火車的實際邏輯非常簡單:“只有當你的燃油不足時,才去專用加油站”。由於這感覺非常自然,我們在遊戲中實現了一個新功能,可以非常輕鬆地理清這種邏輯,我們將其稱為“調度插入”。
實現插入功能非常簡單,您只需指定觸發插入的條件列表,一個目標站點列表 + 等待條件列表就會添加到調度中。每當火車要離開當前車站時,它都會一一檢查和評估插入條件。如果滿足條件,則會激活插入,並將目標站點作為臨時停止站點粘貼到當前計劃中。
可用條件大多是熟悉的設置(滿/空貨物、電路條件、物品/液體計數等),以及一些僅對插入有意義的特殊添加條件。
而且我們應用了臨時車站的概念,僅用於手動將火車發送到某個地方。
臨時車站就像是一次性訂單,一旦火車離開臨時車站,該車站就會從調度時刻表中刪除。加油的例子是最初的動機,但它的工作方式顯然有更廣泛的應用。
普通列車
由於插入的條件裡有貨物,因此我們可以為每種類型的貨物進行插入操作,表明應該將其運送到哪裡。例如:如果你有鐵礦石,就去卸載鐵礦石,如果你有銅礦石,就去卸載銅礦石。
這意味著,具有此類插入功能的火車現在能夠處理您給它的任何貨物,因此它並不真正關心它是否應該裝載鐵或銅或其他物品。此時,沒有理由區分不同的裝載站,只要使用火車停靠站的限制條件,你可以將所有裝載站命名為相同的名字,並且只需使用一個調度列表來管理所有事情。
該功能的一大優點是,你的所有列車都能共享所有路線,因此你不必考慮 “裝銅列車太少了” 或 “我沒有足夠的環路列車” 等。因此,可以總結為,要麼已滿,要麼空。
車站問題
這一切看似都很好,但出現了一個新問題,即列車的可用性基於所有卸貨站是否擁堵。當某些資源或生產不足時,這可能會導致系統中的列車過多,我們需要一種方法來處理。
所以我們添加了一個特殊的插入條件,稱為“目的地已滿”,在所有物品都被佔用時觸發插入,火車將會前往到車站,因此不會阻塞當前車站。
我們的屏幕截圖中包含車站的編輯選項,這就是它們的用途。
插入系統影響全局
最初,插入系統是特定於每個調度列表的,但我們最終意識到,能夠在不同的調度列表之間共享相同的插入系統是一個非常好的主意。我們遇到了一個問題,例如,一旦我們想要將燃料從煤炭升級為火箭燃料,我們就必須檢查每個調度列表並更新插入系統,這不僅是一個很大的麻煩,而且經常導致一些火車狀態沒有更新。
因此,我們使插入系統在全局範圍內共享(通過其名稱進行標識),當您編輯了插入系統,所有具有該插入系統的列車都會發生變化。這使得它更加方便並且不易出錯。
插入系統出現插入
通常,當一個插入系統被激活時,在它完成任務之前其他插入將無法對其進行干擾。但在某些特定情況下,這樣的限制太大,因此我們添加了另一個特殊的插入條件,稱為“插入期間”。允許一個插入系統在另一個插入系統正在工作時仍可以被觸發,從而清除原始插入系統並用新的插入目標替換它。
在一些非常具體的情況下,這是至關重要的,它將出現在我們尚未透露的星球上,所以稍後會詳細介紹:)。
預訂系統的升級
更先進的插入系統在很大程度上取決於火車停靠的預訂站點。這可以防止系統中的所有火車都前往同一車站。
但系統存在一個小問題,甚至可能導致交通擁堵 / 鎖住,而在通用的調度列表中,這一問題變得更加重要。
問題是,一旦火車決定離開車站,插入系統會立即清除火車對這個站點的佔用,但同時仍然物理上阻塞車站。這使得另一列駛向車站的火車可能沒有足夠的空間等待而不阻塞主線。所以我們修復了這個問題,這樣火車只有在離開火車站所在的街區時才會放棄預訂站點。我很想知道其他人是否在 1.1 中也遇到過這個問題。
火車組
缺少火車組以及無法同時編輯多個調度列表很煩人,但在插入系統應用之前這些並不那麼重要,因為您實際上並不會頻繁更新/調整當前調度列表。
但對於插入系統和更通用的列車,您可能需要頻繁更新現有列車的調度列表/插入系統,因此顯然必須做出調整。該方法類似於我們在 2.0 更新中對其他分組更改所做的操作(物流組和插入系統)。
因此,對小組中一列火車的日程安排做出的任何更改都會更新整個小組。重要的是,這會忽視臨時停靠站點,因為它們是各個火車狀態的一部分(因此改變一輛火車的行程,將您帶到某個地方且不會破壞任何東西)。
只有在火車概覽中顯示小組才有意義。
因此,現在您只需放置一列新火車,將其設置為您想要的小組,然後就可以出發了。如果您有太多的單一類型的物品,您可以重新分配火車組並將其從載鐵火車轉變為載銅火車,而無需尋找一輛已存在的火車進行復制粘貼。
當您添加新的插入系統(以處理新的物品類型)時,它將被添加到組中的所有插入系統中,並且一切都會“正常工作”,而無需調整任何不必要的火車/調度列表。
根據目的地自動調整顏色
有一件之前的 FFF 報道中常被提到的事情。我們喜歡根據火車運送的物品來給火車上色,但在通用系統中,任何火車都可以運載任何東西,靜態著色是行不通的。
最初我們想以某種方式向調度列表 GUI 添加顏色,但這會很麻煩,因為每個車站都將需要另一種 UI 顏色( 當前的 GUI 已經不是那麼簡單明瞭)。
但我們意識到可以採用更自然的方法。因此,我們在機車顏色小部件中添加了一個簡單的複選框(默認情況下處於打開狀態),以根據目的地更改其顏色。
視頻:對火車操控系統做出改進
結論
我們多次被要求做“物流列車”之類的設計。但調度插入系統提供了一個更通用的選擇,物流列車只是您可以從中構建的東西之一。例如,您可以擁有一個系統,讓車站根據線路和插入條件來決定將列車發往何處。
它也更易使用,因為您可以使用插入系統來加油或做一些簡單的事情,同時仍然保持正常的調度列表。我們已經使用這個功能很長一段時間了,這是我們目前無法沒有的功能之一。
需要澄清的是,這是一個核心引擎功能,每個人都可以通過 2.0 基礎遊戲更新使用該功能。
還有更多即將推出...
我們並沒有就此止步,我們還為 2.0 準備了更多與火車相關的改進內容,但我們將不得不把它們留到另一天......
#steam遊戲# #開發日誌# #自動化# #基地建設#