【異星工廠】週五報道#379 - 重新佈線


3樓貓 發佈時間:2023-10-12 11:20:03 作者:Wube Software Language

【異星工廠】週五報道#379 - 重新佈線-第0張

讓我帶你參觀一下。這是我們的實驗臺,這是我們的工作凳。那邊就是我們的星際空間平臺!這裡是我們存放各種長度的電線的地方。

這是一個真正的實時太空平臺!

讓我們向您展示我們使用的一些不同長度的電線。


對電線杆進行改進

這將更像是一次技術之旅,一睹我們在添加功能時的幕後花絮,涉及到必須重構以允許實現更多功能的物品之一:手動幽靈線。


技術起點

第一次使用銅線可以在 2013 年的 0.2.10 版本的異星工廠版本中看到,實際上它們一直延續到 2020 年的 1.0.0。電線杆之間的銅連接是為了表明一個電線杆指向另一個目標電線杆 “我與這根電線杆相連”。

【異星工廠】週五報道#379 - 重新佈線-第1張

簡單的情況 - 相鄰的電線杆進行連接。

更準確地說,每個電線杆上有 5 個目標,因為靜態矢量比動態矢量更理想。

【異星工廠】週五報道#379 - 重新佈線-第2張

異星工廠 1.0.0 中的電線杆之間不能有銅線。


當一根電線杆被摧毀時,所有連接到其他電線杆的銅線都必須斷開,因為我們不能假裝“隱藏”在實體幽靈“外殼”中的實體仍然連接到網絡。

【異星工廠】週五報道#379 - 重新佈線-第3張

真實的電線杆不能與處於幽靈內的電線杆建立直接的“普通”連接,因為與連接相關的邏輯會變得混亂。


但為了能夠在藍圖中進行電線連接(普通和電路),我們必須添加一種從幽靈到真實實體的特殊單側連接。

【異星工廠】週五報道#379 - 重新佈線-第4張

幽靈的特殊數據結構,用於跟蹤其所連接的實體。在 FFF-362 (https://www.factorio.com/blog/post/fff-362) 中出現並在 1.1 中發佈。

【異星工廠】週五報道#379 - 重新佈線-第5張

如果兩者都是幽靈,他們就會雙向使用這種特殊的連接。


一開始這看起來是一個不錯的解決方案,因為我們在不影響基本電線杆功能的情況下將新的可能性“粘”在了幽靈上。換句話說,電線杆邏輯不必瞭解幽靈及其相關邏輯。


但實際上,隨著特殊情況開始堆積,這個解決方案已經開始出現問題。 

⚙ 當電線杆被摧毀時,您需要檢查幽靈是否沒有指向它,並更新其與包含新幽靈的連接。 

⚙ 當一根電線杆被複活時,還需要更新相應的相鄰幽靈。 

⚙ 製作藍圖時,需要從真實和幽靈處收集藍圖中的電線。 

⚙ 在任何需要檢查兩個事物是否連接(無論虛擬連接還是真實連接)的邏輯中,我們需要檢查連接可能存在的所有可能方式。這適用於拖線、自動連接、拔杆重新連接等。 

⚙ 這只是開始,因為我們只是考慮電線杆。


我們還有電源開關。開關+杆連接也是以自定義方式完成的,沒有 5 個連接的限制。

【異星工廠】週五報道#379 - 重新佈線-第6張

濫用電源開關,連接 6個電線杆。


因此,存儲連接的位置數量以及它們可以交互的組合是一場編程噩夢,也是為什麼總是存在一些特殊的極端情況,電線工作方式不同的主要原因。

類似的限制也適用於電路線。電路連接器只能存儲與其他真實電路連接器的連接,因此當創建幽靈時,它只是單向連接。這意味著與電路線及其處理相關的特殊邏輯也變得臃腫。


突破點

此時,kovarex 希望能夠手動將電線添加到幽靈杆上。經過一天無法準確地判斷要調用哪些函數來添加幽靈線之後,我認為技術債務太多了。重構迫在眉睫!我們需要把所有東西都扔到窗外,並提出一種全新的設計,可以一次可靠地解決所有問題。


實現

很明顯,最初的規則,即永遠不要用任何東西指向幽靈內的“死亡”實體,並不值得複雜化。一旦我們開始發現可以通過打破這個舊規則來實現的可能的簡化,就越來越明顯,這就是我們要走的路。事實證明,我們一直規避改變電網杆連接邏輯,以免在正常連接系統中出現幽靈時感到困惑,換句話說,我們構建了一個完整的基礎設施來保護該邏輯免受更改,而該基礎設施比僅更改原始邏輯要複雜得多。

我們認為這是一個很好的編程設計,但它卻讓我們走上了錯誤的道路。


統一

而且由於所有東西都可以以相同的方式連接,真實的、幽靈般的、電源開關、電路線等。我們可以將所有相關的連接邏輯封裝到一個 線連接器類中,並使一切比原來簡單得多。

【異星工廠】週五報道#379 - 重新佈線-第7張

隨著所有的變化,這樣的設置不再被認為是不可能的。


還有一些互動可以改進,哪怕只是一點點。當拖動帶有電路線的電線杆時,它也會拖動那些相關的電線。

【異星工廠】週五報道#379 - 重新佈線-第8張

完整視頻的鏈接在下面: https://cdn.factorio.com/assets/blog-sync/fff-379-wire-dragging.mp4


此外,電路重新佈線邏輯可以簡單地以與正常電線重新佈線相同的方式完成。

【異星工廠】週五報道#379 - 重新佈線-第9張

完整視頻的鏈接在下面:https://cdn.factorio.com/assets/blog-sync/fff-379-mining-rewiring.mp4


關閉

最後,經過兩週的重構。我坐下來完成了最初的任務,讓玩家即使在幽靈形態下也可以手動連接電線杆,只花幾分鐘即可。


我的電線在哪裡?

說到電線,我們注意到遊戲在繪製電線的方式有一些奇怪之處。一旦我看到這些問題,我就無法忽視它們。 

⚙ 長距離連接兩個“短”實體(例如插入器或箱子)的電線下垂得比實際應該的要低。 

⚙ 但那些影子是怎麼回事?為什麼它們向南下垂,而所有其他陰影都向東延伸?這樣不符合現實!

綜合起來,這些問題使得電線在遊戲世界中感覺格格不入,並且看起來像是粘貼在屏幕上的。那麼讓我們開始解決這個問題。

雖然遊戲是 2D 的,但我們確實對電線連接的相對“高度”有一些提示,即連接點和陰影連接點之間的關係。使用 Lua 定義中的這兩個偏移量,我們可以估計應該出現的最大線垂。

【異星工廠】週五報道#379 - 重新佈線-第10張

為了更好地傳達電線的位置,串在兩個短實體之間的電路線現在只會下垂,直到它們接觸地面。

【異星工廠】週五報道#379 - 重新佈線-第11張

電線陰影現在朝太陽下垂。當與其他陰影一起觀看時,它們感覺更自然且不那麼不合時宜。這兩項變化共同為遊戲世界中的電線提供了更好、更一致的高度和空間幻覺。

【異星工廠】週五報道#379 - 重新佈線-第12張

組合器之間的長距離連接應該更加清晰明瞭。

【異星工廠】週五報道#379 - 重新佈線-第13張

一旦看到有必要改進,就很難不注意到問題。小測驗:你能找出我接下來要解決的陰影問題嗎?


視頻遊戲的圖形、UI 設計、控制等方面的微小不一致可能會影響遊戲體驗,即使大多數玩家無法準確說明原因。大多數玩家永遠不會注意到電線的變化;但他們最終都會看到電線,並不知不覺地享受到好處。時不時地花點時間改進哪怕是最小的細節也能大大有助於讓一款優秀的遊戲變得更棒。作為獎勵,我們還可以減少一些有關該主題的錯誤報告。


抽象物品

異星工廠中的大多數物品都是美好而普通的,你可以將它們用作原料,用它們來建造機器和牆壁,其中一些物品甚至可以用來恢復你的健康。很簡單,也很有道理。

但隨著時間的推移,引入了一些新功能,這些功能具有一些獨特且特定的操作,而物品是玩家發現和使用它們的唯一自然方式。一些例子: 

⚙ 藍圖和摧毀器 

⚙ 紅色和綠色電線 

⚙ 放電防禦遙控器 

⚙ 火炮遙控器 

⚙ Spidertron 遙控器

這些是你需要製作才能使用的真實物品,它們佔用庫存空間,玩家死後會丟失它們,等等。您可能會有點驚訝地發現,當第一次添加藍圖時,您必須使用先進的電路來製作它們,並且擦除它們需要花費電路。

隨著時間的推移,我們逐漸決定,將所有東西都視為“真實物品”並不總是最好的遊戲玩法,隨著藍圖庫的引入,藍圖成為第一個“抽象物品”。這意味著您可以在需要時生成一個,並且可以將它們存儲在庫中,這樣它們就不會佔用寶貴的庫存空間(但您仍然可以將它們放在快捷欄上以方便訪問)。


奇怪的技巧和遠程交互

藍圖是很重要的,但其餘的此類物品被放置在了一個奇怪的地方。最奇怪、最煩人的是紅線和綠線。製作它們需要大量辛苦勞作的銅和鐵,但如果你拆掉某些東西,你就什麼也得不到。此外,如果您使用藍圖,則免費包含紅色和綠色電線。

“遠程交互”方面也開始變得奇怪。你不能從地圖上對某些東西進行紅線連接,但你可以獲取它的藍圖,在本地連接它,然後將藍圖放回頂部,電線就會神奇地改變。這真是令人沮喪和煩人。

最後,我們採取了一條很有意義的道路,即將這些全部變成可以免費生成的抽象物品,並且抽象物品可以在任何距離工作。這也適用於銅電纜,有用於配方的“真正”銅電纜,以及用於連接電線杆的“抽象”銅電纜。新的抽象物品自然地與快捷欄系統聯繫在一起,該系統正在充分發揮其潛力。

您可能還會注意到,快捷方式欄現在最多可以有 12 個插槽!

【異星工廠】週五報道#379 - 重新佈線-第14張

這些變化還提高了遠程做事的能力,遠程交互將是下一個 FFF 的重點。

【異星工廠】週五報道#379 - 重新佈線-第15張

#策略遊戲推薦#             #steam遊戲#            #pc遊戲#           #單機遊戲#          #多人遊戲#         #異星工廠#        #異星工廠 資訊#       #wube software#      #自動化#     #沙盒#    #開發日誌#   #基地建設#  #資源管理# 


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com