Oceanads Ivan

這局不對勁R 製作手記:八天用 AI 做出一款台灣麻將 Roguelike

這局不對勁R 的牌桌畫面,龍哥、琉花、雪乃三位角色坐在桌邊,玩家手牌在下方
目前版本的牌桌。桌面中間的顯示器記錄每一家的金額和戰況。

台灣 16 張麻將 × 技能卡 × 劇情。從一張草稿圖到 v1.11,八天裡每一次修改的原因和做法。

這是一款什麼樣的遊戲

依照台灣 16 張麻將的規則製作,吃、碰、槓、聽、算台都有。打牌時可以使用技能卡。對手設計成具有個性,並依其個性搭配不同的語音。

主要的玩法是劇情模式(製作期間叫 RUN,v1.11.1 改名)。玩家選一個角色,帶著 450 元,在分岔的地圖上選路。路上有一般桌、菁英桌、事件、商店、休息區,最後是魔王。每過一段從三張技能卡裡選一張,卡片只在這一趟有效。錢輸光,這一趟結束。每個角色有自己的故事。

劇情模式的一趟這樣走(每個節點之間有一段劇情):

  1. 選角色,帶 450 元出發。
  2. 在地圖上選路:一般桌、菁英桌、事件、商店或休息區。事件、商店、休息區走完回到地圖繼續選。
  3. 打贏一般桌或菁英桌,從三張技能卡裡挑一張。
  4. 打這一章的魔王。贏了進下一章,共 4 章;贏下最後一位,看到這個角色的結局。
  5. 任何一桌錢輸光,這一趟結束,卡片歸零。

另一個玩法是養成模式(原本叫自由模式)。錢會存下來,圈數自己選,首頁按鈕上顯示目前金額。

遊戲用瀏覽器玩,電腦、平板、手機直拿橫拿都支援。

設計初衷

一般的麻將遊戲,每一局的感覺差不多。我想做的是每一趟都不同:抽到的卡不同,走的路不同,換一個角色故事也不同。

希望這款麻將遊戲能做得像 roguelike,讓玩家沉浸在其中。
——11 月 6 日的修改需求

幾個沒變過的原則:

  • 依照麻將規則,不亂改。技能卡只讓機率偏一點。
  • 對手有個性:有表情、會喊碰、贏了跳舞、輸了趴桌。
  • 畫面有台灣味:夜市、牛肉麵、九份、艋舺。卡片名稱取自台灣的日常。
  • 不用下載。

製作方式

圖、模型和程式幾乎都用 AI 工具製作。我決定要什麼、看結果、要求修改。

  • 人物造型:參考優質角色圖,交給 AI 重新設計。Midjourney 生成視覺草稿,gpt-image-2.5 編修成設定圖和四面圖。
  • 人物模型:四面圖交給 fal.ai 建模,貼圖由 Claude Opus 5.5 編修。
  • 語音:使用生活周遭朋友錄製的語音,依角色個性配置。
  • 技能和成就:技能卡和角色能力用同一條平衡原則。

一個角色從參考圖到上牌桌的流程:

  1. 參考角色圖 → Midjourney 生成視覺草稿,挑一張。
  2. gpt-image-2.5 做設定圖、四面圖、表情。
  3. 檢查臉和髮型;不對就回上一步重做。
  4. fal.ai 生成 3D 模型。
  5. Claude Opus 5.5 修貼圖、接骨架和表情。
  6. 配上朋友錄的語音,上牌桌。

有強項必有短板

如果某張卡或某個角色太強,其他選項就沒有人選。所以每個技能有一個長處,就配一個短處,數字都壓小。技能只讓牌局偏向某種打法,輸贏仍然看牌怎麼打。

兩個技能作用在同一件事時:

  • 方向相同:大的算全額,小的只算四分之一。
  • 方向相反:互相抵掉一部分。
  • 沒有重疊:照原本的算。

技能卡、角色能力、兩者疊加的算法都照這條原則。成就獎勵只給外觀,不影響牌局。

11 月 4 日|從一張草稿圖開始

起點是一張 AI 生成的草稿圖:黃昏的台北夜市,一張方桌,對面坐著動漫角色。要求是坐姿視角、俯視約 35 度,其他三家只看得到牌背,棄牌散放在中央。

最初的畫面草稿,夜市背景下的麻將桌
最初的畫面草稿。牌桌視角、配色和構圖都從這張圖來。

製作方式選了 3D 模型加卡通上色。原因是角色需要表情、動作、換姿勢,2D 每多一個動作就要多畫一套。左右兩家原本只放頭像,改為也坐上桌。

當天完成第一個瀏覽器可玩的版本:吃、碰、槓、算台。之後補上漏掉的胡牌和自摸,再加聽牌提示。

第一個角色重做

第一個角色小晴用程式拼出來,不好看。原因是沒有設定就開工。之後改為先寫角色設定、畫設計草稿,再照圖做模型。

第一版角色小晴,造型簡單像積木重做後三位女角色坐在牌桌邊
左:第一個角色小晴。右:重做後的三位角色上桌,桌子和背景還是色塊。
雪乃的角色設計草稿
雪乃的角色設計草稿。
龍哥的角色設計草稿
龍哥的角色設計草稿。
林小茉的角色設計草稿
林小茉的角色設計草稿。

牌桌修改

開始玩之後,才知道需要修改哪些部分:

  • 手牌站立角度不對。調整。
  • 金幣圖示佔位置。改為桌面中央的顯示器,顯示胡牌、自摸次數和剩餘金額。
  • 玩家面板擋到牌。改為嵌進桌面。
  • 桌上牌太小看不清楚。改為點牌,自動放大。
  • 畫面下方太空。視角往前推。
  • 角色沒有鼻子。補上。

同一天決定:每個角色三種勝利動作、三種敗北動作,每次隨機播放。

11 月 5 日|對手設計

靜音時不知道誰喊了碰。加上叫牌貼圖:誰碰、吃、胡,角色旁邊跳出大字貼圖,每個角色的字體和顏色不同。

規則補了兩項。明聽和暗聽可選,明聽不能換牌,暗聽可以。台灣麻將的特殊牌型全部補齊,每種有專屬標題圖,台數越高動畫越多。

電腦對手分 10 級,經過測試確認等級越高勝率越高。玩家可以開電腦代打,預設 Lv1,可升級。

場景增加到六個:台北牛肉麵、士林夜市、雪山溫泉旅館、頂樓電競直播間、九份山城茶樓、艋舺龍哥麻將會館。桌子、椅子、牌背和按鈕樣式跟著場景換。

士林夜市關卡的牌桌,紅色桌面和夜市攤位背景
士林夜市的早期畫面。

加上開場動畫:角色走進來坐下,玩家視角跟著走到桌邊,接著擲骰、發牌。八個角色八種走法。可在設定中跳過。

11 月 6 日|從 12 關改成劇情模式

原本是 12 關直線闖關。問題是每次路線都一樣。這天改掉,當時的名稱是 RUN:

  • 12 關直線,改為 4 章分岔地圖。
  • 卡片只在這一趟有效。拿過的卡記在蒐集冊。
  • 拿卡改為三選一,原本只能抽不能挑。
  • 錢輸光就結束。起始金額改為 450,縮短一趟的時間。
  • 魔王本金是玩家的 3 倍,菁英桌 1.2 到 1.8 倍。對手輸光離場。

難度設得高。預期多數玩家在第四關附近結束,後段需要拿到好卡並搭配得當。

技能卡

卡片照平衡原則設計。例如一張卡提高摸到紅中的機率,同時降低摸到青發的機率。另外設計了不靠機率的卡,例如三選一變四選一、輸光時救一次的復活卡。設計文件列了 38 張數值卡和 41 張特殊效果卡。

卡片分主動和被動。主動卡點擊發動;被動卡拿到即生效,畫面上顯示圖示,作用中圖示發光。卡面是 70 年代復古印刷風。

九張復古印刷風的技能卡插圖六張舊紙風格的劇情模式地圖底圖
左:第一批技能卡插圖。右:六個場景的地圖底圖。

語音和歌曲

音效有洗牌、摸牌、打牌、骰子和場景環境聲。角色語音依個性設計:入座招呼各五種,碰、胡、自摸,打牌報牌名,部分角色有口頭禪,例如「碰一個」、「我吃,感謝」。

遊戲有八首中文歌曲,對應不同場景,例如《夜市 Go Go Go》、《合歡山的雪》、《頂樓連線》。歌詞寫的是場景裡的事,內容有趣。遊玩時歌詞顯示在畫面上方,跟著音樂走。首頁預設一首,其他的玩過對應關卡後解鎖,可在蒐集冊播放。

四張歌曲封面
部分歌曲封面。

當晚遊戲第一次上線,可用 LINE 登入和取名。之後的修改舉例:

  • 新增上滑出牌。點牌也會誤觸縮小,改為只有上滑才出牌。
  • 提示文字擋到對家的臉。換位置,可關閉。
  • 音量面板太複雜。只留音樂、音效和靜音。
  • 主動卡要選牌,操作多。改為點擊直接發動。

11 月 7 日|改名,新增養成模式

遊戲名稱從「台灣十六張R」改為「這局不對勁R」。

養成模式有四張牌桌:路人桌、錢巷桌、菁英桌、雀神桌,每台 20 到 150 元,入座門檻 200 到 1,500 元。流程是選桌、選場景、選圈數。錢會累積,卡片可合成升級,代打可逐級購買。

  • 沒有救濟金。輸光後等信箱每天的 500 元。
  • 贏錢抽 10%,放進全體玩家共用的獎池。
  • 商店價格隨持有金額提高,每天的 500 元不能直接買東西。
  • 重複的卡自動合成,最高 Lv3。
  • 加入 6 張詛咒卡,只有壞處,混在抽卡池。

道具店的兩位老闆

商店原本是一排按鈕:抽卡、加卡槽、移除卡、升級代打。這天重做:背景改為復古展示櫃,商品擺在櫃上,旁邊站一位老闆。

金大叔和夏海各兩種表情的半身圖
左邊兩張是金大叔,右邊兩張是夏海。各有八種表情:打招呼、抽卡、卡槽、移除、代打、送客、錢不夠、輸光。

金大叔:韓國大叔,口頭禪「阿一古」,常提炸雞、泡菜、燒酒。出現機率九成。劇情裡講台灣國語腔,「是」說成「素」,「說」說成「縮」。

夏海:講話直接,偶爾夾日文。出現機率養成模式一成、劇情模式一成五。只有她賣兩樣東西:遊戲加速 GOGORU(1.5 倍免費,2 倍、2.5 倍、3 倍分別 1,200、1,800、2,400 元,永久有效)和角色艾文芒果。她也是首頁的引導員。

每次進商店,先決定誰顧店,再決定口氣。口氣五種:俏皮、推銷、鼓勵、酸人、普通,整次造訪用同一種。點商品,老闆用這個口氣說明功能和價格。

金大叔介紹抽卡的五種說法:

口氣台詞
俏皮閉上眼睛、心裡喊三聲「金價大牌」,會出好東西喔~
推銷隨機一張能力卡,抽到一樣的還會自動合成升級,超值!
鼓勵抽一張吧!換一個翻身的機會,大叔相信你手氣會來。
酸人抽到爛卡別哭著來找大叔退錢喔。
普通隨機拿到一張能力卡。兩張相同同等級的卡會合成升一級,最高 Lv3。

夏海的說法:「抽到什麼算你的命,別怪我。」

特殊情況另有台詞。錢不夠:「大叔這裡不能賒帳喔」。抽到詛咒卡:提醒可用櫃上的剪刀移除,價格兩倍。輸到坐不了桌:提醒去信箱領 500 元。

加入劇情後,兩位老闆也是劇情裡和玩家角色對話的人。

同一天完成:劇情模式輸光的敗北畫面(一男一女抱頭痛哭,副標題「你的靈魂和肉體已經脫離,請投胎後開始」);每次更新顯示玩家版更新公告。

角色選擇

進任何模式前先選角色。版面參考格鬥遊戲:左邊 3D 角色,右邊頭像。點頭像換角色並播放自我介紹。初始三個角色,其他達成條件解鎖。

角色選擇畫面的草稿,霓虹舞台上站著角色,右側是頭像格實際的角色選擇畫面,左側 3D 角色,右側頭像,下方有角色能力說明
左:草稿。右:成品,左下角的能力說明是 v1.11 加的。

修改:腳沒有踩地的感覺,下半身和鞋子重做;站姿手部僵硬,重調;新增拖曳旋轉。

11 月 8 日|角色全部重做

角色選擇把角色放大後,舊模型顯得粗糙。改用新流程:四面圖轉 3D 模型,再接骨架和表情。第一個是新角色藍小熊,效果好,其他角色全部照做。

新舊角色模型並排比較
左邊兩位是舊模型,右邊兩個是藍小熊新模型的兩次測試。

遇到的問題:

  • 模型的臉和設定圖不像。原因是四面圖沒有檢查就送出。改為先確認臉、眼睛、表情再送,避免浪費生成費用。
  • 辮子在背面圖畫錯。原因是描述太複雜。改為「辮子自然垂在背後」。
  • 臉上有黑色色塊、下巴發黑、眼睛重複貼圖。逐一修正。
  • 部分表情貼圖讓臉變髒,例如龍哥張大嘴。停用。

另外用捏臉軟體做了兩個角色:櫃檯客服葉朝顏、工程師艾文芒果。艾文芒果用我自己的聲音。

劇情

每個角色有自己的故事,例如找一隻叫小肥花的貓、吃不到的滷肉飯、半夜的臭豆腐味。所有故事最後都到艋舺龍哥麻將會館。對話在玩家角色和兩位老闆之間進行,每個節點一段,可跳過。

每個角色有 10 種表情的半身圖。選定角色後,這一趟不能換人。

劇情彩蛋

第一輪故事寫完後各自獨立。修改要求:所有故事發生在同一個台北,每個故事裡放幾件屬於其他故事的小事。

重複出現的東西有八樣:

  • 小肥花:很胖的橘白貓,琉花故事的主角。
  • 戴墨鏡的鴿子:會排隊、會點頭,只說「咕」。
  • 流浪滷肉飯攤:布簾寫著「今天在這,明天不知道」。
  • 凌晨三點的臭豆腐味:人稱「三更臭」,雪山上也聞得到。
  • 心法殘頁:秘笈缺的那幾頁,有一頁被拿去墊桌腳。
  • 「紅蟲」紀念牌:把「紅中」印錯字的麻將牌。
  • 金龍杯碎片:摔碎的獎盃。
  • 十年之約:龍哥在每個結局都提到,他在等一個船上的老朋友。
小肥花、戴墨鏡的鴿子、滷肉飯攤老闆娘三個彩蛋角色
小肥花、墨鏡鴿子、流浪滷肉飯攤的老闆娘。

以小肥花為例:

  • 紫音的故事:娃娃機玻璃上的尋貓啟事。
  • 密室事件:現場有橘色貓毛。
  • 賭神的故事:紙條背面有貓腳印和鮭魚味。
  • 大海的故事:打翻滷肉飯的胖貓,項圈刻著「小肥花」。

七個故事各自埋了哪些線索:

故事出現的彩蛋
第五張紅中小肥花、流浪滷肉飯攤、三更臭豆腐味
金龍杯密室事件小肥花、心法殘頁、紅蟲紀念牌
十六張心法三更臭豆腐味、金龍杯碎片
賭神流浪記墨鏡鴿子、小肥花、流浪滷肉飯攤
尋找小肥花流浪滷肉飯攤、心法殘頁、三更臭豆腐味
吃不到的滷肉飯小肥花、墨鏡鴿子
半夜的臭豆腐紅蟲紀念牌、小肥花、金龍杯碎片

這些線索在龍哥的故事裡交代來龍去脈。虎婷婷的故事也接上同一組線索,另有 6 個新彩蛋。

彩蛋對白出現時蓋彩蛋章,並記入蒐集紀錄。v1.7.1 上線時共 8 個故事、32 個彩蛋。目的是讓玩家換角色再玩時,認出上一趟看過的東西。

劇情插畫,夾娃娃機上貼著一張橘貓的尋貓啟事
「尋找小肥花」的劇情插畫。

同一天完成:載入時的聽牌小測驗;結算畫面加角色頭像,贏家彩色、輸家黑白;首頁加入夏海,點按鈕時說明功能。

11 月 9 日|手機直拿

玩家回報:手機畫面放大後,結算的「確定」按鈕點不到。修了兩次。

新增直拿版面,橫拿不變。直拿時牌桌在中間,手牌放大成兩排在下方,剛摸的牌分開並加金框。首頁、商店、地圖、劇情、角色選擇都有直拿版。選牌桌和選關卡改為左右滑動。

手機直拿時的牌桌畫面手機直拿時的劇情畫面
直拿的牌桌和劇情畫面。

為了之後上架 iOS 和 Android,同時處理:瀏海手機按鈕被擋、小按鈕不好點、Android 返回鍵直接關閉遊戲。

劇情模式節奏加快:一般桌最少 2 局、魔王桌 3 局,達成條件即過關,畫面顯示「通關所需 x/y」。牌桌提示刪掉教學文字,只顯示誰打出什麼,並直接用角色名字。

11 月 10 日|v1.11

頭髮、新角色、牌桌

雪乃的長髮和紫音的雙馬尾加上走路時的擺動。坐下前頭髮會亂跳,改為只在進場走路時擺動。

新角色虎婷婷:龍哥在泰國的女兒,脾氣火爆,講話夾泰文。她和龍哥的衣服在舉手時會被手臂帶著變形,已修正。角色解鎖統一為信箱收信,開信後角色說開場白。

牌桌重新設計:六個場景各有桌面和椅子,出牌有漣漪,場景有雨、霧、雪、煙火。桌邊閃爍燈條刺眼,改為柔和的效果。

NPC 思考時間

靜音時,對手出牌後另一家立刻碰走,看不清楚打了什麼。改為電腦在吃、碰、槓、胡之前隨機停 0.3 到 1 秒。

角色能力

每個角色一個被動能力,有強項也有短板,數字小。選角畫面和角色資訊卡會列出兩者。角色能力和技能卡作用在同一件事時,大的算全額,小的算四分之一。

結算畫面

原本是一張表。改為牌一張張排出、台數逐項蓋章、金額跳動,背景依場景換色。

成就殿堂

30 張成就,美式漫畫風。依已有戰績計算,舊玩家開啟時會有已達成的項目。

成就殿堂頁面,兩排漫畫風成就卡,兩側是金色柱子和獎盃
成就殿堂。

獎勵只有外觀:稱號、頭像框、牌背、桌布、結算特效、吉祥物。修改兩處:測試時成就全部顯示為已解鎖;稱號文字蓋到桌上金額。

點數原本是門檻,改為消費。點數最多 58 點,全部買要 75 點。重置要付養成模式資金,第一次 5,000 元,每次加倍,上限 80,000 元。

傾斜視角和載入畫面

手機傾斜時,牌桌視角跟著移動。載入畫面從靜止圖改為動態:背景緩慢移動,加上光線、火花和紅紙。

困難與做法

問題原因做法
角色不好看沒有設定就開工先寫設定、畫設計草稿,再做模型;之後全部重做
模型的臉不像參考圖沒檢查四面圖先確認再送,描述寫簡單
闖關單調每次路線一樣分岔地圖、卡片每趟歸零、三選一
卡片強弱失衡技能不能蓋過麻將本身有強項必有短板;疊加時小的算四分之一
看不清誰做了什麼多數人靜音玩叫牌貼圖、提示用角色名字、電腦動手前停頓
手機畫面卡住玩家拿手機的方式不同新增直拿版面
獎勵沒有取捨全部都拿得到點數消費且買不完;重置有代價

接下來

線上對戰開發中:配對人數不足由電腦補位,斷線由電腦接手。另一個目標是上架 iOS 和 Android。傾斜視角的方向和幅度還需要在更多手機上確認。

遊戲網址:taiwan16r.lovemage.workers.dev(免費,不用下載)。本文依版本更新公告、設計文件和修改需求紀錄整理。

想用 AI 把點子做成能玩、能用的產品?

OceanAds 從需求拆解、原型到上線,陪你用 AI 工具把一個具體的想法做出來。

聊聊你的專案

延伸閱讀