直播用骰子遊戲 開發進度複盤

我的 AI 虛擬主播需要一款能在直播時自己玩的遊戲,但角色玩遊戲時不開口解說,看點只能靠畫面自己撐起來。
這款直播用的骰子遊戲還在開發中、名稱未定,這篇隨進度定期更新。
角色不出聲,所以選了光看畫面就懂輸贏的題材
下棋或猜字這類遊戲,緊張感藏在玩家腦中的盤算,沒人解說,觀眾只看到棋子在動。三顆骰子比大小是三十秒就能看懂的日式賭局,起伏很大,賭注和骰子全擺在桌上。
成長玩法用肉鴿,也就是每次重來、邊玩邊抽技能往上打的遊戲類型,讓簡單的規則能一直玩下去。
note技術細節:題材的四把尺
チンチロリン三骰規則加上 Balatro 式 roguelite 層,單人對三個 AI 對手,資金歸零即結束。
選題四把尺:看得懂、有看點、確定性(同種子重跑一致)、張力視覺化。第四把因「玩遊戲=純腳本、不出聲」的決策而新增。
直播端的 VTuber 透過 GET /state 讀局面,回應帶人話欄位,觀眾問「在玩什麼」時塞進對話 context。
同一套規則要在三個地方跑,所以只寫一次
這款遊戲要在直播機上讓程式自動玩、在觀眾手機上給人玩,還要在後台全速跑測試數值。三個地方各寫一份規則遲早會對不上,所以我只寫了一份規則引擎,同時能在瀏覽器和電腦程式裡跑。
骰子結果先由亂數決定,動畫只負責演出,就像開獎前號碼已經封在信封裡。同一場對局因此能原封不動重播。
flowchart LR A[一份規則引擎] --> B[直播:程式自動玩] A --> C[網頁:觀眾用手機玩] A --> D[後台:全速跑數值測試]
note技術細節:確定性核心
src/core/ 純函式、全整數,禁用 Math.*、Date、DOM;tools/check-core.ts 與 tsconfig.core.json 機械擋違規 import。
重播檔為 JSONL,每回合 checksum,規則檔 SHA-256 指紋不合即拒放。
既有的 Python 模擬器降為黃金答案,vitest 讓 TS core 逐項對帳。
headless driver 用虛擬時鐘,10,000 局約 7.7 秒;npm run check 串起型別、對帳、headless、build。
介面用 Vue 3,直播 16:9 與手機直式共用元件,只換兩個薄版面殼。
程式代打必須會失手,觀眾才不會覺得 AI 在作弊
程式代打點按鈕永遠精準,觀眾自己玩會失手、主播卻從不失手,看起來就像開外掛。所以代打的準度加上一段可調的「手感」誤差,主播會真的失手,手感也順勢變成能靠技能提升的能力。
note技術細節:手感參數
腳本玩家 decide(view, rng) 在命中點上加高斯抖動 σ,σ 查表、不進 core,agent 亂數無狀態。
換成碗底瞄準後,手感模型擴為(σ, 傾斜補償率)兩個參數,排在後續任務。
數值測試證明技術接錯了位置,擲骰方式整個換掉
設計目標是「技術決定下限、運氣決定上限」,寫成判準跑數值測試,結果沒有達標:打得準只能提高稀有組合的機率,決定大多數勝負的點數大小完全碰不到。
新的擲骰方式像射箭:按住瞄準碗底、放開擲出,落點打中哪一區就決定結果屬於哪一類,同一類裡哪一面朝上才交給運氣。
note技術細節:從雙條 QTE 到碗底瞄準
舊機制(力度條+準度條)唯一出口是出役機率 +5pp,作用在 base 僅 5.6% 的稀有役上;力度條另有「盡量高但別爆」的支配策略。 平衡報告 v2 三判準:σ=0 前兩關死亡率、σ 0→0.3 期望關數落差、最高持有金 p90/p50,全數未達門檻。 靶面:中心圈 ピンゾロ、ヒフミ 環、ランダム 環、外圍六角六格,每格兩面相加為 7(骰子對面),打中一格拿到的是「軸」。 準心起點隨機化(碗心 0〜2.00 Rt 面積均勻),避免「按下立刻放開」零成本命中碗心。
會忘記的同步工作,交給程式擋下來
介面展示板本該隨每版更新,實際上常隔好幾版才補,而且補得東缺西漏。發布紀錄記下每個展示網址對齊到哪一版,收工時程式自動比對,落後就擋下;要補的時候,由程式列出樣式增減清單照著補。
note技術細節:發布帳與擋停
docs/ARTIFACTS.md 記每個網址已對齊的 commit;Claude Code 的 Stop hook 比對 <已對齊>..HEAD 是否動到監看路徑,落後就 exit 2 並列出 commit。
只擋已 commit 的落後,工作目錄未提交只提醒,避免迭代中每回合被打斷;認 stop_hook_active 防無限迴圈。
落後的 commit 逐一歸類:改內容、只重發、不影響。css-stats.mjs 比對樣式 baseline,列出新增或消失的色碼、動畫、字級、token。
規則引擎能跑了,但要先換掉舊地基才能接上畫面
規則引擎、程式代打和數值測試管線都已做完,但全是照舊的擲骰方式蓋出來的。新玩法只活在介面預覽頁,數字還在實玩調整。
接畫面的工作先暫停,等玩法定案、規則文件重寫、引擎換上新機制再繼續,免得蓋在要拆的地基上。直播執行程式與手機版面還沒做,平衡也要在新機制下重測。結算特效的原型畫面不採用,程式碼留作素材。
note技術細節:換軌任務層
Phase A(core)與 Phase B(headless、人話敘述、平衡報告)已完成,狀態維持完成、紀錄不刪,由後繼任務接手。 瞄準玩法的各項數字還在實玩定案;已知準心繪製位置比實際計分位置外偏約 3%,須先修才能判斷圈半徑手感。 規則正本與「技術/運氣分工」的措辭,等玩法定案後一併改寫。
相關
- AI-VTuber 專案複盤 — 這款遊戲要接上的直播主播