【異星工廠】星期五報道#392 - 藍圖參數化


3樓貓 發佈時間:2024-01-11 17:18:01 作者:Wube Software Language

大家好,

下面我將要介紹我剛剛完成的一個功能。 這個想法我已經想了好幾年了。 我一直覺得這個功能太過硬核而不應該被遊戲收錄,但我認識到我低估我們的玩家了,這是一個我經常犯的錯誤,於是我自己又試了一下,並決定立馬在這裡分享給大家。


動機

最普遍激勵我做這件事的例子是火車卸貨站。 通常情況下,我都會在藍圖中進行整體設置:鐵軌、火車停靠站、避免汙染從而被篩選出來的機械臂等。 這很好,但每次構建藍圖時,我都需要針對目標項目重新配置所有過濾插入器,還要更改停靠站的名稱,非常繁瑣。

星期五報道#392 - 藍圖參數化-視頻01

建立一個又一個站點是一個漫長而枯燥的過程。


對此在 1.1 版本中有兩種解決方法: 

⚙ 使用信號網絡,但感覺有點矯枉過正(稍後詳述),而且目前也無法通過信號網絡設置火車站名字。 

⚙ 為每個項目設計一個特定的藍圖,這聽起來像是一場噩夢。


藍圖參數化

這自然引出了我們想要的定義: 我們希望有一個藍圖,它沒有特定的項目配置,而是通用的,並允許您在每次構建時對其進行不同的配置。 問題是,除非我們只在乎這一特定功能,否則如何在不增加不必要的界面雜亂的情況下實現它?

重新配置現有藍圖

拼圖的第一塊是重新配置現有藍圖的工具。 為簡單起見,讓我們以這樣配置的常量運算器為例:

【異星工廠】星期五報道#392 - 藍圖參數化-第0張

當我們繪製藍圖時,現在就可以訪問用於重新配置的主要新工具了。

【異星工廠】星期五報道#392 - 藍圖參數化-第1張

這個界面裡第出現的第一個也是最簡單的用法是將藍圖中出現的某些東西或數字全部改為其他內容。比如我想把藍圖中所有使用 [X] 信號的地方都改成 [Y],只需在界面中更改數值並確認即可。藍圖就這樣被重新配置了。 

更改藍圖中的所有東西也是一樣。 

實際上,實體中的所有設置和數字都可以通過這項功能重新配置。比如:被篩選出的機械臂、裝配器配方、信號網絡設置、運算器的配置、物流需求區、揹包篩選器,甚至格式文本圖標。 

最後一個例子可以用來更改列車停靠站的名稱,只要你在其中添加格式文本部分即可。 

這已經是一個進步了,因為在建造之前,你可以隨時將藍圖重新配置為不同的項目,但這仍然不夠好。

參數

第一步是為物品、配方、流體和實體定義特殊 ID稱之為參數。

【異星工廠】星期五報道#392 - 藍圖參數化-第2張

這些在“參數化”中產生的參數沒有任何意義,它們只是用於藍圖的通用配置。通常情況下,在遊戲中藍圖配置菜單之外的任何地方都無法選擇它們,但對於高級用戶而言,有一個界面設置可以讓這些參數在任何地方都可用。 

因此,回到最初的藍圖,我們可以這樣重新配置它:

【異星工廠】星期五報道#392 - 藍圖參數化-第3張

在這裡,我將 3 個 ID 都指定為參數,並將兩個項目中使用的數字 5 也指定為參數。填寫其名稱不是必要的,但有助於用戶在構建藍圖時知道下一步需要什麼。 

每當您嘗試以這種方式構建藍圖時,都會出現一個小對話框,要求您為這個特定的藍圖實例填寫參數:

【異星工廠】星期五報道#392 - 藍圖參數化-第4張

我十分注重細節,所以當參數被指定時,您甚至可以預覽是您的構建是如何變化的。


星期五報道#392 - 藍圖參數化-視頻02

參數被選擇,則Alt 圖標也會隨之更新。


一旦按下確認鍵,藍圖就會按照所需的配置創建。


星期五報道#392 - 藍圖參數化-視頻03

利用這些參數從而輕而易舉地設置站臺


從屬參數

到這裡已經很有用了,但我覺得還是不夠好。為什麼呢?因為有時參數是相互關聯的,而迫使藍圖用戶總是正確填寫這些參數並不算是一種很好的方式。

 

 我說的從屬關係是什麼意思?比方說,我有一個藍圖是需要 3 種原料(參數 1、2、3)來製作物品,並需要從火車網絡中獲取原料。

 當然,我可以製作一個大型裝置,其中有 3 個輸入站,每個輸入站的參數設置為其中一個輸入,還有一排組裝機,參數設置為製作所需的物品(參數 0)。

 但是,每當我想構建這個藍圖時,我就必須記住並手動填充所需物品的 3 種成分,這不僅會拖慢我的構建速度,而且還有出錯的可能性。


 這就是為什麼可以自動將參數配置成為另一個參數的組成成分,而不是直接填入的原因。

【異星工廠】星期五報道#392 - 藍圖參數化-第5張

參數 1、2、3 被設置為參數 0 的組成成分,因此在構建該藍圖時,只需輸入參數 0 的值,其餘值將自動填寫。


從屬數字

有了數值配置,從屬關係的設置方式就更方便了,因為數學關係則是天然存在的! 

讓我們看看這個例子:

【異星工廠】星期五報道#392 - 藍圖參數化-第6張

我們有一個藍圖,其中有 3 個數值:100、101 和 200。但出於某種原因,我們只想讓用戶修改 100 的裝置數值,但第二個數值比該裝置數值大 1,第三個數值是第一個數值的兩倍。 

這就是為什麼每個參數化的數值都可以分配一個變量,其值可以在數學公式中用於所有後續的從屬數字。 

因此,在本例中,如果您(在構建藍圖時)將 100 填成 10,那它將自動將 101 設置為 11,而將 200 設置為 20。


結論

有人曾多次將 《異星工廠》與編程相提並論,而這只是一部分類比而已。幾乎所有藍圖參數化都可以通過電路網絡邏輯來完成,因此看起來這樣的類比幾乎是有些多餘的。

 

 在編程中,編譯時函數執行與運行時函數執行是並行的。基本上,如果在編譯程序時就已經知道了計算結果,那麼每次通過運行程序時得到計算結果的操作就太沒必要了,還不如直接將數字放入程序中。這就好比我們知道,這種設置總是會過濾掉鐵齒輪,所以為了簡化構建過程而圍繞它製作一個電路網絡邏輯,感覺有點太浪費了。

 

 我很想聽聽您對這項功能的反饋意見。是否有些太過了?是否可以理解該功能?您迫不及待地想要使用該功能嗎?請通過常用社交渠道告訴我們吧。

#steam遊戲#     #開發日誌#    #自動化#   #基地建設#  #異星工廠 資訊# 


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