Domino Chain Reaction 是一款以瀏覽器為基礎的骨牌倒塌遊戲,在五個固定的 5×5 工作台上進行,鏈式反應只會在共用上、右、下,或左邊緣的方塊之間傳遞。你在開放的格子上立起骨牌、研究自己建構出來的幾何配置,然後推動單一一個 START 方塊,看引擎依照你的擺放,實際跑出一連串有順序的連鎖反應。這款遊戲並不是真實骨牌倒塌的物理模擬;它是一個帶有確定性規則的抽象網格謎題,其中一個方塊只能撞倒緊鄰在它正上方、正下方,或正側邊的鄰居。斜角接觸絕不會傳遞反應,一個空缺會讓某條分支中斷,而目標鈴,是唯一能讓這一輪成功結束的目標。五個工作台,全都使用相同的緊湊棋盤、相同的操作方式,以及相同的計分公式,因此難度來自空間推理,而不是操作方式縮水,或規則改變。因為這個引擎完全在你的瀏覽器中執行,玩 Domino Chain Reaction 不需要帳號、訂閱、安裝 App,或上傳到伺服器。

骨牌傾倒的視覺概念,比數位謎題早了好幾個世紀。根據 Strong National Museum of Play 的說法,骨牌長期以來在許多文化中都以玩具的形式出現,而骨牌倒塌的連鎖反應,至今仍是一種受歡迎的展示活動(The Strong National Museum of Play — Dominoes)。這種底層原理,經常被稱為骨牌效應,描述的是一個小小的推力,如何能貫穿一整串有順序、彼此依賴的動作(Domino effect overview)。瀏覽器版對這種原理的改編,通常會分成兩個陣營:模擬真實碰撞的物理沙盒,以及只模擬鄰居之間傳遞關係的抽象網格謎題。Domino Chain Reaction 明確屬於第二個陣營。每一次推動,執行的都是一次有順序的遍歷,而不是一種近似的模擬,這代表一條中斷的鏈,會清楚呈現成反應恰好停在哪一個方塊,而不是隨機地熄滅。

domino toppling game
骨牌倒塌遊戲

深入了解 5×5 骨牌工作台

Domino Chain Reaction 裡的每一個工作台,都是一個 5 乘 5 的正方形網格,共有二十五個格子。其中一個格子,永遠被 START 方塊佔用;另一個格子,永遠被目標鈴佔用;這兩個格子,共同構成了每一道謎題的兩個端點。剩下的格子,是在你放置骨牌之前,外觀完全相同的開放擺放格,這代表這個棋盤,絕不會透過標籤、隱藏欄位、無障礙文字,或資料屬性,標示出正確的路線。一項嚴格的方塊預算,限制了你能在開放格子上立起多少骨牌,而這個預算,刻意不包含 START 與目標本身。封閉的空間、固定的端點、超出範圍的格子、已完成的關卡、超出預算,以及已終止的一輪,全都是原子性的無效操作;它們絕不會部分地改變你的分數、擺放內容,或引擎所觀察到的順序。

方塊的觸控目標,維持至少 44 像素高,讓每一個方塊在觸控螢幕上都能點得到,而整個棋盤,能舒適地容納在 390 像素的行動裝置檢視畫面內。在觸控螢幕上,以及使用滑鼠時,點擊任何一個開放格子,就能切換骨牌的放置與移除。使用鍵盤時,你可以先聚焦到某個網格格子,用方向鍵移動可見的游標,按空白鍵切換一個開放格子,按 Enter 鍵推動。當鍵盤焦點停在 Restart、Push,或 Next workbench 控制項上時,這個原生按鈕會維持標準的瀏覽器行為,而不會被遊戲快捷鍵攔截。

如何設置並推動一條骨牌倒塌鏈

  1. 在瀏覽器中開啟 Domino Chain Reaction,檢視目前的工作台:找出 START 方塊、目標鈴、外觀相同的開放格子,以及該關卡顯示的方塊預算。
  2. 點擊任何一個開放格子,立起一個骨牌;再次點擊同一個格子,移除這個擺放。封閉的空間、固定的端點,以及超出預算的情況,都會忽略多餘的點擊,不會改變棋盤。
  3. 用手動方式,追蹤你打算走的路線,確認每一次轉移,都是透過與下一個方塊共用的上、右、下,或左邊緣。斜角鄰居不會傳遞反應。
  4. 計算你目前鏈的末端與目標之間的曼哈頓距離,判斷你剩餘的方塊預算,是否還能把這段距離連接起來。
  5. 按下 Push the start 控制項。引擎會從 START 開始,依照上、右、下、左這個固定的鄰居順序,執行一次廣度優先遍歷,記錄下每一個抵達的方塊,把它旋轉成倒下的狀態,並在棋盤上為它編號。
  6. 閱讀推動後的編號順序。如果連鎖反應抵達目標鈴,這個關卡就會獲得 200 分,並解鎖下一個工作台;如果反應提前停止,引擎會在不再有新的、相連的直立方塊時立刻停止,你可以確切看到這次連鎖反應走了多遠。

正交傳遞方式如何決定哪些方塊會倒下

Domino Chain Reaction 的傳遞方式,是刻意設計成抽象的。一個倒下的方塊,只能觸發它四個直接鄰居其中之一:正上方的方塊、正右方的方塊、正下方的方塊,或正左方的方塊。角落絕不會傳遞反應,這代表即使兩個直立的骨牌在一個角落相碰,也不會有任何一方撞倒另一方。空缺會讓任何抵達它的分支停止,因此單一一個缺失的格子,就足以孤立掉一個原本擺放得很好的群集。起點與終點,是固定的遍歷節點;只有你合法的擺放,才能把它們連接起來,而引擎只會在抵達目標,或已擺放骨牌所形成的連通分量完全耗盡時,才停止傳遞。

這個遍歷順序是確定性的。從 START 開始,引擎會依序檢查上、右、下、左,再繼續往下走。因為這個順序是固定的,兩次相同的擺放,永遠會產生相同的編號倒下順序,而一個缺口或迷途的分支,會清楚呈現在連鎖反應恰好停止的那個方塊上。推動後的編號標籤,顯示的是反應實際抵達的最後一個方塊,這正是你用來找出你的路線為什麼提前中斷所需要的診斷資訊。

計分、兩次失誤的上限,與重新開始

事件對分數與遊戲狀態的影響
連鎖反應抵達目標鈴這個關卡獲得 200 分,並解鎖下一個工作台
全部五個工作台都完成這一輪的分數,會恰好定格在 1,000 分
重複相同的失敗配置會被去除重複;不會消耗第二次失誤的額度
第二個不同的失敗配置這一輪會進入終止狀態,無法繼續
一次失誤後成功的測試失誤紀錄,會在進入下一個工作台之前清空
重新開始重設回第一關,分數歸零,沒有已擺放的方塊,沒有倒下順序,也沒有已記錄的配置

一次推動,是一次真正的測試,而不是一個裝飾性的成功按鈕,這正是為什麼一次浪費掉的推動,是有意義的。每一關,在這一輪進入終止狀態之前,允許出現兩個不同的失敗配置,而任何不小心對同一個配置連按兩次,都會被算成一次失誤,而不是兩次。如果你想讓下一次嘗試被真正計入,就至少要改動一個方塊之後,再測試一次。如果你在一次失誤之後,修正了配置,而修正後的連鎖反應抵達了目標,失誤紀錄就會在下一個工作台開始之前清空,因此第一關的一次失手,不會拖累整輪遊戲。Restart 永遠會精確重設回第一關,分數歸零,沒有已擺放的方塊,沒有倒下順序,沒有已記錄的配置,也沒有終止狀態,這讓你可以在較簡單的棋盤上,低成本地嘗試新路線。

五個工作台的難度是如何逐漸提升的

工作台引入的路線主題成功時的分數
1START 與目標之間簡短直接的傳遞200
2需要多個垂直步驟的向下移動200
3沿著一列彎折鏈路的層架式轉彎200
4在狹小空間中反轉方向的之字形路線200
5結合前面所有模式的較長最終連鎖反應200

棋盤全程都維持 5 乘 5 的網格,因此難度來自空間推理,而不是操作方式縮水,或新增規則。第一個工作台,是一段簡短直接的傳遞,用來確認正交規則;之後的工作台,則要求你結合向下移動、沿著一列彎折鏈路的層架式轉彎、在狹小空間中反轉方向的之字形路線,以及混合了前面所有模式的較長最終連鎖反應。因為每一個階段的網格都完全相同,同一套開局策略,可以套用在全部五個工作台上:先檢視哪些格子能碰到 START,再檢視哪些格子能碰到目標,然後從兩端往內連接起來。

打造穩定鏈路的規劃技巧

一個實用的解題方法,是從謎題的兩端同時開始。首先,檢視哪些開放格子,能在四個正交方向中的任何一個方向上碰到 START。接著,檢視哪些開放格子,能在四個正交方向中的任何一個方向上碰到目標。從這兩份清單出發,往內推進,計算需要多少次擺放,才能連接起剩餘的曼哈頓距離。角落之所以重要,是因為一次正交轉彎,就能重新導向這條鏈,而不需要任何特殊的方塊類型,但角落格子本身,絕不能當成橋接點——只有你所選骨牌正上方、正下方、正左方,或正右方的開放格子,才算是傳遞點。

不要因為還有剩餘的方塊,就把整個預算用完;每一個已擺放的骨牌,都應該屬於一條連通的路線,或者是一條你理解的刻意分支。如果某個擺放不屬於這條鏈,就問問自己:移除它,是否能空出一個方塊,用在更長的路線上;或者保留它,是否能讓一條迷途的分支,把連鎖反應延伸到一個之後可能派得上用場的意外方向。在推動之前,逐格追蹤你提議的順序,並檢查每一次轉移,用的是共用邊緣,而不是角落。推動之後,從 START 往外,閱讀編號的推動後標籤;棋盤上最大的編號,就是連鎖反應實際抵達的最後一個方塊,而超過這個標籤的任何開放格子,就是下一次嘗試該加上擺放的地方。

會讓骨牌倒塌鏈提前中斷的常見陷阱

一條鏈提前中斷,最常見的原因,是把斜角鄰居當成有連接關係。兩個只在角落相碰的直立骨牌,看起來應該會彼此撞倒,但引擎完全忽略角落接觸。第二常見的原因,是在一條原本連續的線上留下一個缺口;單一一個缺失的格子,就會切斷連鎖反應與它之後所有內容的連結,而推動後的編號,會清楚呈現出這個中斷,恰好發生在哪一個沒有倒下的方塊上。第三個陷阱,是把預算過度花在看似有用、實際上卻從未連上主要路線的死路分支上,導致剩下的方塊,不足以連接真正的曼哈頓距離。

封閉的空間、固定的端點、超出預算、已完成的關卡,以及已終止的一輪,全都是原子性的無效操作,因此在預算已耗盡、關卡已完成,或這一輪處於終止狀態時按下 Push,不會造成任何破壞性的結果。在網格外點擊,或試圖在封閉格子上切換方塊時,也是同樣的情況。失敗的嘗試,只會消耗兩次失誤上限中的一個名額,絕不會影響你的擺放內容或倒下順序,因此你可以在正式提交之前,先在這兩次名額內做實驗。想更深入了解每個棋盤的路線模式,可以參考 Domino Chain Reaction Game: Solve Five 5×5 Workbenches 這篇指南。