邪門射龍門 App:技術清單與開發過程

邪門射龍門是一款把撲克牌射龍門做成計分遊戲的 iOS App,可以單機玩、和 AI 角色同桌,也可以開線上房間和朋友一起玩。這篇整理它用到的技術和開發過程。規則可以看射龍門怎麼玩。

基本資料

  • 平台:iPhone / iPad,iOS 16 以上
  • 規模:Swift 90 個檔案、約 2.1 萬行
  • 模式:現場發牌、練習、積分大亂鬥(和 AI 同桌)、線上房間(最多 8 人)
  • 語言:繁中、英文、日文

App 端

  • SwiftUI + MVVM:Models / ViewModels / Views / Services 分層
  • Swift Charts:結算畫面的分數走勢圖
  • StoreKit 2:打賞(Tip Jar)與「移除廣告」內購
  • Google Mobile Ads(AdMob):橫幅廣告;UMP 處理廣告同意視窗
  • Firebase Analytics / Crashlytics:使用數據與當機回報
  • Network:偵測斷線,線上房間斷線時自動跳過這一手
  • PrivacyInfo.xcprivacy:隱私權清單

線上房間

  • Firebase Realtime Database:房間狀態與每一手的事件
  • Firebase Auth(匿名登入):不用註冊就能開房、加入
  • App Check(App Attest,舊裝置退回 DeviceCheck):只讓真的 App 連進資料庫
  • 安全規則:房主才能改房間設定、房號格式固定、房間最多存在 2 天,過期房間開新房時順手清掉
  • 共用亂數種子:同一個 seed 洗出同一副牌,各裝置看到的牌序和 AI 台詞都一樣

AI 角色

  • 20 位歷史人物當 AI 對手,每位有自己的六維人格參數
  • 決策引擎:參考展望理論、Kelly 比例、情緒 tilt、近失效應,決定這一手要不要射、投入多少分
  • 台詞:依局面(寬門、窄門、連續失手等 12 種情境)挑選,三種語言共 837 句
  • 回測工具:另寫一組命令列程式,用 swiftc 直接編譯 AI 核心,跑大量對局做角色審核和平衡調整

開發過程

版本 日期 重點
1.0.1 2026-03 首次上架:發牌、射門、同門選上下、打賞
1.2 2026-03 機率面板:依剩餘牌算出過門/撞柱/出界機率
1.3 2026-04 互動式教學、洗牌動畫、Crashlytics、單元測試
1.4 2026-04 多人計分模式(積分大亂鬥)
2.0 2026-04 20 位 AI 角色、結算畫面改版
2.1 2026-04 支援直向;加入橫幅廣告
2.3 2026-04 練習模式改版
2.4 2026-04 外觀模式(深色/淺色)與牌背顏色調整
2.6 2026-10 每個模式的端到端 UI 測試
3.0 2026-10 線上房間上線
3.1 2026-10 「移除廣告」內購;AI 台詞依局面挑選

踩過的坑

  • App Store 審查與賭博用語:射龍門在現實中常拿來賭,App 內只要出現下注、底池、籌碼這類字眼就可能被退。全部改成遊戲用語(投入、累計、積分),寫成專案規則,所有新字串都要照這份對照表
  • 購買項目載入失敗時一直轉圈:打賞的內購項目載不出來時畫面一直轉圈,審查因此被退。改成顯示「重試」按鈕
  • 免廣告期限可以被調時鐘延長:打賞送 7 天免廣告,玩家把手機時間調回去就會一直有效。改成時間倒退時不延長期限

工具

  • Xcode、XCTest(單元測試 + 每個模式走完一輪的 UI 測試)
  • XcodeGen(project.yml 產生 Xcode 專案)
  • Claude Code:寫程式、code review、App Store 截圖與送審資料

下載