紅石電路

出自Minecraft Wiki
於 2025年3月16日 (日) 14:21 由 TeaSummer對話 | 貢獻 所做的修訂 (回退182.111.208.89留言)所做的编辑:将有信号视为0;将无信号视为1。)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

  本條目介紹的是紅石電路。關於其他紅石相關條目,請見「紅石(消歧義)」。

紅石電路(Redstone circuits)為玩家建造的,可以用於控制或啟動其他機械的結構。

電路本身既可以被設計為用於回應玩家的手動啟動,也可以讓其自動工作——或是反覆輸出訊號,或是回應非玩家引發的變化,例如生物移動、物品跌落、植物生長、晝夜更替等等。Minecraft中能夠被紅石控制的機械類別覆蓋很廣,小到最簡單的機械(如自動門與光開關),大到佔地巨大的電梯、自動農場、小遊戲平台,甚至遊戲內建造的電腦。了解如何構建和使用紅石電路及其可控制的機制能極大地增加Minecraft中可遊玩的深度。

紅石電路的主題非常廣泛,本條目只是紅石電路的一個概述。點擊各章節的主條目可以查看詳細資訊。

基本概念[編輯 | 編輯原始碼]

在描述基本的紅石電路之前,需要先了解一些基本概念。

紅石元件[編輯 | 編輯原始碼]

主條目:紅石元件列表

紅石元件是紅石電路的基礎,通過有目的性地使用紅石元件即可構建出簡單或複雜的紅石電路。

紅石元件大致分為三個大類。

電源(訊號源)
  • 電源為整個電路或部分電路提供訊號來源,在電路分析中通常被認為是只進行輸出的元件
    • 因為這類元件的輸入來源並非紅石電路,而是外部干預。例如玩家按下按鈕;實體觸發壓力板(即便觸發由於紅石電路主動干預);隨着時間和遮擋變化的世界光照強度等。
  • 按鈕拉桿紅石磚壓力板日光感測器等。
傳輸元件(傳輸者、電容器)
機械元件(消費者)

位置[編輯 | 編輯原始碼]

幫助毗鄰方塊
幫助以曼哈頓距離度量的「兩格以內」範圍

一個方塊佔據一個正方體的空間,正方體有6個面。也就是説與一個方塊的六個面直接接觸的方塊有6個,稱之為「與該方塊毗鄰的方塊」,簡稱毗鄰

一個方塊的毗鄰和毗鄰的毗鄰(即與這個方塊的曼哈頓距離為兩格以內的方塊),通稱為這個方塊的二階毗鄰。一個方塊的毗鄰的毗鄰共有19個方塊(包括它本身),二階毗鄰共有25個方塊(包括它本身)。

四周一般指的是與該方塊東西南北四個面相接觸的4個方塊。

紅石線、紅石火炬等方塊需要附着在其他方塊上,一旦所附着的方塊被破壞,它本身也會跌落。它們所附着的方塊簡稱為它們的附着

一些電源和傳輸元件有它的指向中繼器比較器的指向就是輸出端所朝向的方塊,紅石火炬的指向是正上方的那一個方塊,紅石粉的指向通常與它的紋理的朝向相同,但也有特殊情況。

電路與機械[編輯 | 編輯原始碼]

兩個術語通常都用於指包含紅石元件的結構,但兩者具有一定區別:

  • 電路(circuit)為處理訊號的結構(產生,傳輸,計算)。
  • 機械(mechanism)會干預世界(與方塊和實體互動)。

不會干預世界的電路被稱為「靜態電路」,通常不包含機械。

  • 因為其工作完全「靜態」,不會對世界產生任何影響。

相反地,會干預世界的電路被稱為「動態電路」,可以由任意元件構成。

  • 因為其工作會對世界產生影響。
  • Java版中,使用半連接性(QC)的電路歸屬於動態電路,因為只有部分機械元件具有半連接性。

所有動態電路一定具有機械,因此也可稱為機械電路。但靜態電路可能具有機械(例如單純用於顯示計算結果的紅石燈)。參見下文基本種類章節。

訊號與脈衝[編輯 | 編輯原始碼]

訊號,正負邏輯

紅石電路能夠產生訊號

通常,「有/無訊號」時稱為「1/0」、「True/False」或「高電平/低電平」。這種邏輯被稱為「正邏輯」。

也存在「負邏輯」,其對應關係相反,即:

  • 有訊號視為0;將無訊號視為1

負邏輯是一種特殊的設計手法,通常是為了最佳化電路指標(譬如降低體積、延遲、卡頓)而有意為之。

邊沿

上邊沿/上升沿指紅石訊號由無到有的變化瞬間;下邊沿/下降沿指紅石訊號由有到無的變化瞬間。

相位

相(Phase)代表相位,指邏輯代數中的「相同」與「相反」(例如「1」與「0」互為反相)。

脈衝

當訊號出現一個較為短暫的「0-1-0」過程,該過程通常被稱為脈衝(或正脈衝。「1-0-1」的過程被稱為負脈衝)。脈衝持續的時間長度被稱為脈衝的長度。另見下文§ 脈衝電路

嚴格意義上,脈衝的訊號強度和長度並不受限制,也不存在脈衝持續時間超過一定值就不稱作脈衝的説法。比如在實際的紅石系統中,一個長度超過30秒的脈衝仍可稱作脈衝。同時也常用長脈衝/短脈衝的説法區分不同長度脈衝。

訊號強度[編輯 | 編輯原始碼]

訊號強度通常為0到15的整數。紅石線能向相鄰的紅石線傳導訊號,但每傳導1格,訊號強度會降低1點。因此,連續紅石線最遠能將訊號傳遞15格。為了傳輸更遠,可以使用紅石中繼器將訊號強度強化為15,或使用紅石比較器保持訊號強度不變。

訊號強度會因紅石線間的直接傳導而衰減,但也可以通過測重壓力板日光感測器或直接控制輸出不同的訊號強度。

紅石比較器實際上可以接受和輸出小於0或大於15強度的訊號。如命令方塊的成功次數超過15或容器內的物品超過堆疊限制,紅石比較器會把它們作為強度小於0或大於15的訊號進行比較或作差後輸出。

Java版中,由於紅石粉會規制訊號強度(小於0的訊號會直接被無視,大於15的訊號會變成15),因此強度小於0或大於15的訊號不能輸出到紅石粉上,只能直接使用紅石比較器連結成鏈傳輸。

基岩版中,由於訊號傳遞基於有向圖,紅石粉不規制訊號且只用於構建圖中的邊。因此強度小於0或大於15的訊號可以輸出到紅石粉上,且衰減也會被正確計算,但最遠只能傳遞15格。

充能[編輯 | 編輯原始碼]

主條目:充能與啟動

部分方塊能夠被充能及解除充能。當紅石訊號作用於一個方塊時,若該方塊毗鄰的所有機械元件都可以被啟動,那麼這個方塊就被稱為紅石導體,該行為被稱為充能。被充能的方塊叫做充能方塊。大多數紅石導體都是不透明的方塊。

強充能與弱充能[編輯 | 編輯原始碼]

充能分強充能和弱充能:

  • 當紅石導體被紅石元件(如中繼器比較器紅石火炬等)充能。那麼它能夠啟動毗鄰的紅石線和其他元件,這樣的充能即為強充能(Strongly Charging)
  • 當紅石導體被紅石粉充能。那麼它只能夠啟動毗鄰的其他元件,不能啟動其他紅石粉,這樣的充能即為弱充能(Weakly Charging)

被強充能的方塊所表現性質和紅石磚大體相同,但紅石磚不是紅石導體,且可以改變紅石線的形狀和指向、向紅石比較器邊側輸入訊號[僅Java版],而強充能方塊不能。

充能方塊無法再去充能其他方塊,只有電源和傳輸元件才可以去充能一個方塊。

充能等級[編輯 | 編輯原始碼]

使用多少訊號強度的訊號去充能一個方塊,我們就説這個方塊有多少充能等級。被強充能的方塊有多少充能等級,就可以啟動毗鄰的紅石粉至多少訊號強度。充能等級的大小與充能的強與弱完全無關。

啟動[編輯 | 編輯原始碼]

主條目:充能與啟動
紅石燈的啟動

機械元件和紅石元器件可被電源、充能方塊和傳輸元件以特定的方式啟動,引發機械元件和紅石元器件的反應(如活塞推動方塊,開紅石火炬熄滅等)。

有些機械元件只會在剛被啟動的瞬間有所反應,直到取消啟動並再啟動之前都不會再有所反應(如脈衝型命令方塊執行命令,投擲器發射器投擲或發射物品,音符盒播放一個音符)。其他機械元件會在啟動時始終保持狀態,直到取消啟動(紅石燈保持點亮,保持開啟,漏斗保持鎖定狀態,活塞保持伸出等)。

所有機械元件都可以被下列方塊啟動(例外:活塞不會被其活塞頭朝向的方塊一般啟動):

  • 毗鄰的,處於開啟狀態的電源
    • 例外:紅石火炬不會啟動其附着的機械元件,偵測器不會啟動除其指向以外的方塊。
  • 毗鄰的充能方塊(強充能與弱充能均可)
  • 指向該機械元件的、輸出訊號的紅石比較器紅石中繼器
  • 指向該機械元件的、啟動的紅石粉,包括附着其上的紅石粉。(毗鄰的、但未指向機械元件的紅石粉不會啟動機械元件)
半連接方式啟動——在Java版中活塞也可以被能夠啟動活塞之上空間的東西啟動。請注意,最左側的活塞並未被半連接啟動,因為紅石粉沒有直接指向活塞上方的方塊,因此無法啟動該活塞

部分機械元件可以用其他方式啟動(QC啟動):

  • Java版中,發射器投擲器活塞可以被以下方式啟動:即如果上述4種方式作用於該機械元件正上方的那個方塊(無論是何種方塊,即使是空氣也無妨),該機械元件也會被啟動。正如的下半部分那樣。這種情況也可以表述為:該元件可以被斜上方或上方2格的方塊啟動。右圖即為這類啟動方式的例子。 這種方式被稱為半連接
  • 佔2格空間,啟動任意一半,另一半也會被啟動。

充能與啟動[編輯 | 編輯原始碼]

主條目:充能與啟動
充能與啟動——上方的紅石燈既被「啟動」(因此紅石燈點亮),也被「充能」(因此毗鄰中繼器被啟動),但下方紅石燈只是被「啟動」,並未被「充能」

對於屬於紅石導體的機械元件(包括命令方塊投擲器發射器音符盒紅石燈等等),既可以被充能也可以被啟動。因此區分它們是被啟動還是被充能相當重要:

  • 如果它能夠啟動毗鄰的紅石元器件和機械元件,那麼它就被充能了。
  • 如果它本身作出了一定的反應,那麼它就被啟動了。

機械元件只要被充能就一定也會被啟動,但被啟動並不會一定會被充能(如被毗鄰的充能方塊啟動)。

不是紅石導體的機械元件(閘門活塞漏斗路軌地板門等等)可被啟動並作出反應,但因為不具備紅石導體的性質而無法被充能。

方塊更新(狹義)[編輯 | 編輯原始碼]

當一個方塊的狀態發生改變時,該改變會引起周圍方塊的方塊更新

Java版中,紅石電路的運作依賴於方塊更新機制。單次方塊更新會使周圍的其他紅石元件接收到「附近發生變化」的提示,以檢測自身是否應該發生變化。若自身也發生了變化,將又會對周圍發出方塊更新。更新引起變化、變化創造更新,達成連鎖反應,電路不一定能達到完全穩定的狀態。

Java版中,充能並非遊戲內部的機制,因此,不管是否被充能或解除充能都不能產生方塊更新。元件發生變化時,會更新周圍足夠範圍內的方塊以使電路正常工作(例如,壓力板更新其毗鄰及其附着的毗鄰)。

除方塊更新外,紅石比較器還可通過其後方兩格內的容器(包括上有儲物箱礦車的感壓路軌)和某些其他方塊的變化(例如物品欄裏的物品發生變動)進行更新;偵測器還可檢測某些方塊變化而進行更新。

以下為Java版中的通常情況下的方塊更新範圍:

下列紅石元件會產生二階毗鄰範圍的方塊更新:

幫助拉桿的毗鄰及其附着的毗鄰(包括它的附着)

下列紅石元件產生的方塊更新範圍是其毗鄰和附着(或指向)的毗鄰:

幫助指向及指向的毗鄰

以下的紅石元件的更新範圍是指向及指向的毗鄰(除該元件本身位置):

下列紅石元件產生的方塊更新範圍是其毗鄰、其上方方塊的毗鄰以及下方方塊的毗鄰:

下列紅石元件產生的方塊更新的範圍只有它的毗鄰:

下列方塊的狀態更改時不會引發方塊更新:

紅石系統[編輯 | 編輯原始碼]

本段落所述內容僅適用於基岩版
簡要介紹

基岩版使用「有向圖」數據結構儲存與管理紅石電路,稱為紅石系統。該有向圖實現上採用了鄰接鍊表(而非鄰接矩陣),所以有時亦稱「鄰接表」。紅石電路的運作主要依賴於紅石系統,同時也受方塊更新的影響。

紅石系統會儲存所有紅石元件,記錄元件間連接方式及衰減(源碼中稱作「阻尼」),快取周圍部分實體方塊的資訊。每2遊戲刻,紅石系統就進行一次訊號更新,計算和設定各個紅石元件的紅石訊號。動力路軌觸發路軌的衰減計算也基於圖,但使用了另一個值。

部分細節[編輯 | 編輯原始碼]

紅石元件在源碼中被分為4類:訊號源、電容器、消費者和傳輸者。

訊號源

訊號源為只能輸出訊號的元件。

電容器(是一類特殊的訊號源)

電容器為既能輸入訊號,又能輸出訊號的元件。

傳輸者

傳輸者只負責傳輸(構建圖中的有向邊,連接各個元件),只有紅石粉。在圖構建完成後可被忽略(不影響訊號正常計算)。

消費者

消費者為只能輸入訊號的元件。

  • 消費者具有一個屬性「晉升為訊號源」,用於允許被強充能的消費者(如發射器)被強充能時的訊號計算。

當發生的方塊更新可能涉及到紅石元件時,遊戲會將其加入待變更列表。當元件經過了訊號處理且輸出發生了變更,其會將自身的下游元件加入待計算列表

目前刻為紅石刻時,紅石系統以如下順序工作:

訊號源/圖更新階段

更新「待變更列表」內的元件的有向圖(如活塞推拉方塊截線或取消截線);處理紅石系統依賴(如比較器檢測容器);計算訊號源元件的訊號(如拉桿被玩家開關)。同時將可能導致輸入變更的元件加入待計算列表。

電容器階段

對「待計算列表」中的電容器元件進行訊號計算。同時將其下游元件加入待計算列表。

消費者階段

對「待計算列表」中的消費者元件進行訊號計算,若元件需要做出某些特定回應(如活塞準備推出,發射器發射物品)將在下一遊戲刻(非紅石刻)進行處理(消費者更新階段幾乎在更新階段序列的最後部分)。

各個計算階段間具有「同步鎖」,即本次處理的結果,在完全完成該階段的處理後才可用

電容器階段的同步鎖先於消費者階段的計算生效,訊號源階段的同步鎖則先於前二者生效。該邏輯會導致如下特性:

  1. 同一紅石刻內,任意訊號源階段導致的訊號變化可無延遲跨越1個電容器元件影響消費者元件。
    • 意味着任何時候都可絕對穩定地進行一次「無延遲訊號中繼」:用活塞操作有向圖連結,在訊號源更新階段完成一次訊號中繼。
  2. 上一紅石刻產生,但在該紅石刻的訊號源階段被阻斷(由於圖更新)的訊號變化無法傳入電容器更新階段,該變化因此無法影響電容器元件。
  3. 同一紅石刻內,電容器更新階段前產生,但在電容器更新階段被阻斷的訊號變化無法傳入消費者更新階段,該變化因此無法影響消費者元件。
  4. 活塞推拉可充能容器時,容器到位後的首個圖更新階段會被視作紅石導體更新有向圖,下個圖更新階段(1rt後)才能作為紅石系統依賴接入比較器。

因為上述邏輯的性質,所以通常會將訊號進行分類:

  • 由訊號源階段導致的訊號變化(如訊號源元件發出的訊號,圖更新時接通或阻斷連接),稱為「訊號源級訊號」。
  • 由電容器階段導致的訊號變化(電容器元件發出的訊號)稱為「電容器級訊號」。

在延遲計算時,需要考慮該性質所造成的影響。

拓展[編輯 | 編輯原始碼]

儲存、載入與卸載

紅石系統的有向圖數據不存入存檔數據(為了節省存檔佔用空間),每次進入存檔後載入區塊時重新搜尋有向圖。因此只加入玩家載入過的區塊中的元件。所以即便在某個區塊放置了大量元件,只要未載入其所在區塊,這些元件就不會進入圖,也就不會拖慢遊戲速度。

同樣,若某個區塊已經被載入過,其中的元件及連結就已被加入圖。即便該區塊被卸載,元件數據與連結也不會被刪除,仍能正確進行訊號計算,包括所有機械元件(只是無法回應訊號並工作)。因此靜態電路可以抗卸載工作。

圖欠缺穩定性

有的電路會被微時序擾動所影響,例如:

  • 特殊狀態的火炬高頻可被圖的重搜影響;
  • 對臉偵測器高頻會被計劃刻優先級和區塊影響工作狀態。
圖搜尋算法缺陷

即便很反直覺,但有的元件的確無法改變紅石粉指向(如標靶活塞)。它們只能將自身和連接到自身的元件組成的有向邊額外加入圖(如輸入直連標靶的中繼器、比較器、火炬),而不能干預圖的搜尋走向。這是由於線路連接優先級高於充能連接導致的(優先處理線路搜尋,處理完線路連接再處理充能連接。且如果線路連接和充能連接指向同一元件,直接選擇線路連接的結果,而無視充能連接的結果(即便充能連接的衰減較低)。

這個優先級特性可用於構建圖更新檢測器[1]

效能對比

由於不產生圖更新時紅石粉相當於「不存在」,元件輸出藉助連結數據和衰減「直達」輸入。節省了大量串行計算。

  • 因此在靜態電路中,基岩版紅石粉的效能開銷相較Java版紅石粉具有壓倒性的優勢。

但由於有向圖選用的數據容器和圖搜尋算法的缺陷,大量地增刪元件或改變連接時,會產生相對較大的效能開銷。且紅石系統的工作效率可能隨之降低。可能造成遊戲卡頓,但也可以通過專門的設計來儘可能減小圖更新數量與圖的重搜的效能開銷。

  • 因此在動態電路中,基岩版紅石粉的效能開銷相較Java版紅石粉相等甚至更大。

紅石刻[編輯 | 編輯原始碼]

主條目:

紅石刻(Redstone tick)簡稱rt,也就是2遊戲刻(如果沒有卡頓等於0.1秒)。

Java版中,因為多數紅石元件需要2的整數倍遊戲刻改變狀態,所以紅石刻曾被定義為Minecraft更新紅石元件狀態的最小時間單位,曾被玩家在紅石電路中廣泛使用。隨着對遊戲機制的進一步了解,現在常把遊戲刻(game tick簡稱「gt」)作為最小時間單位。

基岩版中,紅石元件的訊號通常每隔1遊戲刻計算一次。因此紅石刻既可以作為時間單位使用,等於2遊戲刻;也可以用「紅石刻」和「非紅石刻」兩個名詞來指代某一遊戲刻,以區分該遊戲刻是否更新紅石訊號。

電路體積[編輯 | 編輯原始碼]

通常使用長×寬×高的格式(電路的外切長方體)描述電路體積,其中包括底層用於附着的方塊,不包括輸入訊號或輸出訊號的方塊或結構。單位為方塊(Block),簡稱b。

描述電路體積的另一種方法是忽略最下層支撐電路的那層方塊(例如位於最下層紅石粉之下的方塊)。然而這種方法無法區分平面電路一格高的電路

對於某些電路,其單個的體積可能相對較大,但大量堆疊時可相互「穿插」,最終體積小於單元體積×堆疊數量。

電路特徵[編輯 | 編輯原始碼]

根據不同的設計目標,應當考慮一些常見的特徵:

1格高電路

1格高電路只有1格,也就是説這種電路不能使用需要附着的元件(如紅石線紅石中繼器)。

1格寬電路

1格寬電路指至少1個橫向尺寸為1的電路。亦稱單片電路

平面電路

指可以直接建造在地平面,無需層疊元件(不計紅石元件的附着)的電路。平面電路通常利於初學者理解與學習。

無痕電路

指可以完全隱藏在一堵牆,或地板之下,或天花板之上的電路(即無痕跡電路)。特點是開啟/關閉時不外露電路元件,這類設計常用於活塞門。

無延遲電路

指一接到輸入訊號,即時改變輸出的零延遲電路(事實上仍然有延遲,只是小於1gt)。

無聲電路

指不會發出聲音的電路。這種電路不會有活塞發射器地板門等會發出響聲的元件。此類電路適合陷阱、安靜環境以及需要減噪的電路的建造。

可堆疊電路

指同樣的電路可以一個直接疊在另一個的旁邊或上方的電路,疊放之後各個單元可以被一個總輸入控制。

可並列電路

指同樣的電路可以一個直接疊在另一個的旁邊或上方的電路,疊放之後各個電路之間不會互相干擾。

其他可能的設計目標

包括降低子電路延遲、減少昂貴元件消耗(如偵測器)、儘量減小體積等。

基本種類[編輯 | 編輯原始碼]

根據電路的原理、功能以及實現目標,中文區玩家將其分為6大類和其他種類。

數碼電路[編輯 | 編輯原始碼]

數碼電路,簡稱數電,即通過遊戲所給的紅石元件與邏輯機制(或、非)來實現邏輯運算。數碼電路一般基於二進制運算法則和邏輯運算來實現各種運算,從而實現各種複雜的計算機和電腦。數碼電路在現實中是一門學科。如果沒有知識基礎與思維基礎,數碼電路對普通玩家來説較為複雜高深。

數電分為三派:傳統數電、現代數電和無延遲數電。

傳統數電
  • 傳統數電只使用靜態電路來完成整個電路的邏輯,只在電路輸出處使用動態電路
    • 例如一個使用活塞屏顯示結果的四則運算器,按照定義,它只能在活塞屏處使用動態電路。
現代數電
  • 現代數電仍然要求電路主要邏輯使用靜態電路,但允許合理地運用動態電路(例如使用牆電或光電)來提升電路效能。
    • 例如:使用光電的佔地僅16區塊、訪問時間1~4秒的10Hz雙通道讀寫16384位元組RAM。在儲存陣列密度高達2方塊/位數據的前提下具有如此速度和頻寬,該電路效能傳統數電無法企及。
無延遲數電
  • 由於無論在傳統數電或現代數電中,完全的無延遲均被排斥,因此無延遲數電獨立成派。無延遲數電通常追求無延遲前提下特殊的實現:更小的體積或是更低的卡頓;亦或是驗證一些極其複雜的數學邏輯在Minecraft中的可行性(若不採用無延遲電路意味着時間開銷過高)。
    • 例如:無延遲四則計算機、無延遲邊沿邏輯計算體系、10Hz中央處理器等。

數電相較於模電,速度較快,體積稍大。

模擬電路[編輯 | 編輯原始碼]

模擬電路,簡稱模電,即利用比較器的比較或減法模式來對訊號強度進行處理與運算。

模擬」意為「連續變化」。但Minecraft的紅石訊號實際在強度和時間上都是離散的(例如不存在11.45強度的訊號,也不存在長度無法度量的訊號),這類訊號以及相關的處理電路邏輯在現實中稱為多電平邏輯(歸屬於數碼電路)。此處使用「模擬」一詞是為了區分訊號有無訊號強度的傳輸與計算。在現實生活中,數碼電子技術(一般是二電平邏輯,僅有高或低電平)與模擬電子技術(重在連續變化的電勢)間的區別與其最為相似,因此「模擬」與「數碼」的叫法被廣泛採用,但請記住其和現實中有所區別,切勿混為一談。

紅石模擬電路主要分為「弱訊號模擬電路」(弱模)和「強訊號模擬電路」(強模)。

  • 弱模基於0 ~ 15的訊號強度進行處理與運算,進制規則一般基於16進制或10進制。
  • 強模利用比較器允許超過15訊號強度的特性,使用0 ~ 2,147,483,647的訊號強度進行處理與運算,進制規則取決於具體電路設計。

部分模擬電路也會使用小於0的紅石訊號進行計算。

模電相較於數電速度稍慢,體積稍小。

機械電路[編輯 | 編輯原始碼]

機械電路,簡稱械電,即利用活塞、黏性活塞、發射器等的種種遊戲特性來實現目標的電路。

根據設計目標,可分為高速械電和高壓械電等。高速械電優先追求速度,其次追求減小體積(比如0.15s開門的2×2無痕玻璃門)。高壓械電優先追求減小體積,其次追求速度,所以通常時序複雜(比如體積僅760方塊的6×6活塞門,開關門共75分鐘)[2]

飛行器科技[編輯 | 編輯原始碼]

主條目:Tutorial:飛行器

飛行器科技,又稱航械、史萊姆方塊技術(綠萌)、活塞蟲等。飛行器科技脱胎於械電,利用活塞和史萊姆方塊/蜜糖塊實現可單向或多向航行的機械,也能用來可移動的其他類型的電路,例如世界吞噬者、移動向量炮、移動3×3門等。

生存實用電路[編輯 | 編輯原始碼]

生存實用電路,簡稱生電。生電的定義範圍較廣泛,通常集數電、模電、械電三家之長,主要特點是為生存模式服務,因而追求耗材少、卡頓低、穩定性強等。

儲存電路[編輯 | 編輯原始碼]

儲存電路,又稱儲存科技,簡稱儲電,是指南針對容器和物品進行處理的技術,內涵很多版塊,例如:盒子科技、礦車科技、物品編碼科技、分整流技術等等,是一門龐大而綜合的電路,與生存結合得很緊密,但也有創儲這一以創造為主要玩法的儲電形式。

TNT大炮[編輯 | 編輯原始碼]

主條目:Tutorial:TNT大炮

TNT大炮基於對於TNT實體的研究與模型建立,炮膛設計等。

向量炮[編輯 | 編輯原始碼]

向量炮即利用正交分解,通過控制兩個互相垂直炮膛的TNT數量,來實現控制兩個互相垂直且作用於彈頭的同一點上的力,以實現精確的打擊效果。

基本電路[編輯 | 編輯原始碼]

雖然建造電路的方法無窮無盡,但特定功能的電路建造樣式是比較固定的。下面的章節對一些電路進行了分類,每個章節有獨立的主條目用於描述具體的電路設計方案。

某些電路可能只能完成最簡單的控制功能,但只需要將數個此類簡單電路組合,便能組成複雜的、能夠滿足目標的大型電路。

脈衝電路[編輯 | 編輯原始碼]

主條目:脈衝電路

一些電路需要特定的脈衝來工作,也有一些電路用脈衝傳達特定資訊。在這樣的環境下,脈衝電路派上了用場。

在一個狀態穩定,另一個狀態不穩定的電路通常稱為單穩態電路(monostable circuit)。大多數脈衝電路屬於單穩態電路,因為它們的啟動態(非穩態)只能持續較短時間就回到穩定態。

  • 脈衝發生器:產生特定長度的脈衝。
  • 脈衝限制器:可以縮短過長的脈衝。又稱脈衝縮短器。
  • 脈衝穩定器:可以延長過短的脈衝。又稱脈衝延長器。
  • 脈衝延遲:能夠為脈衝提供延遲(部分脈衝延遲會改變脈衝長度)。
  • 邊沿感應器:在訊號變化時輸出脈衝:從0到1(「上升沿」感應器)或從1到0(「下降沿」感應器),或兩者均感應(「雙邊沿」感應器)。
  • 脈衝長度識別器:能夠在輸入脈衝長度在某個範圍內時輸出訊號。

時鐘電路[編輯 | 編輯原始碼]

主條目:時鐘電路

時鐘電路為持續、重複提供特定長度脈衝的脈衝發生器。一些時鐘電路自動工作,另一些則可控工作。

從一次脈衝的開始到下一次脈衝的開始,這段時間的長度被稱為時鐘電路的週期。在一個週期中,一次脈衝的長度與這個週期的總長度的比值叫做占空比,占空比並非越高越好。

簡單的時鐘電路只有兩個等長的狀態(占空比為50%)。例如1rt啟動,1rt非啟動的時鐘(2rt週期時鐘)。

時鐘

使用中繼器比較器甚至紅石火炬組成鏈,使鏈的頭尾相接組成環,以此作為時鐘電路。組成環的元件數量決定了環的週期。具有兩種設計:旋轉環(單純使訊號在環內旋轉,易於理解)、反相環(在旋轉環的基礎上使訊號每週期反轉,同樣的元件數量下週期長度是旋轉環的兩倍。通常需要比較器紅石火炬以獲得反相功能)。

漏斗時鐘

漏斗時鐘通過漏斗鏈循環傳遞物品,並通過紅石比較器偵測輸出。漏斗時鐘的體積與耗材極小。

活塞時鐘

利用活塞或黏性活塞對方塊的推拉延遲建造時鐘。活塞時鐘的耗材較高且占空比通常難以控制(例如建造一個單週期占空比50%的活塞時鐘通常極為困難)。

偵測器時鐘

擺放兩個觀察端彼此相對的偵測器,在其後擺放紅石元件即可。

其他時鐘設計

時鐘電路也可以基於唱片機日光感測器礦車、跌落物品的自然消失、的流動等。

傳輸電路[編輯 | 編輯原始碼]

主條目:傳輸電路

利用多種傳輸元件與遊戲機制,我們能構建出滿足各種需求(如高密度、高速度、高吞吐量、低卡頓等)的傳輸電路。

訊號中繼器[編輯 | 編輯原始碼]

訊號中繼器的目的是讓「中繼」訊號,即讓訊號傳輸更遠。最簡單的中繼器就是紅石中繼器,它使訊號強度變為15以傳輸得更遠。也可以使用如下電路:

  1. 瞬時中繼器:在不引入延遲的情況下中繼訊號。
  2. 雙向中繼器:具有兩個端口,都具有輸入輸出(可以從來回兩個方向中繼訊號)。

二極管[編輯 | 編輯原始碼]

「二極管」指只允許訊號單向傳輸的電路,通常用於防止線路反向傳輸訊號引起的:錯誤觸發、線路串擾或延遲紊亂。常用的無延遲二極管有:半磚、玻璃或漏斗等。

有的元件本身便具有單向性,因為它們的輸出端不接受輸入訊號(例如紅石中繼器、紅石比較器、紅石火炬等)。

縱向傳輸電路[編輯 | 編輯原始碼]

雖然橫向傳輸較為簡單直接,但有時我們更需要縱向傳輸來滿足需求。此處列舉一些簡易的縱向傳輸電路:

向上縱向傳輸
向下縱向傳輸
基岩版中的雙向垂直梯
紅石樓梯

最簡單的縱向傳輸就是在斜向上的方塊上鋪設紅石線,或是使用2×2的螺旋結構等等。紅石樓梯支援向上向下傳輸訊號,無延遲,但佔地較大,傳遞至多15格就需要中繼訊號。

紅石梯

因為熒光石、倒置樓梯半磚上方能夠放置紅石線的同時不會隔斷紅石線,訊號就能夠在2×1的「梯」上縱向傳輸,但僅能向上載輸,這也相當於一個縱向的二極管。紅石梯佔地小,無延遲,但每15個就需要中繼。在基岩版中,可以通過玻璃或活塞構建1×2的梯式縱向雙向傳輸。紅石梯速度極快但佔地稍高。

火炬塔

紅石火炬能夠充能其上方的方塊並啟動毗鄰的紅石元件。利用該特性,縱向傳輸便成為可能(向上與向下的設計不同)。火炬塔耗材低且佔地少,但延遲較高。

偵測器導線

利用偵測器可以檢測其他偵測器,組成一條偵測器鏈,可以構建一條任意方向的傳輸線路。偵測器導線延遲極高但佔地極小。

但是,可以使用可啟動且可被檢測的方塊(如發射器投擲器地板門閘門漏斗音符盒活塞動力路軌觸發路軌紅石燈等)來增加偵測器間距而延遲不變,還能在此基礎上加入紅石粉與紅石導體來再次提升偵測器間距。進而壓縮偵測器鏈所使用的偵測器數量(並提升速度,部分情況下還能降低卡頓)。所使用的可啟動且可被檢測的方塊也會使得偵測器導線具有不同的延遲與特性。

模電傳輸電路[編輯 | 編輯原始碼]

通用傳輸方案

若需要無損傳輸訊號(即保留原有訊號強度)。通用傳輸方案自然是首選。

最基礎的模電導線,最高Nrt傳輸2N格。它通常有些慢
利用強弱充能提速的更快的模電導線,最高Nrt傳輸4N

直接使用比較器充能紅石導體或紅石線,再啟動下一個比較器再充能下一個紅石導體或紅石線(由此循環往復)直至到達目標位置。還可以利用方塊的強弱充能來增加傳輸距離。

如果需要上下傳輸模電訊號,可以利用紅石粉可以充能下方的紅石導體的特性來讓訊號無損下傳(且允許2高堆疊);上載線路則需要通過比較器強充能輸出處的紅石導體並充能上方紅石粉來完成(無法2高堆疊,會串線)

通用傳輸方案的靈活性極高,耗材中等,但速度極慢。

中繼器傳輸方案

若需要長距離快速地傳輸模電訊號,將其轉為二進制訊號再傳輸是一種可行的方案,但這會帶來額外的轉換延遲以及轉換器的體積(並大幅增加耗材)。下面介紹一些能夠簡單快速地直接傳輸模電訊號的方法。

  • 利用Minecraft紅石本身的衰減特性,搭配紅石中繼器,便能建造一種最快的模電導線。

  • 世界上最快的模電導線,Nrt可傳輸14N+1格。灰色是輸入,黃色是輸出。

  • 以二叉樹形式佈置的快速模電導線,僅用1rt便可將輸入送達全部8個輸出。灰色是輸入,黃色是輸出。

這種模電導線非常強大,最大吞吐量高達10Hz且允許訊號上下傳遞,還能像紅石梯一樣佈置。

這種設計還可以在強度範圍小於0~15時可以無視部分「線損」來減少所使用的元件數量,以此來在速度不變的前提下降低卡頓與耗材。

中繼器傳輸方案的靈活性稍低,耗材稍高,但速度極快。

雜項傳輸電路[編輯 | 編輯原始碼]

日光感測器傳輸

這種傳輸技術也被稱為光電。原理是利用在晴天的白天太陽光無遮擋時恆為15級亮度,可以構建一條僅白天的無視豎直距離無延遲豎直傳輸路徑(其他方向難度大、距離短),稱為「光路」。只需要使用活塞推拉方塊或發射器(組)控制流體來控制光路的遮擋,就能控制在此光路中的日光感測器輸出訊號。日光感測器遮擋控制器也被稱為光控。光電的特點是傳輸連續訊號。

Java版中,日光感測器每1s更新一次(最高可實現1Hz訊號傳輸);在基岩版中,日光感測器每1rt都會更新(最高可實現10Hz訊號傳輸,需使用4個黏性活塞或3個發射器構建的10Hz專用光控)。

實體傳輸

主要包括利用彈射、墜落、氣泡柱升降移動實體到感應位置,可以自帶復位(兩個單項的收發反向重合),可以實現穿牆傳輸,通常距離越遠實體速度越快,延遲通常較難計算,需對遊戲機制有一定了解。實體傳輸的卡頓通常稍高但能極大拓展布線可能性。

傳輸

利用Minecraft牆體的模型機制與偵測器可以檢測牆體模型更新,可以使用牆體搭建一條豎直下傳線路並用地板門控制。這種技術稱為牆電。特點是傳輸訊號邊沿。

牆電在Java版中是無延遲下傳的,在基岩版中則是1gt下傳1格,偵測器。

樹葉傳輸[僅Java版]

利用偵測器可以檢測樹葉連接或斷連原木,可以使用樹葉搭建一條任意形式的線路並用活塞或粘性活塞與原木控制。這種技術也稱為樹電。特點是傳輸訊號邊沿。

樹電的最大傳輸距離為7個樹葉。

氣泡柱傳輸

利用偵測器可以檢測氣泡柱變化,可以通過搭建一條完全豎直的水柱並於底部通過活塞或黏性活塞控制靈魂砂岩漿塊控制氣泡柱進行上載傳輸。這種技術也稱為泡電。特點是傳輸訊號邊沿。

泡電在Java版中是無延遲上載的,在基岩版中則是1gt上載1格。

邏輯電路[編輯 | 編輯原始碼]

主條目:邏輯電路

通過判斷輸入訊號是否滿足邏輯,滿足則產生特定輸出。這類電路即為人們耳熟能詳的邏輯門

邏輯門輸出
顯示每個輸入A與B(綠色)的組合所對應的邏輯門的輸出(紅色)
A 對應語言表述
B
非A A為0嗎?
A或B 有輸入為1嗎?
A或非B 輸入均為0嗎?
A與B 輸入均為1嗎?
A與非B 有輸入為0嗎?
A異或B 兩個輸入不同嗎?
A同或B 兩個輸入相同嗎?
A蘊含B 若A為1,B也為1嗎?
  • 非門(即「反相器」):輸入與輸出相反。
  • 或門:任意輸入為1時,輸出為1。
  • 或非門:任意輸入為1時,輸出為0。
  • 與門:所有輸入都為1時,輸出為1
  • 與非門:所有輸入都為1時,輸出為0。
  • 異或門:輸入不同時,輸出為1。
  • 同或門:輸入相同時,輸出為1。
  • 蘊含門:僅當第一個輸入為1,第二個輸入為0時,輸出為0。

其中非門為一元邏輯(具備單個輸入)。

其餘邏輯門均為二元邏輯(具備兩個輸入)。

或門輸出取反即為或非門。與門輸出取反即為與非門。

異或門與同或門可以於任意輸入輸出加入非門來轉換(總數須為奇數個才可轉換,總數為偶數個邏輯不變)。

記憶電路[編輯 | 編輯原始碼]

主條目:記憶電路

與邏輯電路只反映輸入訊號不同,記憶電路的輸出不單與輸入相關,還與「過去的輸入」相關。這樣能夠完成對電路過去狀態的「記憶」。在現實生活中的電子學中,鎖存器(Latch)指對輸入訊號的某個狀態產生反應的電路;正反器(Flip-flop)指對輸入訊號的變化產生反應的電路。有很多記憶電路可供選擇,下面是常見的幾種。

RS鎖存器

RS鎖存器用於狀態寄存。具有輸入Set(簡寫S,設定狀態)與輸入Reset(簡寫R,重設狀態),輸出O與輸出O'(O和O'的狀態總是相反)。當輸入S為1:輸出O為1,O'為0;當輸入R為1:O為0,O'為1。

RS鎖存器有兩種邏輯結構:兩個或非門或是兩個與非門,在Minecraft中可以使用兩根火炬實現RS鎖存(其為Minecraft最古老也是最常見的記憶電路)。

T正反器

T正反器用於訊號切換(類似拉桿)。具有輸入Input(簡寫I)與輸出Output(簡寫O)。當I滿足條件(為0?為1?上升沿?下降沿?)時翻轉O的狀態(1變為0,0變為1)。

D正反器

D正反器用於儲存。具有一般輸入Input(簡寫I)與時鐘輸入Clock(簡寫CLK)以及輸出Output(簡寫O)。當CLK為1時將O設為I的狀態,當CLK為0時O會保持原有狀態。

D正反器可以視作RS鎖存的升級版(且D正反器的確可由RS鎖存實現),中繼器實際上也是D正反器,但CLK被取反。

JK正反器

與RS鎖存器相似,但RS鎖存器不支援R端和S端同時為1,而JK正反器在J端和K端同時為1時則翻轉輸出訊號(1變為0,0變為1)。現實中用它來實現T正反器,在Minecraft中大多用於便於寫入的計數器。

雜項電路[編輯 | 編輯原始碼]

主條目:雜項電路
隨機訊號發生器

隨機訊號發生器能夠隨機產生無法預測的訊號。一些隨機訊號發生器利用了Minecraft的隨機特性(如仙人掌生長,發射器投擲器對執行欄的選擇),活塞互推的優先級[僅基岩版];另一些則通過實現數學上的偽隨機算法來實現。

示波器

分為數碼示波器與模擬示波器:數碼示波器為多個中繼器依次連接組成的中繼器鏈,據此能夠通過點亮的中繼器直觀地測量脈衝長度。亦或者直接觀察數碼串行數據串;模擬示波器則是多個比較器依次連接並在每個比較器間佈置強度顯示器來構成,能直觀測量脈衝能量強度。亦或者直接觀察模擬串行數據串

計數器

計數器(Counter)是用於記錄輸入滿足條件次數的裝置,二進制計數器(或稱數電計數器)通常由級聯的T正反器構成,因此其計數條件與選用的T正反器的滿足條件相關。而模電計數器(進制為3~16不等)通常由模寄存器與進位判斷構成。

方塊更新探測器

方塊更新探測器(Block Update Detector,縮寫為BUD)即將方塊更新(例如石頭被挖掘,水變成冰,南瓜長出等等)作為輸入,檢測到輸入後執行特定反應的電路。單穩態BUD反應為輸出脈衝,而T-BUD(雙穩態BUD)反應為切換輸出狀態(也可以用單穩態BUD搭配T正反器實現)。偵測器也被認為是單穩態BUD的一種。在Java版中,BUD通常依賴於活塞。Tutorial:方塊更新感應器有更多資訊。

選擇器和分配器

選擇器(也稱多路選擇器、數據選擇器、集線器),擁有多個輸入一個輸出以及選擇輸入C,通過C的輸入決定輸出哪個輸入。

分配器(也稱多路分配器、數據分配器、分線器),擁有一個輸入多個輸出以及選擇輸入C,通過C的輸入決定輸入接入哪個輸出。

搭配選擇器與分配器,可以構建一條數據總線可讓任意輸入端連接到任意輸出端(並省去大量的專用傳輸線路),同時允許的連接數取決於設計通道數

建造電路[編輯 | 編輯原始碼]

計劃[編輯 | 編輯原始碼]

建造紅石電路的第一步是確定電路能做些什麼。

  • 應該在哪裏控制整個電路?如何控制?
    • 電路是由玩家控制,生物移動控制或是其他控制方式?
  • 電路能夠實現什麼樣的功能?
    • 照明、推動方塊/生物、識別物品或其他?
  • 訊號如何從控制端傳向機械?
    • 需要將多個來源產生的訊號組合到一起嗎?

建造[編輯 | 編輯原始碼]

建造電路時使用特定的方塊組合是個不錯的習慣,以便於區分電路的範圍。常見的選擇有石英鐵磚、染色方塊(如羊毛混凝土陶瓦等)不同的方塊便於區分電路的不同部分。

當在液體附近建造電路時要注意。很多電路元件會被液體破壞。

建造包含TNT的電路(如陷阱或大炮)時要格外小心。建造中的電路可能會意外點燃TNT,因此請控制放置TNT的時間。例如,如果將紅石火炬放置在被充能的方塊上,它將不知道它應該關閉並且可以短暫地為電路提供訊號,直到下一遊戲刻。在電路的其餘部分完成後放置TNT將有助於避免此類問題導致的機器損壞。這也適用於可能通過這種動作意外啟動的電路的任何其他特徵(例如,在電路準備好之前先啟動發射器或準備好電路後再填入發射器內容物)。

解決問題[編輯 | 編輯原始碼]

當電路出問題時,仔細檢查,嘗試尋找出問題的來源。

  • 是否在從一個弱充能方塊引出訊號?也許需要紅石中繼器使其強充能,或者用紅石中繼器引出訊號。
  • 是否讓紅石訊號穿過了一個紅石絕緣體?用紅石導體代替它,或者繞道而行。
  • 是否無意中建造了一個短路電路,使得本來應當啟動的紅石火炬燒毀了?修正短路電路,並更新紅石火炬的狀態。
  • 本不該啟動的電路部分是否錯誤啟動了?也許不小心把不同部分的線路之間連了起來。
  • 活塞、發射器或投擲器的啟動方法是否錯誤?

電路優化[編輯 | 編輯原始碼]

電路正常工作後,考慮一下是否能夠提高電路的效能。

  • 能讓電路反應更快(延遲更低)嗎?
    • 減少訊號傳輸中不必要的元件,如中繼器,紅石火炬。
    • 最佳化電路邏輯,將「輸入」-「結果」路徑縮短。
  • 能讓電路更小嗎?
    • 能否使用更少的方塊?
    • 能否最佳化傳輸路徑走線?
    • 最佳化電路邏輯,儘可能減少無效體積。
  • 能讓電路更穩定嗎?
    • 電路高頻工作時依然能正常工作嗎?
    • 電路在頻繁地啟動/非啟動交替下依然能正常工作嗎?
  • Minecraft新版本的特性是否有助於提高電路的效率?
  • 電路雜訊能小一些嗎?
    • 能儘量少用發出聲音的方塊嗎?
  • 能夠減少任何卡頓嗎?
    • 許多紅石元件經常改變狀態,導致大量的光照計算、聲音、粒子繪製,從而導致計算上或繪製上卡頓,能否嘗試抑制這些無用計算?
    • 是否能鎖漏斗控制其只在需要工作時嘗試吸取和輸出?能否在漏斗上放置堆肥桶使漏斗卡頓最低化?[僅Java版]

參考[編輯 | 編輯原始碼]

導覽[編輯 | 編輯原始碼]

遊戲內容[顯示] [編輯]