一款骨牌連鎖遊戲在固定的 5×5 格子上模擬真實的連鎖反應,你放置的每張直立骨牌,不是延伸連鎖反應,就是讓它在到達目標之前提前停止。在 Domino Chain Reaction 中,每個工作檯都以一張固定的 START 骨牌、一個目標鈴、一組外觀相同的開放格,以及一組嚴格的骨牌預算開始。你並非發射一顆移動中的球,也不是拖曳一個物理物件——你切換骨牌為直立狀態、規劃一條正交路徑,然後按下「Push the start」來確認。引擎接著會以確定性的廣度優先順序,從 START 開始走訪連通分量,並在棋盤上為每張到達的骨牌編號。如果連鎖反應及目標,你獲得 200 分。如果它停在缺口或散落的分支上,該回合會繼續進行,直到第二個真正不同的失敗佈局關閉遊戲為止。這種結合了刻意擺放、可見的傳播,以及精確計分的設計,正是這款骨牌連鎖遊戲與裝飾性物理玩具之間的差別。

若想了解啟發此連鎖隱喻的原始實體骨牌推倒藝術的背景,Wikipedia 上 domino effect 的概觀是個很好的起點。

falling dominoes game
骨牌連鎖遊戲:解讀編號的倒下順序

以三個階段進行一輪骨牌連鎖遊戲

  1. 檢視棋盤。找出 START 骨牌、目標鈴、每個開放格,以及顯示在格子旁邊的骨牌預算。開放格在按下之前看起來完全相同,因此不要尋找可能透露路徑的色彩提示、標籤或無障礙文字。
  2. 從兩端規劃路徑。確認哪些開放格與 START 共邊、哪些與目標共邊,以及需要多少擺放次數才能跨越剩餘的曼哈頓距離。提前計數可避免浪費擺放次數。
  3. 將骨牌切換為直立狀態放入開放格。點擊任何開放格以放置骨牌;再點一次即可移除。骨牌預算僅適用於你已放置的數量,START 與目標骨牌不會消耗預算。
  4. 逐格追蹤規劃好的序列。每次交接必須共用上、右、下或左邊。對角接觸永遠不會傳遞反應,單一空缺就會使該分支停止。
  5. 按下「Push the start」。引擎使用穩定的鄰居順序(上、右、下、左)從 START 進行確定性的廣度優先走訪。每張到達的骨牌都會旋轉為倒下狀態並在棋盤上編號。
  6. 解讀結果。成功的測試在到達目標時停止;失敗的測試在沒有任何新連通的直立骨牌時停止。編號序列清楚顯示連鎖反應傳播了多遠。

僅限正交邊:對角為何永遠不會倒下

這款骨牌連鎖遊戲中最重要的一條規則是,反應只會沿著共用的邊移動。一張倒下的骨牌只能觸發正上方、正右方、正下方或正左方的骨牌。角落接觸對傳播引擎而言是不可見的。這條規則在實務上有兩個重要意義。第一,它讓你能設計刻意的分支:如果你想要一個之字形轉折,你必須親自擺下執行正交轉彎的角落骨牌,因為沒有任何特殊的 L 形骨牌會為你轉彎。第二,它讓散落的分支變得可觀察。如果一張骨牌位於已放置骨牌對角一格的位置,無論看起來多近,連鎖反應永遠不會到達它。推倒後編號的倒下順序只會在缺口前的那張骨牌停止,而未來出現的單格近距離錯失,則是引擎自身測試中用來確認傳播正確停止的刻意設計。

擺放配置反應是否會傳?
已放置骨牌與倒下骨牌共用上、右、下或左邊是——計為連通骨牌
已放置骨牌僅在角落(對角鄰居)接觸倒下骨牌否——角落不會傳播
已放置骨牌距離兩格,中間有一個空格否——空缺會使該分支停止
已放置骨牌位於通往目標的連通路徑上是——會在倒下順序中編號
已放置骨牌位於無通往目標路徑的分支上一開始是——但它無法到達目標,會浪費一次擺放次數

解讀編號的倒下順序

當你按下「Push the start」時,引擎會走訪連通分量,並在每張到達的骨牌上寫下一個數字。第一張被標記的是 START 本身。下一張被標記的是依確定性順序——上、右、下、左——最先出現的連通鄰居。編號會持續進行,直到到達目標或連鎖停止。這個序列就是推倒後的成績單:如果目標是棋盤上最大的編號,該關卡即通過;如果最大編號停在鈴之前的某處,你可以反著讀這條鏈,找出使連鎖停止的第一個缺口、分支或散落骨牌。由於順序是穩定的,相同的擺放永遠會產生相同的編號,因此沒有任何動畫時間可以讓你反覆猜測。

Fall 記錄器也以精簡的位置標籤列出相同的序列,讓你不必盯著棋盤就能比較不同回合。兩個不同的停止佈局會結束該回合,因此在編輯擺放時保持記錄器開啟,觀察連鎖因每次變更而縮短或延伸,是值得的作法。

計分、失誤,以及 1,000 分的路徑

每個工作檯在連鎖反應到達目標時,精確給予 200 分。通過全部五個工作後,分數會精準凍結在 1,000 分,計算方式為 200 × 5 = 1,000。對於傳播很遠但未到達鈴的連鎖,沒有任何部分分數,引擎將第五關的成功視為達到最終分數的唯一路徑。

提早停止的推倒不會扣分,但會計入該回合的失誤預算。每個關卡允許出現兩個真正不同的失敗佈局,然後回合結束。如果你連續兩次推倒相同的擺放,引擎會對其簽名進行去重複處理,因此意外的重複點擊不會浪費失誤次數。至少更改一張骨牌後再試一次,新的停止佈局會計為第一次失誤。第二個真正不同的失敗會結束該回合。清除失敗紀錄的唯一方法,是推倒一個真正到達目標的擺放;接下來的工作檯就會以全新的狀態開啟。

Restart 永遠會執行精確的重置,回到第一關、分數為零、無已放置骨牌、無倒下序列、無記錄佈局、無終止狀態,因此 Restart 是整個回合(而非僅僅單一棋盤)的安全還原。封閉空間、固定端點、超出範圍的格子、預算溢出、通過的關卡,以及終止的回合,都是不可部分改變分數、擺放狀態或觀察序列的原子性無操作。

鍵盤、觸控,以及 390 像素的視埠

骨牌目標的高度至少維持 44 像素,因此完整的 5×5 棋盤能舒適地放入 390 像素的行動裝置視埠中。在觸控幕和滑鼠操作下,點擊任何開放格即可放置或移除骨牌。鍵盤操作限定於棋盤範圍:將焦點置於一個格子,以方向鍵移動可見游標,按 Space 切換可用格子,按 Enter 推倒。當焦點在 Restart、Push 或 Next workbench 時,原生按鈕行為會保持完整,而不會被遊戲快捷鍵攔截。

這款遊戲完全在瀏覽器中執行,擺放選擇、推倒、倒下序列、分數和失誤都不會被上傳進行處理。無需帳號、訂閱、伺服器請求或額外下載,因此這個謎題是一個輕巧的路徑規劃小憩、圖形走訪的入門練習,或是視覺推理的訓練——每一步擺放的後果,只有在連鎖開始時才會顯現。