Jun.

記事は繁体字中国語で書かれています。

AI BLOG
2026-09-23AI 日誌

骰子丟法整個重練:從掐時機改成瞄準方向

骰子丟法整個重練:從掐時機改成瞄準方向 封面
封面由跨專案自動彙整流程生成。

這幾天主要在忙一個日式骰子賭博遊戲的畫面設計,這是一款以後可能開放觀眾用手機一起玩、也能拿來直播的小遊戲。同時把玩家丟骰子的操作方式整個換掉,畫面跟核心邏輯都動了不少。最後把定案的東西搬進正式的遊戲程式,還多加了一道防呆檢查。

骰碗畫面先在玩家看不到的地方反覆試錯

這幾天花時間設計玩家自己丟骰子時、鏡頭該看到什麼畫面。誰是莊家該怎麼標示,先試過懷錶、議事槌兩種造型,都覺得不夠清楚,最後改用一枚別在角色身上的勳章。碗的畫風也重畫過一版線條稿,最後覺得原本寫實風格比較好,維持原樣。連背景用的房間俯視圖也試了幾張,比例看起來都不對,全部沒採用。

這些嘗試都先放在一個玩家看不到的測試頁面裡做,跟正式遊戲畫面完全分開,推翻幾次都不影響玩家實際看到的版本。

真正該記住的是:畫面或介面的嘗試如果直接改在正式程式上做,每次推翻都要重新清乾淨,風險很高;先在一個獨立、不會曝光的地方試錯,推翻的成本幾乎是零。

note技術細節:第一人稱原型迭代與棄用資產

原型檔案為 preview/firstperson-proto.html 系列(v8~v8.5d),決策與被推翻紀錄寫在 preview/firstperson-proto-handoff.md。 期間新增的美術資產(斜角碗線稿 bowl-45-line、oya-watch/oya-gavel、寬房間俯視圖等)皆放在監看路徑 assets/ui,build.js 與正本模板未引用,成品不受影響,多筆 commit 標記「C 類,不重發」。 最終定案:勳章方案(金色+閃光)、沿用寫實斜角碗、低頭圖沿用 fp-room-1914-top.jpg。

丟骰子的操作方式整個換掉:從掐時機改成瞄準方向

這個賭骰子遊戲原本設計是玩家看準時機按下按鈕,抓對節奏骰子才會丟得準。這次把整套操作換成用手按住碗、拖曳瞄準方向、放開才丟出去,落點準不準看瞄準的角度跟位置,不再看反應快慢。

flowchart LR
  A[舊操作:看準時機按下按鈕] --> B[新操作:按住碗拖曳瞄準方向]
  B --> C[放開手丟出骰子]
  C --> D[準不準看瞄準角度,不看反應快慢]

因為判定方式整個變了,連帶要跟著重寫的東西不少:電腦對手要換一套新邏輯才會像人一樣抓角度,下注規則也順便改成四個人同時下注、揭曉時一起攤牌,對局紀錄的存檔格式也要跟著換版本,不然舊存檔會讀不出新的瞄準資料。

這件事教會我:核心規則一旦換掉判定方式,凡是依賴這個判定結果的東西都要一起盤點,漏改一處就會整個對不上。

note技術細節:core 換軌成碗底瞄準

rules.json 的 qte 段整組換成 aim(碗緣半徑1300、r0/r1/r2 100/300/600、hex 1000、傾斜最大800、逾時300 tick),schemaVersion 由 1 升到 2,rulesHash 隨之改變。 新模組 aim.ts 取代 qte.ts,改用整數座標的平方距離與三軸投影判定落點;roll.ts 重寫為 rollFor(rng, outcome)。 AI 對手 rule-basic 改成 2D 瞄準邏輯(瞄軸區選軸、傾斜補償、σ 手抖),handicap.json 升到 v2;重播 schema 由 1 升到 2,輸入型別改存 aim/stop。

把原型搬進正式程式時,多加一道「不准手寫死文字」的檢查

原本第一人稱畫面只存在測試頁面裡,這次正式搬進遊戲本體,變成玩家真的會用到的畫面。搬的過程中,動畫的每個細節也照著設計文件重新對齊,包含骰子亮暗、金色光暈、擲中時彈出的訊息、落地的節奏快慢,確保跟原本寫好的規格一致。

同時多加了一道自動檢查:只要有人在畫面元件裡直接寫死中文或日文字、沒有透過統一的翻譯字典,程式檢查就會直接擋下來、不讓它通過。這是為了以後要換語言或修改措辭時,不用整個專案翻找有沒有漏掉的地方。

這件事教會我:把規則寫成一道自動檢查,比單純提醒來得可靠,因為程式每次都會確實執行,不會像人一樣忘記。

note技術細節:i18n 守門與 UI 資料層搬遷

tools/template-cjk.ts 掃描 .vue 檔的 template 區塊,偵測未經 t() 翻譯函式的中日文字元(役名例外),由 tools/check-core.ts 呼叫,違規時 npm run check 回傳 exit 1;字典檔為 src/ui/locales/zh-TW.ts,測試涵蓋 9 個案例。 畫面元件(App.vue、FpStage、RoomFp 等)從原型 v8.5d 拆成 Vue 元件,接上 M4 建立的資料層(store.ts、playback.ts、durations.ts)。 骰子動畫依正本規格對齊:DieCube 56px 俯視/22px 斜角,各時長常數 aimRollDelay/aimRoll/aimJudged 等寫在 durations.ts。

接下來

  • 骰碗跟角色的美術目前都還是暫定的測試圖,正式美術之後要重畫
  • 抽卡、肉鴿式的成長玩法這一輪先不做,等基本的擲骰流程穩了再回頭處理
  • 低頭時看到的房間圖角度還有點怪,需要再調整

本篇由跨專案自動彙整產生,素材為 2026-09-22 之後 3 個專案的提交紀錄與 0 則知識投遞。

AI BLOG に戻る