台北的塞車沒有解,所以我們做了一座讓你來救的城市
挪挪車是一款以「城市塞車」為靈感的滑塊解謎遊戲
我們承襲經典 Rush Hour 機制,透過單軸移動換取極高的盤面可讀性;並在此基礎上融入動態盤面擴充與特殊車輛變體。 從首發的台北街頭出發,未來更計畫帶玩家體驗世界各大名城的塞車奇景,將各地的交通特色轉化為獨特的視覺風格與關卡體驗。
本篇開發日誌將拆解這款遊戲的核心機制,分享我們如何在玩法、關卡與美術設計上,為經典滑盤遊戲帶出全新體驗。
01玩法設計
移動與計步
車只能沿自身長軸前後滑動,不可旋轉、不可橫移。
一次拖曳不論滑幾格,都算一步。
鎖住移動軸的核心目的其實很簡單:讓操作直覺到不需要思考。
橫車只能左右、直車只能上下,玩家看一眼就能秒懂規則。當「怎麼移動」不再需要試錯, 玩家就能把 100% 的腦力放在最核心的樂趣上——「該先動哪一台?順序是什麼?」
這也是為什麼我們規定「不管滑一格還是滑到底都算一步」,因為我們想獎勵的是想清楚後的決策, 而不是無意義的頻繁滑動。
不過,這個限制也帶來了一個有趣的設計結果:同一軌道上的兩台橫向車,順序是永遠無法互換的。 它們不可能互相穿透。這個物理限制,直接決定了後面關卡在配置車輛時的邏輯與邊界。
多主角編隊
多主角規則:一關可以有多台主角車,各自綁定專屬出口。只要主角貼齊出口就會自動離場、 騰出格子,所有主角都順利開出去才算通關。
出口限制:兩台主角不能共用同一個出口;若出口在同一邊,兩者的位置中間至少空一格。
為什麼要設計「多主角」?如果只是單純要玩家「救出更多台車」,那不過是在重複做一樣的事。 多主角真正的樂趣,在於主角離場的瞬間,會直接改變盤面的動態格局。 它空出來的格子,往往就解開了原本被卡死的路徑。這時玩家就必須思考: 「我該先送誰出去,後面的路才開得出來?」這就多了一層策略順序的抉擇。
共用出口之所以被我們禁掉,就是為了守住這層抉擇。如果兩台車擠同一個缺口出去,解法就被幾何鎖死了, 玩家根本不需要動腦選順序。多了一台車,卻沒有帶來新抉擇,那就只是無意義的重複操作而已。
至於限制出口「中間至少空一格」,則是為了盤面的視覺可讀性。當兩個出口太近時, 玩家一眼看過去很難直覺分出「哪個缺口是給哪台車的」。對我們來說,如果規則在程式上正確, 但玩家讀不出來,那就跟沒有規則一樣。
違停拖吊
開局時盤面上有三台車掛違停標誌,玩家選一台拖走,不計步、可反悔,然後才進入一般的挪車。
關卡的最佳步數從拖完之後起算,取三個選項裡的最小值。
當遊戲需要帶給玩家新鮮感時,單純「把盤面放大、把題目拉長」通常只能維持一瞬間, 並不能讓解謎過程變得更有趣。
因此我們選擇把區域的差異化交給全新的機制——「違停拖吊」。
拖吊要能創造真正的思考深度,需要兩個約束條件同時存在:可拖的車必須是預先標記好的三台, 而且三個選項拖完後的最佳步數,最大與最小落差至少要有 2 步。
為了避免開場決策流於形式,我們透過演算法篩選關卡,確保拖錯車會產生至少 2 步以上的落差, 讓三選一成為真正的腦力考驗。
拖錯的代價
拖錯車的代價很直接:你會因為多走步數而拿不到三星。 但因為可以隨時免費復原,玩家可以放心試錯,讀懂盤面再重來。
02系統與體驗
星等與容錯
3 星:步數 ≤ 最佳步數(完美的最佳解)。
2 星:允許一定比例的步數誤差(按關卡難度動態放寬)。
1 星:順利通關即可獲得。
我們將 2 星的容錯設定為按比例放大,而不是固定值。例如需要 13 步的難關給予 5 步寬限,而 2 步的教學關則只給 2 步。難題的思考成本本來就高,如果容錯不隨題目難度成長, 對玩家來說就會變成一種隱形的懲罰。
解鎖與地區進程
地區門檻(地區外圍):累積星數達到當時可得總星數的三分之一,即可解鎖下一個地區。
關卡線性(地區內部):地區內不另設星數門檻,通過第 k−1 關即自動解鎖第 k 關, 已過關者可無限重玩補星。
地區之間採用「星數門檻」而非強制的「線性鎖」,是為了給玩家交錯探索的自由——不必把第一個地區磨到全滿, 也不會被單一路線卡死。將門檻設定為三分之一,能確保玩家只要「認真玩過」就能自然解鎖, 而不是被逼著「必須全破」。
至於地區內部改為線性解鎖,則是為了保持系統語意的一致性。因為遊戲支援分享連結(玩家可直接送好友進特定關卡), 若地區內設有層層階段門檻,就會出現「在大廳看是鎖住的、點連結進去卻能玩」的矛盾狀態。 對玩家來說,系統說話前後不一,是最糟的體驗。
提示與解答
提示與解答消耗全域代幣,每日登入自動補給,代幣歸零時可透過觀看廣告補充。
看解答為純輔助:過程不計步、不觸發勝利,亦不寫入最佳成績與星等。
看解答之所以「零懲罰」,是因為懲罰只會把卡關的玩家往「關掉遊戲」推。解答播完後盤面會重置回起點, 玩家依然要自己動手走過一次才算過關。看過與過關是兩回事, 但我們不需要用扣分來強調它。
滾動冷卻設計
每日補給採用 20 小時滾動刷新,而非固定自然日。這樣能避免「昨天晚上十點領, 今天就必須等到十點」的漂移懲罰——我們希望是遊戲遷就玩家的生活作息,而不是讓玩家為了保住領取時段而遷就遊戲。
03關卡設計
難度曲線
每區 100 關、切成 10 段:每一段的難度底線不低於前一段,段內由淺到深,段末一關刻意降溫。
我們在設計關卡難度時,堅持一個原則:難度可以有起伏節奏,但整體必須穩步爬升。 每段的結尾關卡會刻意降溫讓玩家喘口氣,但過關後的難度底線絕不倒退,確保玩家累積的解謎能力感不被抹滅。
雙主角題型與落點
雙主角關依兩台主角的軸向與出口分成三型:⇉ 同向雙橫、 ⇄ 反向雙橫、✚ 一橫一縱。
中正紀念堂的 100 關裡有 18 關是雙主角編隊(⇉/⇄/✚ 各 6)。 位置固定落在段內第 5、7、9 關;段末的第 10 關永遠不放編隊。
雙主角題型是關卡的大場面,我們將它安排在難度的區域高點,以滿足玩家對高難度挑戰的期待。 而段末關卡則堅決不放雙主角,因為段末是降溫與喘息,不是考驗,讓節奏保持張弛有度。
⇄ 的兩台主角一定放在不同的列,出口各在相反的兩側。 原因就是單軸移動的必然代價:同一列的對穿在規則下無解。錯開列之後,兩台主角往反方向橫越同一片車陣, 張力來自共用的中間空間——替一台清出來的走道,往往正是另一台的路障。
出貨閘門
除了第一區的教學十關是手排,其餘關卡都由產線產出,必須通過多道閘門才准出貨。 最要緊的兩道是:最佳解至少含一次折返、盤面上零凍結車。
難的反義詞是簡單,無聊的反義詞不是難,是有得想。
一個關卡如果能從頭到尾不倒車、順序推開就解完,不管它有多長,都只是「勞作」而不是謎題。 因此我們的出貨閘門極度看重是否包含折返(倒車)——唯有迫使玩家倒車思考, 題目才具有真正的靈魂。
凍結車指的是「可證明在任何可達狀態下都動不了」的車。它不只是佔位的障礙—— 它會讓一整塊盤面對玩家永久失效,玩家卻看不出來那裡不能碰。要求零凍結車, 等於要求盤面上每一台車在原則上都是可互動的。
去重
比對的是兩關的佈局距離(不是盤面簽名),而且這道門檻 只在相隔 12 關以內生效。
演算法常會產出「只差一台車挪一格」的兄弟關卡。為了避免玩家產生厭倦,我們設定了嚴格的版面距離去重。
因為「重複感」是近距離現象——相隔 50 關出現相似的盤面,玩家早已忘記; 但如果在 10 關內連續看到,體驗就會大打折扣。去重只需針對近距離,才能在新鮮感與產能之間取得平衡。
04美術風格
顏色是機制語彙
所有主角車一律磚紅 #C91A09,靠車型輪廓區分;每個出口的斜紋標記同色。
磚紅完全退出介面——按鈕、強調、狀態一律不得使用,行動色改為計程車黃。
主角不靠顏色分辨而靠輪廓,是因為顏色編碼會讓玩家記色票、不看車; 而輪廓是玩家本來就會讀的東西。玩家看到紅車,就去找紅色的缺口——這條對應必須是唯一的。
一個顏色一旦承載機制語意,就不能再兼任裝飾。
這條規則在磚紅上是嚴格的,但誠實地說,它不是全色盤都做得到: 計程車黃同時是介面的行動色與素方塊障礙的五個車身色之一,號誌紅也用在違停標誌上。 可接受的理由是分層——黃只在「介面」與「盤面」兩個互不重疊的圖層各自出現, 號誌紅只出現在車頂的徽章、不上車身。只有磚紅是跨圖層都被保留的。
積木識別與車輛點綴
車頂的圓顆粒數量直接等於車長(2 格或 3 格)。
多數障礙車為乾淨的「素方塊」,少數點綴為真實車種(如公車、計程車、休旅車)。
車長是玩家在解謎時唯一需要瞬間讀出的數值。把車長編碼成直覺「可數」的積木顆粒, 玩家就再也不必用眼睛量長度。
而盤面上的車輛之所以不全部畫成真實車種,是因為障礙車的核心功能是「擋路」。若每台車都有獨特造型, 會嚴重分散注意力;但若全部都是素方塊,盤面又會失去生活感。 多數是背景素方塊,少數是真實車種點綴,正是兼顧可讀性與城市日常感的黃金比例。
城市背景與情境氛圍
盤面周邊整合城市意象(地標、街景、天色),作為解謎過程的背景延伸, 但不干擾中央盤面的可讀性。
除了車輛本身,我們將城市的記憶與氛圍揉合在盤面外圍。從一天裡的天色、路邊的行道樹, 到那一座你一眼就認得出來的地標,讓玩家在思考解謎的同時,能浸潤在具體的城市場景中。 背景扮演著「讓故事成立」的角色,與中央高對比的盤面形成明確的分層, 既能留住在地共鳴,又絕不搶走解謎焦點。