是的,你可以在不下載任何東西的情況下玩 Tower Stack——整個遊戲直接在瀏覽器中於用戶端執行,因此不需要安裝程式、不必造訪應用程式商店,也無需註冊即可開始一局。在現代瀏覽器中直接開啟 Tower Stack,頁面就會載入一款由一般 HTML 元素與一個確定性的純邏輯層所構成的自足遊戲。引擎不會聯絡任何伺服器、不會上傳任何資料、不會要求麥克風或感測器權限、也不會引入第三方的物理或 canvas 函式庫。你的最佳分數只會儲存在你自己的瀏覽器本機儲存空間中,且遊戲在結束時會自動凍結,因此關閉分頁後並不會在背景繼續悄悄運行。由於每一塊積木的位置都是根據一條固定的 100 單位軌道與精確的重疊算術計算出來的,因此兩位輸入相同的玩家會得到完全相同的結果,這也讓 Tower Stack 除了是一個節奏快速的時機解題遊戲之外,也成為一個實用的瀏覽器實驗。

「無需下載」對 Tower Stack 而言到底意味著什麼
「無需下載」這句話對不同的讀者可能代表不同的意思,因此有必要先釐清 Tower Stack 究竟避開了哪些東西。這款遊戲不會要求你安裝可執行檔的安裝程式、App Store 或 Play Store 的套件、Steam 用戶端,也不會要求你下載封裝好的 ZIP 檔。它不需要你建立帳號、以電子郵件登入、或驗證手機號碼。除了單次的頁面載入之外,它不會從遠端的內容傳遞網路串流素材,也不會在背後偷偷回傳資料以儲存進度。一旦頁面開啟,移動方塊的每一次滴答、每一次重疊計算、每一次分數遞增、以及每一次重新開始,全部都在 JavaScript 中針對一個確定性的狀態物件於本機執行。介面本身是由標準的 HTML 按鈕與定位元素構成,而非使用 canvas 函式庫,這也是為什麼遊戲區、移動方塊、以及永久存在的塔層在頁面上都會以可分別測試的節點形式呈現。動態的內嵌樣式只會指定幾何上的 left、width、height 與 bottom 數值,至於顏色、邊框、字型、以及焦點輪廓則來自網站的設計權杖。這種分離正是讓遊戲能在 390 像素的行動裝置視口中、毫無水平捲動且不依賴任何音訊、感測器或硬體功能的情況下,依然能夠乾淨地渲染出來的原因。
幾何、重疊與 1,000 分的分數
遊戲區被定義為一條固定 100 單位的水平軌道。底座佔據 x 35 到 x 65,寬度為 30 個單位。第一個移動方塊寬度也是 30,但從 x 0 開始,因此立即落下方塊會構成一個確定性的失誤,同時也是一個無需閱讀任何程式碼就能驗證失誤處理的好方法。每一次滴答會將移動方塊推進 方向 × 速度;當候選的 x 位置越過軌道任一邊界時,純粹的轉換會把多出來的距離反射回合法區間內,並反轉方向。對 500 次連續滴答的釋放測試證實了 x 永遠不會變成負值,且 x + width 永遠不會超過 100。在落下方塊時,重疊區間是以移動方塊與頂層中較大的左邊緣和較小的右邊緣計算。若右邊緣並未大於左邊緣,則結果為失誤。反之,該精確的區間就會成為一個新的永久層。置中的落點會保留目前寬度;偏移的落點會使下一層變窄,讓後續每一次落點的可用空間都變得更小。
計分遵循固定的線性時程,而非加成公式。每一次成功的落下方塊值 200 分。在底座之上成功落下方塊五次後,分數正好為 1,000。產品合約揭露了一條可重現的變窄路徑:暫停遊戲,並將每個移動方塊放在目前頂層右側恰好一個單位的位置。獨立的區間預言機會預測出寬度 29、28、27、26 與 25,而正式版的轉換確實會產生完全相同的寬度,每一個新的 x 都等於重疊區間的左邊緣。
| 層級 | 寬度(單位) | 分數 |
|---|---|---|
| 底座(層級 0) | 30 | 0 |
| 層級 1 | 29 | 200 |
| 層級 2 | 28 | 400 |
| 層級 3 | 27 | 600 |
| 層級 4 | 26 | 800 |
| 層級 5 | 25 | 1,000 |
如何在瀏覽器中遊玩 Tower Stack
- 在任何現代瀏覽器中開啟 Tower Stack;遊戲會以一個位於 x 35 與 x 65 之間、寬度為 30 單位的底座,以及一個已經從左邊緣開始移動、寬度為 30 單位的移動方塊呈現。
- 觀察移動方塊目前的方向與速度,然後在它與塔頂重疊時,使用下列任一種支援的輸入方式來落下方塊:點擊遊戲區、在觸控裝置上點按、選擇 Drop block,或按下空白鍵或 Enter。
- 解讀回饋:所有懸突的部分都會被裁切掉,因此置中的落點會保留目前寬度,而偏移的落點則會使下一層變窄。
- 重複以上步驟,直到在底座之上成功落下方塊五次,正好累積 1,000 分;過程中的分數依序會顯示為 200、400、600 與 800。
- 若你不想依賴反應時機,可以按下 P 鍵或選擇 Pause,然後使用向左鍵、向右鍵、或 Step left 與 Step right 按鈕,讓移動方塊在落下方塊前每次恰好移動一個單位。
- 發生完全失誤時,塔身會保持原狀,一個寬度與目前頂層相同的新移動方塊會從 x 0 重新出發;你可以繼續玩下去。若再次發生完全失誤,該局就會陷入死結;此時請選擇 Restart,以重新建立完全相同的底座、移動方塊、方向、速度、進度、分數、暫停狀態以及失誤次數。
可決定性對齊用的暫停與逐步移動
Tower Stack 將暫停視為一個第一級的遊戲狀態,而非只是暫時的凍結。按下 P 鍵或選擇 Pause 會完全停止自動滴答,此時計時器不會執行任何碰撞或分數的算術運算;它只會在你恢復時請求下一次純粹的滴答。這種區隔使瀏覽器的動畫行為不會變成另一個未經測試的遊戲引擎。暫停期間,Step left 與 Step right 按鈕,以及向左鍵與向右鍵,會在相同的 0 到 (100 減去寬度) 範圍內,每次動作恰好將方塊移動一個單位,因此對齊是完全具決定性且可重現的。恢復遊戲會重新啟動以區間為驅動的移動。由於每一次轉換都是以純邏輯計算——不進行像素取樣、不使用 canvas 碰撞、不依賴 CSS 邊界框、不使用動畫幀時間、也沒有隱藏的答案——因此暫停並不會改變規則,只是讓你更從容地套用規則。因為分數只取決於完成五次有效的落點,所以這款遊戲屬於休閒性質,而非智力、反射能力或任何其他特質的評量。想要輕鬆遊玩,請在每次放置前先暫停並仔細微調;想要挑戰時機,則讓動作持續進行,等到邊緣對齊時再落下方塊。
失誤政策、死結與重新開始
Tower Stack 區分三種遊戲局狀態:進行中、可復原、以及死結。當發生零正重疊的失誤時,會記錄一次失誤但屬於可復原狀態:塔身維持不變,一個具有目前頂層寬度的新移動方塊會從 x 0 重新出發。你可以暫停、重新對齊,然後繼續堆疊。第二次的完全失誤會記錄第二次失誤,並使該局陷入死結,直到執行 Restart 為止。完成與死結都是終止狀態;一旦進入其中之一,滴答、落下方塊、暫停切換以及手動微調全都只會回傳未變更的狀態,因此你無法意外延長已結束的局,也無法解除死結。由於在 x 0 的初始移動方塊與位於 x 35 的底座並不重疊,因此連續兩次立即落下方塊,便是一條簡單且具決定性的瀏覽器路徑,可用來驗證死結行為。Restart 會重新建立完全相同的底座、移動方塊、方向、速度、進度、分數、暫停狀態以及失誤次數,因此重試會從一個已知的狀態開始,而不是從前一局漂移後的狀態。
控制方式、相容性與本機儲存空間
控制介面刻意維持精簡。Drop 會提交一次原子的轉換:對 drop 轉換的一次呼叫最多只會建立一個永久方塊,並且最多只會遞增一次成功的進度,重複的鍵盤事件會被忽略,因此按住一個鍵並不會從一個預期的動作中產生好幾個方塊。Pause 會切換計時器;箭頭鍵與 Step 按鈕可在暫停時每次移動一個單位;Restart 會重新建立該局;連按兩次 Escape 會開啟試算表風格的魔王畫面,再連按兩次 Escape 則會返回相同的遊戲狀態。共用的 GameShell 只會將最佳分數保留在瀏覽器的本機儲存空間中,因此追蹤個人最佳成績不需要任何伺服器呼叫、不必上傳,也無需帳號。遊戲區、兩欄式的行動裝置控制格線、可換行的狀態文字、以及大型動作按鈕,都能容納在 390 像素的視口內而不產生水平捲動,這代表在手機上以觸控方式遊玩,與在筆電上以滑鼠遊玩是完全相同的,無需額外的行動版本。
其他可以嘗試的瀏覽器即玩遊戲
如果你來這裡是想找不必下載的瀏覽器遊戲,其餘的作品目錄都採用相同的模式。Dinosaur Game 是一款只需單一空白鍵即可進行的反射反應遊戲,載入時不需要安裝程式,也不需要任何離線技巧,是一款在面對 Tower Stack 的節奏落點之前,相當實用的暖身遊戲。這兩款遊戲都展現了相同的瀏覽器優先策略:開啟頁面、立即開始遊玩、關閉分頁後不在裝置上留下任何東西。