遊戲大廳裡有一款叫「台灣富翁」的小遊戲。表面上是 Monopoly 的台灣本土化版,但真正做下去之後發現,本土化遠遠不只是「把 Boardwalk 換成 101」這麼簡單。這篇把整個專案從靈感到上線的設計決策全部攤開講,包括幾個踩到後不會再踩的坑。
為什麼是大富翁、為什麼是台灣
當初想做新遊戲時列了三個條件:
- 玩法已經被全世界驗證過 — 不要花時間發明新規則。
- 有「文化在地化」的空間 — 才能在熱門類別裡找到差異點。
- 規則複雜度中等 — 太簡單沒留住玩家的鈎子,太難又讓人開遊戲 30 秒就退出。
大富翁完美符合三個條件。Monopoly 的核心循環(擲骰子 → 移動 → 買地 / 收租 / 觸發事件 → 回合結束)已經教會幾代人怎麼玩,本土化空間是「整張地圖」,規則複雜度大約是 90 分鐘可以教會新玩家的等級。
地圖選擇:地名怎麼挑
傳統 Monopoly 的紐約地名(Park Place、Boardwalk、Marvin Gardens)對台灣玩家太陌生,沒有情感連結就沒辦法產生「我要拼這塊地」的衝動。我列了一份 80 個候選台灣地點,最後篩到 28 格(Monopoly 的標準格數),分類規則:
| 分類 | 對應地點(價格區間) |
|---|---|
| 頂級地段(紫色) | 台北 101、信義區 |
| 都會精華(綠色) | 板橋、新店、桃園 |
| 觀光景點(黃色) | 九份、阿里山、日月潭 |
| 中型城市(紅色) | 台中、彰化、嘉義 |
| 南部三地(橘色) | 高雄、屏東、墾丁 |
| 東部與離島(粉紅) | 花蓮、台東、澎湖、馬祖 |
| 北部初階(淡藍) | 新莊、三重、士林 |
| 起步區(棕色) | 萬華、艋舺 |
選地名的三個原則:
- 價值要符合直覺:信義區買價必須比萬華高,這是「玩家對台灣地價的預設認知」。違反這個直覺就會破壞沉浸感。
- 避免敏感議題:政治色彩強的地名(如某些政治運動發生地)一律排除,免得遊戲變成意識形態戰場。
- 北中南東離島都要有:避免變成「台北富翁」,讓南部與東部玩家也有自己的位置。
事件卡:把台灣的日常包進來
這是最花時間的部分。Monopoly 原版有兩種事件卡:Chance(機會)、Community Chest(命運)。我設計了 30 張本土化版本,目標是讓玩家看到卡牌時會「啊哈,這就是台灣」。範例:
【颱風天放假】 公司宣布今天不上班! 你獲得 NT$3,000,但下一回合不能擲骰子(在家吃泡麵)。 【股市大漲】 你的 0050 賺翻了! 從每位玩家手上收 NT$2,000。 【捷運漲價】 通勤族的痛。 扣 NT$500,並向銀行繳「卡片儲值費」NT$1,500。 【夜市踩雷】 誤入觀光夜市,價格翻三倍。 扣 NT$2,500,但獲得「臭豆腐挑戰成功」徽章(純裝飾)。 【統一發票中獎】 你中了千萬大獎。 獲得 NT$10,000,但要繳 20% 所得稅。
這些卡牌的設計原則:
- 有金額流動:每張卡都要實際影響資金,不能只是「裝飾性」純文字。
- 有期待值平衡:30 張卡的整體期望值接近零,避免某幾張卡把節奏打亂。
- 有共感笑點:颱風天、夜市、捷運都是台灣人共同記憶。沒有共感的點子(如「外送員平台股票分紅」)我會砍掉。
規則調整:縮短到一場 20 分鐘
原版 Monopoly 一局可以拖到 3 小時。瀏覽器上沒人有耐心,必須讓一場結束在 15~25 分鐘內。做了三個關鍵調整:
1. 起始資金降低
原版 $1,500,這個版本給 NT$15,000(約是地圖最便宜地價的 5 倍)。資金少 → 玩家更早進入「現金流壓力」階段,不會出現「大家都很有錢誰也不破產」的僵局。
2. 房屋上限改 3 棟
原版可以蓋 4 房 + 1 飯店共 5 階。改成最多 3 棟,讓滿格收益封頂更快出現,差距快速擴大。
3. 強制租金規則
原版玩家可以「忘記收租」(如果停在別人地上對方沒喊就免費),這個版本由系統強制扣費,避免玩家因為忘記規則白白損失。
破產邏輯的隱形 bug
上線兩天後收到 Bug 回報:「我的錢明明變成 -3000,但遊戲還沒結束」。追下去發現這段:
function checkBankruptcy(player) {
if (player.cash < 0) {
const totalAssets = player.cash + player.estates.reduce((s, e) => s + e.value, 0);
if (totalAssets < 0) {
player.bankrupt = true;
}
}
}
問題:玩家的房子(不只是地)也應該計入資產。當地產上有蓋房子時,e.value 沒有把房子的回收價值加進去,導致實際資產被低估,應該破產的玩家被判沒破產。修法:
const estateValue = e.value + (e.houses || 0) * Math.floor(e.housePrice / 2); // 房屋拆除回收半價,符合常見桌遊規則
這個 bug 讓我學到一件事:遊戲狀態的計算只要有兩個地方看似都對,就一定會有不一致的版本。後來把「資產評估」抽成單一 utility function,cashOut()、checkBankruptcy()、showAssetTooltip() 都呼叫這個函式,避免再次發散。
視覺:怎麼避免做成廉價 UI
大富翁類遊戲很容易做成「色塊 + 文字」的試算表感。為了避免這個,我做了三件事:
- 每塊地有專屬插畫:用 AI 生圖工具畫了 28 張像素風小插圖(101 是大樓剪影、九份是階梯、阿里山是火車)。每張不到 500 bytes,但給玩家很強的記憶點。
- 擲骰子用 3D Canvas:不是簡單顯示「3」,而是真的用 CSS transform 模擬骰子翻滾 1.5 秒。心理學上這個「等待」反而讓玩家更投入。
- 事件卡用翻牌動畫:卡片從畫面下方飛入並翻面,配音效。事件變得有儀式感而不是純文字訊息。
數據:實際表現
| 指標 | 數值(上線後 30 天) |
|---|---|
| 單局平均時長 | 22 分鐘 |
| 單次 session 平均局數 | 1.7 局 |
| 留存率(D1) | 34% |
| 玩家最常停留格 | 機會卡(命運第二) |
| 玩家提早離場(中途棄局) | 11% |
11% 的中途棄局率比預期低(原本擔心會 30%+)。猜測原因是「事件卡的笑點」讓玩家想看下一張,反而提升了完局意願。
結語:本土化的本質是「共同記憶」
做台灣富翁最大的收穫不是學了什麼技術,而是發現「本土化」不是把英文翻成中文、把紐約換成台北。本土化的本質是把玩家的共同記憶寫進遊戲 — 颱風天的泡麵、發票中獎的興奮、夜市踩雷的無奈。這些是任何海外遊戲做不到的競爭優勢。
下一個版本想做的是「縣市專屬地圖」(純台北地圖、純高雄地圖),讓地方共感更精準。如果你有想看的地方,歡迎寄信 lo246179268@gmail.com。