當前位置: 華文問答 > 遊戲

國產遊戲【戴森球計劃】怎樣布局更科學高效?

2021-01-29遊戲

之前分享過福報工廠的立體工廠設計模式,由於【戴森球計劃】不支持【staticsfactory】的蓋樓房的模式(立體建築基本上只是同類擴容的作用,而且只有倉庫和科研可以擴),是沒法做類似的設計了,不過【戴森球計劃】的特點在於傳送帶和分揀器從初期開始速度就非常快,而且支持智慧過濾,分揀器占用面積非常小。比如說一般的建築的生產速度通常也就是幾十/min,而最高級的傳送帶傳送速度高達1800/min,富余的頻寬和智慧分揀模式提示我們可以考慮將各種產物混合在一條傳送帶上,從而極大提高布線效率。然而,一般的傳送模式中,這種設計會在其中一種產物過多的時候卡死整個傳送帶,通常是不可行的,這裏的方式是將整個傳送帶形成一個大環,讓所有的產物在傳送帶上迴圈執行,這樣只要放到環路上最終一定會被其他裝置消耗掉,不用擔心卡住的問題,需要解決的問題是如何限制放入環路的速度防止環路整體被堵死。

先占個坑,放個截圖看一下效果。這種設計的最大優勢在於驚人的布線效率,很小的面積上可以生產數量眾多的產物而不用過多考慮上下遊關系;主要的缺點在於整體產量受到傳送帶速度限制。

要達到這種效果,必須要在接入的地方有特殊的設計。

我們來具體講一下這種布局的原理

引言

本文中的環形匯流排接入的生產系統有以下特點:

  1. 極高的布線效率 :整體上只需要一條環形傳送帶就能完成所有生產裝置的接入,對傳送帶形狀沒有要求
  2. 自平衡 :產線上所有生產和消費可以自動形成平衡,在消費端消費速度發生變化(如接入了新生產裝置,倉庫已滿等)時可以使生產端自動適應,自動完成復雜的產量重分配任務,可以適應各種復雜工況
  3. 較為優秀的產量支持 :一條極速傳送帶(30/s)經過合理的配置可以同時支撐全部五種矩陣的生產,也就是說理論上一條極速傳送帶配合初級產物接入(鐵板/銅板/矽塊/玻璃/鈦塊/石墨/油等)就能生產最終產物白矩陣。當然,實際上建議合理分區為傳送帶保留頻寬,避免生產效率波動。
  4. 方便增加產物、產量 :因為環線只要是個環就行,沒有特別的形狀要求,因此要接入新生產裝置的時候,只要隨便找一段暴露在外面的環線,重新繞個圈,就能產生新的接入空間,要擴容也可以透過相同的方式。因為環線沒有嚴格的上下遊,所以理論上放在哪裏都可以。

要達成以上目的,需要采用特殊的產物接入方式,以下會進行介紹。

0. 基礎知識

首先需要了解一下這個遊戲中的物流系統的基礎知識:

  1. 傳送帶
    1. 一條傳送帶上,任意時間,只要當前物品前方(可以間隔其他物品)仍有空隙,當前物品就會按照傳送帶速度向前移動。如果沒有空隙則會停止。
    2. 上一條規則對於環形的傳送帶也成立,環形傳送帶是首尾相接的傳送帶,因為沿著傳送帶向前會回到原處,所以環形傳送帶上只要 至少有一個空隙 就會整體向前移動,如果一個空隙都沒有則會完全停止。
  2. 分揀器
    1. 分揀器的基本工作流程是從原位置等待和過濾器匹配型別的物品(如果分揀進生產裝置,會自動選擇生產裝置允許接受的物品),取到之後進行移動,移動到目的位置時如果目的位置有空位(倉庫有空格,生產裝置原材料儲備未到上限,傳送帶位置有空隙)則立即放下物品(不耗時)然後反向移動回原位置,形成一個迴圈。升級了堆疊後的極速分揀器,會在原位先連續抓起多個同類物品,然後再移動,在目的位置等待放下再返回,在傳送帶速度足夠快的情況下,可以近似認為分揀速度按堆疊數量成比例提升(實際略低一點點)
    2. 基於上面的原理,分揀到傳送帶的時候有個隱含的優先級:由於只有在有空隙的時候才會分揀,而傳送帶向前移動時,沒有空隙的物品之間不會臨時產生空隙,而是整體向前移動,因此分揀到傳送帶的分揀器 輸入優先級比傳送帶上遊低 。如果考慮輸出到同一條傳送帶上的多個分揀器,則上遊的分揀器優先級高,下遊的分揀器優先級低,如果發生阻塞,下遊的分揀器會先停止工作。這個特性非常重要,是下面設計的基礎。
    3. 分揀器的工作速度和分揀器型別、分揀器長度有關,最小0.5/s,最大6 * 堆疊等級/s。
  3. 倉庫
    1. 倉庫的輸入會從前往後找空格或尚未填滿的同類物品的格子,輸出則會選擇最後一個有物品的格子。因此倉庫如果輸入和輸出多種不同的物品,輸入和輸出的順序會發生變化。這種變化通常對於生產來說是不利的,如果所有輸入和輸出都設定過濾器,雖然能避免亂序,但是倉庫填滿之後有可能會導致其中一種產物完全耗盡而中斷傳輸。因此一般要避免多種產物接入同一個倉庫。
    2. 分揀到倉庫的多個分揀器沒有優先級差異,倉庫填滿時哪個優先是不確定的,這種不確定性通常有害,應當考慮配合傳送帶來明確哪個輸出更加優先。
  4. 生產裝置
    1. 生產裝置在兩種條件下會停止工作:原材料不足,或輸出堆積到最大數量。要讓生產裝置根據下遊的消耗量自動調整生產速度,原理就是要恰當地產生輸出堆積,從而間歇式停止生產來調整產量。
  5. 四向分離器
    1. 四向分離器也有比較強大的功能,而且可以設定過濾和優先級,但是考慮到它占用的面積很大,遠不如分揀器,因此這個方案中幾乎沒有使用到四向分離器

1. 環線接入限速裝置

要讓生產裝置接入環線之後能自動調整產量,關鍵在於一種反饋機制,即環線上多余的產物較多時停止生產,環線上多余的產物較少時繼續生產。思路是首先透過一個高速分揀器將環線上的產物取回到一條子傳送帶的上遊,然後再用低速的分揀器在子傳送帶的下遊重新放回環線,生產裝置的產物輸出到兩者之間,也就是子傳送帶的中遊。我們結合下圖看一下。

可以註意到圖中的CPU生產線,它首先輸出到一個倉庫,然後從倉庫左側輸出到了一段很短的傳送帶上,這個傳送帶上主要有三個步驟,上遊時一個配了過濾器的CPU分揀器,從環線分揀到子傳送帶,中間是從倉庫分揀到子傳送帶,下遊是輸出回環線,這裏為了控制速度用了一個長度為2的分揀器繞了一下。註意子傳送帶的方向和環路執行方向一致,因此放入環路的產物會繞一個大圈再回到上遊取回的分揀器中。

考察它的工作原理,首先考慮下遊沒有任何消耗的情況下,經過一段時間,放入環線的產物會再次被分揀器分揀到子傳送帶上,輸入速度和輸出速度一致,這時候子傳送帶上會產生堆積,向外輸出的分揀器會停止工作,而上遊從環路分揀回產物的分揀器仍然會繼續工作,這時候環路上的產物數量是固定的,而且遠小於環路的空隙數量。

如果輸出的產物被消耗,但是未完全消耗,則剩余產物被分揀器撿回,子傳送帶上的堆積情況被控制在生產裝置輸出的分揀器下方恰好有物品的程度上,因此子傳送帶上有:

上遊取回數量 + 生產裝置輸出數量 = 輸出到環線數量

再考慮整個環線,產物繞一圈被消耗掉一部份,然後再次被分揀器取回,平衡時有:

輸出到環線數量 = 環線上消耗數量 + 上遊取回數量

聯立兩個式子,就可以得到,當產線達到平衡時,有

生產裝置輸出數量 = 環線上消耗數量

這就是環線接入限速的原理。

當接入環線的速度不足,或者生產裝置生產速度不足時,則所有產物全部輸出到環線,環線上消耗不足使下遊生產裝置減速。

2. 幾個重要的數學原理

下遊完全沒有消耗時,環線上的產物數量取決於放置速度、環線長度和環線執行速度,運用簡單的數學可以得到:

環線上產物數量 = 放置到取回中的時間 * 放置速度 = 環線長度 / 環線執行速度 * 放置速度

我們要保證環線上仍然有空隙,也就是要求環線上總的產物數量之和 < 環線長度,註意到產物數量本身就和環線長度成正比,因此只需要考慮 產物數量 / 環線長度的數值,這個比值稱為 環線頻寬占比 。註意到在下遊完全沒有消耗時,它固定等於 放置速度 / 環線執行速度,因此我們把環線執行速度稱為 環線總頻寬 ,環線中產物傳輸的速度稱為 占用頻寬 ,單位都是個/s。極速傳送帶的頻寬是30/s,最低階的分揀器 + 3格距離占用頻寬為0.5/s,如果是最低階分揀器 + 1格距離則為1.5/s。

當整個環線所有的輸出全部都停止(比如說下遊倉庫全滿,沒有持續消耗)時,所有生產都停止,整個環線上所有的產物都會占用無消耗的全部頻寬,這就要求要讓生產線在任何情況下都完美執行,必須有所有接入產物的占用頻寬之和小於環線頻寬。不過實際設計時不可避免地會多占用一些,盡量在超載的情況下保持產線穩定的技巧會在後面講。

當下遊有消耗時,環線上不同位置的實際使用頻寬是不同的,從輸出開始時最大占用頻寬,每次消耗之後,占用頻寬都會下降。多數加工裝置的輸入材料總個數超過輸出材料總個數,因此多數加工裝置接入後,在生產裝置持續生產的條件下,會在一定範圍內降低環線的占用頻寬,不過如果下遊停止消耗,則會恢復最大頻寬占用。

如果每種材料只有一個位置接入,則接入頻寬就是下遊能夠消耗的最大速度,提高產量可以透過增加接入速度或者增加新的存取點來實作。

3. 環線部署實用技巧

環線接入時倉庫不是必須的,最小的接入單元就是一個加工裝置 + 3格子傳送帶 +3個分揀器,占用面積極小,因此接入效率也極高。倉庫在不同的接入位置可以有不同的作用,主要有以下幾種:

  1. 放在生產裝置到子傳送帶之間,如前面的圖,用於緩存本地產出,可以在下遊停止消耗時保持本裝置繼續執行直到倉庫滿,可以用來囤一部份產物用來手工加工之類
  2. 放在子傳送帶中遊和下遊之間,產物從環線取回,生產裝置接入,然後先分揀進入倉庫,再放到產線上,作用和1類似,區別在於在下遊停止消耗時,這種結構可以讓環線上所有的同類生產裝置都保持生產,直到倉庫滿為止,這樣一個倉庫就可以收集環線上所有的生產裝置的產物,其他生產裝置不需要再配倉庫。
  3. 放在子傳送帶上遊和中遊之間,即先分揀到倉庫,再從倉庫輸出到子傳送帶,生產裝置分揀到子傳送帶,然後再輸出到環線。這種設計不太常見,可以用於在調整接入速度的時候回收環線上多余的產物,提高環線穩定性,不過有下遊消耗的時候並不是特別必要,環線上多余的產物最終都會被消耗掉。
  4. 放在生產裝置輸入之前,用來提供額外的輸入材料的緩沖。可以用於穩定關鍵生產裝置的生產速度,避免受到臨時性波動的影響。

產物接入環線的速度主要受分揀器型別和距離影響,不過由於分揀器的工作原理,實際上會比標稱工作速度略慢一些,環線占用頻寬(包括這個產物本身的占用)越低,接入速度越接近於標稱速度;環線占用頻寬比較大時,接入速度會明顯低於標稱速度,這時候需要考慮重新調整各個生產裝置接入環線的速度了。

4. 環線過載的解決方案

雖然極速傳送帶有30/s的接入速度,接入產物多了之後還是會明顯看到過載的跡象;初期如果采用高速傳送帶,則只有12/s的速度,更容易過載。有明顯過載跡象時需要用各種手段來解決。

第一步,首先檢查各個產物的實際生產和消耗速度,可以透過統計報表檢視。如果產物的實際消耗速度並不高,可以降低接入速度來減小頻寬占用

對於消耗量大的產物來說,最妥當的方法是采用多點接入的策略,多點接入的方法是在環線不同位置都有同一產物的接入,可以是鐵塊、銅塊這樣的初級產物,也可以是中間加工的產物。每個接入的地方采用獨立的接入限速。要點在於,讓產物的消耗分布在多個存取點之間,這樣就可以做到使用較低的頻寬來實作較大的傳輸速度。

比如說,下遊對某個產物有60/min的消耗,分別是3個生產裝置,各自20/min。如果采用一個存取點,則至少要占用1/s的頻寬。如果采用三個存取點,分別在三個裝置之間接入,每個存取點的接入速度為0.5/s,則整體只占用0.5/s的頻寬就實作了60/min的消耗。

如果對某個產物的消耗比較大量而集中,另一個策略是改用傳統方式使用專用線來接入,即拉一條專用的傳送帶從生產的點傳輸到消費的點,只傳輸一種產物,這樣就不再占用環線頻寬。這種方式可以跟環線相互配合,同一個產物既有專用接入,也有一定量從環線接入,同一個生產裝置某些產物用專用線,某些產物走環線,很靈活。規劃時可以將這種關系比較近的生產裝置盡量安排在比較近的地方。

產量增加之後如果頻寬還是不足,可以考慮分代的策略,將產物按一定標準分拆成不同的環線,通常是按照科技樹上的位置。上一代產物在下一代產線中用到的,透過限速接入的方式,從上一代環線中接入到下一代環線,下一代產物在下一代環線中使用,這樣就分別占用獨立的頻寬;還可以將生產裝置放在兩條環線之間,從兩條環線分別獲取產物。星際運輸發達之後,可以考慮按照中心產物規劃成不同的生產體系,相互之間使用運輸站傳輸輸入輸出,這樣就能支撐更大的產量了。

5. 實際結果

前面圖中的遊戲中,幾乎所有的合成產品,除了非常初期的幾種以外,都使用環線合成;最高級的幾種產物(重力矩陣生產線)建立了第二條環線。目前已經解鎖了全部五種矩陣(綠色矩陣尚未生產),掛機數小時驗證證明產線可以穩定執行。

建議經常關註生產圖表,確定有沒有消耗超過生產的物品,尤其是礦因為會采完,需要經常去開新礦。


通關之後補充

要達成遊戲最終需要的產能,單獨一條環線是不可能做到的,還是需要搭配一些其他的生產方式,環線在這裏最大的優勢在於對於靈活性,可以經常調整來生產各種各樣的東西,尤其是各類建築這樣用量不大但是還有一定用量的,可以充分利用環線上的剩余來生產,只要利用某種產物溢位的一點點產能就可以了。

對於後期大量需求的如CPU、量子芯片、重力透鏡、火箭系列產線,還是新建新的專用的生產集群比較好,環線可以作為一些補充,比如說集群裏用量較少的從環線生產輸出出來,或者將最終生產出的比較少的產物回饋到環線上,降低環線的頻寬占用。

比如上圖就是藍馬達、重力透鏡、CPU、量子芯片的量化生產集群,布置得比較傳統一些,輸入輸出用空運的方式連通。適當配合稀有礦物的話不會特別復雜。

而對於沒有辦法用稀有礦物最佳化的極長的生產流程來說,環線仍然是很好的選擇。