JSG11 保齡球 — 完整企劃書
TM 小曹 · 2026-06-24 v2.7:炸彈瓶確認 Stage 5×1(BW-184)+ 門檻/挑戰加分各關遞增(來源 JSGBowlingSetting.txt)| 上版:v2.6 炸彈瓶 + 字卡 1.0s

JSG11 保齡球

單人闖關 · 兩階段投擲 · 5 關機關闖關 · 全局曲球
類型 運動 / 體感
模式 單人 5 關闖關
球數 每關固定 10 球
門檻 遞增 24/48/68/88/96;挑戰加分 +10/+20/+30/+40/+50
製作 5/18 ~ 7/B(1.5 月)+ Alpha 0.5 月
CP 7/7 一次驗收

1遊戲核心

單人闖關保齡球遊戲。採用 兩階段投擲操作(旋手腕選位 + 看時機推出選角度),全局新增 手環角加速度驅動的旋轉球路,玩家可主動曲球避開機關。

5 關闖關制 + 簡化分數制(Open / Strike,無 Spare)。每關有獨立機關特色(障礙物 / 風 / 黑洞 / 地雷),鼓勵玩家學習各關策略並挑戰附帶任務。

關鍵賣點

🎯 玩家技術定變化

手腕扭動量直接決定球軌跡彎曲程度。練熟 = 主動曲球避機關,重玩價值來自操控精進。

🎪 5 關 5 種樂趣

標準 → 障礙物 → 風吹 → 黑洞 → 地雷。每關一個機關,位置固定可學,附帶任務 +10 鼓勵嘗試。

🧠 規則簡單客服好解釋

只有 Open / Strike,無 Spare、無連擊獎勵、無強化球。心算容易、UI 顯示絕對分數。

⚠️ 前端與規則重做

演算法層(Andros 既有 OnPush / OnRotate / OnConfirm)沿用,除此以外全部重做(含遊戲規則)。時程風險詳見「開發」分頁。

2設計哲學

簡化勝過複雜

規則直白、玩家心算容易、客服解釋簡單。寧可砍規則也不增加心智負擔。

沒有失敗 ≠ 沒有後果

不會 game over 整輪重來,但沒過門檻會回大廳重新選關(不解鎖下一關)。

挑戰非必要、但有設計重量

附帶挑戰任務(+10~+50,各關遞增)計入門檻,鼓勵玩家嘗試但不強迫。

變數在玩家、固定在機關

旋轉量由玩家手腕扭動決定(操控變量);機關位置固定(玩家可學、QC 好平衡)。

3操作系統 — 兩階段投擲

沿用 Andros 既有 input pipeline(演算法層),唯一新增是階段 2 的「箭頭自走擺動」取代冰壺的「手腕主動轉角度」。UI 層所有實作重新撰寫(不沿用冰壺前端 code)。

1
階段 1 — 選位置(站位)
玩家 手腕垂直地板(手心朝內),旋轉手腕(左右側轉)→ 對應球道上球的初始 X 站位。
使用 Andros 演算法 DetectRotate(✅ 沿用)+ JSG11_StancePositionUI(❌ 自寫),roll 角度越大,multiplier 越大(站位變化越快)。
2
階段 1→2 — 手放下鎖站位
手放下(手腕從垂直轉為水平 / 下垂)→ 觸發冰壺 OnConfirm 事件 → 鎖定站位 → 進入「推球準備」狀態。
3
階段 2 — 瞄準箭頭自動擺動
瞄準箭頭以 DOTween 連續擺動(無鎖方向動作)。
新增 取代冰壺 SetObjectRotation() 的手腕主動轉角度。
4
階段 2 — 看時機推出
玩家 看時機推出(揮臂)→ 觸發冰壺 PushCurlingOnPush(forcePercentage)
推出瞬間擷取當下箭頭角度作為球的初始 forward 向量。
5
(可選)重選 — 手往上抬
手往上抬 → 觸發 OnReadjust → 回到階段 1 重選。依 UX 決定是否開放。
📐 鏡頭流程(v1.3)
球出手 → 鏡頭停在投擲視角不動(看球往前飛)→ 過截止線切到 _traceCamera 開始跟球(無 zoom in、無瓶區近景)→ 倒瓶 / 球停鏡頭固定。
沿用冰壺 OverHeadCamera 結算頂視角流程。原 v1.2 PinAreaCamera 已刪除

🎬 字卡播放順序(2026-05-28 v1.4 統一決議)

所有觸發路徑(碰判定點 / 進溝 / Strike / 黑洞吸入 / 球低速判定)走同一序列。最後一球(Finish)後直接切結算,不走黑畫面 fade

球停下(碰判定點 / 進溝 / Strike 即時 / 球低速)
  │
  ├─ 等 3 秒(觀察期;若全倒可提前觸發 Strike)           ← BW-088
  │
  ▼
閘門下拉動畫 + 字卡(Strike/Open/Gutter/Sucked)
  + 分數彈出 + 挑戰面板即時演出(同步)            ← BW-088, BW-091 (Strike), BW-127 (Gutter), BW-131 (Sucked), BW-080~083 (挑戰面板)
  │
  ├─ 若 Strike + 挑戰達標 → Challenge Clear 字卡           ← BW-085
  │
  ▼
分支判定:
  ┌─ 非最後一球 → 黑畫面 fade(BW-087)→ 投擲視角 → 下一球
  │
  └─ 最後一球(Finish)→
       │
       ▼
     Finish 字卡(BW-117)
       │
       ▼  ← 直接切換,無黑畫面 fade(沿用 Lobby Modal 動畫)
       │
     結算畫面(BW-095~101,BW-089 沿用 BW-178 Lobby Modal token)
       │
       ├─ 若打破最高分 → HighScore 字卡                    ← BW-119(NEW)
       │
       └─ 若解鎖新關卡 → New Stage 字卡                    ← BW-118
       

實作關聯:BW-024(鏡頭停止線)/ BW-088(3 秒 + 同步演出)/ BW-119(HighScore)/ BW-089(最後一球流程)/ BW-104(空氣牆)。字卡動畫秒長由綠豆統一(r134 動態階段)。
詳細逐 Phase 演出時機見 UI 頁「單球循環流程」。

4計分系統

結果條件得分備註
Open沒倒完所有正規瓶倒幾瓶 = 幾分
Strike1 球倒完所有正規瓶15 分(10 + 5)+5 加乘獎勵
挑戰任務達成 / 沒達成(binary)+10~+50 分(各關遞增)計入過關門檻

滿分計算

基礎滿分 = 10 球 × (正規瓶 + 5) = 150

含挑戰滿分(各關不同):
  Stage 1:150 + 10 = 160
  Stage 2:150 + 20 = 170
  Stage 3:150 + 30 = 180
  Stage 4:150 + 40 = 190
  Stage 5:150 + 50 = 200

門檻(解鎖下關):
  Stage 1=24  Stage 2=48  Stage 3=68
  Stage 4=88  Stage 5=96

重要規則

  • 沒有 Spare
  • Strike 加乘僅 +5無連擊獎勵
  • Strike 判定只看 正規瓶(障礙瓶、地雷彈飛瓶不影響)
  • 地雷彈飛瓶子也算倒下,仍可 Strike(但挑戰失敗)
  • UI 顯示絕對分數(如「過關 24」各關不同),不顯示百分比
  • 強制打完 10 球,提前達標也要打完

55 關闖關架構

解鎖:打贏本關門檻 → 下一關開放。沒過門檻 → 回大廳重新選關(不退關、不 game over、不顯示 Try Again)。

STAGE 1
標準
場上 10 正規三角陣
機關
滿分 160 / 門檻 24 / 挑戰加分 +10
為玩家建立操作基準,體驗正規保齡球感受。
挑戰:至少 3 次 Strike(結算統計)
STAGE 2
障礙物
場上 10 正規 + 3 障礙
機關 障礙瓶(前排,位置固定)
滿分 170 / 門檻 48 / 挑戰加分 +20
障礙瓶倒下 0 分、跟正規瓶一起重置,每球回到完整佈局。Strike 仍只看正規瓶。
挑戰:不擊倒任何障礙瓶(即時失敗)
STAGE 3
風吹
場上 10 正規三角陣
機關 風場(球道中段、約 1 球道寬 × 1 球道長方形區)
方向 向右側風(垂直球行進方向)
滿分 180 / 門檻 68 / 挑戰加分 +30
球進風場 → 被側向推走,提高洗溝風險。玩家可用旋轉抗風或順風。
挑戰:不洗溝(即時失敗,任一球洗溝即失敗)
STAGE 4
黑洞
場上 10 正規三角陣
機關 黑洞(球道中段偏玩家側)
大小 中心 0.25 m / 吸引半徑 0.75 m
滿分 190 / 門檻 88 / 挑戰加分 +40
球進黑洞影響半徑 → 被吸入 → 該球作廢 0 分。不影響球瓶
挑戰:不要碰到黑洞(即時失敗)
STAGE 5
地雷
場上 10 正規三角陣
機關 地雷(球道中段偏遠端,介於風場與瓶陣之間,一次性)
特殊瓶 炸彈瓶 × 1(擊中後立即在原位刷新)
滿分 200 / 門檻 96 / 挑戰加分 +50
球觸發地雷 → 爆炸 → 被炸瓶彈開(算倒下)。仍可 Strike,但挑戰失敗。
挑戰:不要碰到地雷(即時失敗)
🎯 機關座標參考(2026-06-22 Unity 場景位置調整)

TM 已於 Unity 場景中調整各 stage 機關位置,下圖為球道上視圖(Game 視角)。實際座標以 Unity scene 為準,RD 接手時直接量測。

Stage 機關位置上視圖 — 球道直立,玩家在下、球瓶在上;紅框標示風場影響範圍
Unity Scene Game 視角(Top Down):玩家在下、球瓶在上。紅框 = 風場影響範圍(Stage 3)。2026-06-22 位置調整後版本。

6旋轉球路系統(全局)

全部 5 關每一球都套用,旋轉量由玩家手腕動作決定 — 非隨機抽選、無 UI 提示

機制

  • Input:手環偵測角加速度(玩家手腕扭動方向與強度)
  • 映射:角加速度值 → 球體 transform.forward 軸的 angularVelocity
  • 表現:Unity 物理引擎依此產生軌跡彎曲(連續量、無離散等級)
  • 自然狀態:不扭手腕 → 角加速度近零 → 球直走

設計意圖

  • 旋轉完全由玩家技術決定,不再用「隨機抽 5 種」
  • 重玩價值來自操控精進(練熟後能曲球避機關)
  • 與機關產生策略張力(曲球繞過障礙 vs 被動接受結果)

Owner:Andros

旋轉視覺映射(連續 + 透明度線性,Trail 藍/橘二元)

轉速狀態球體視覺(旋轉 + 透明度)球路 Trail(顏色)
不扭手腕(角加速度近零)幾乎不旋轉、球直走;準備階段 Trail 全隱藏
轉速 < 100%(一般)球體旋轉 + 透明度依轉速線性(越慢越透明 → 消失)藍色一般 Trail(長度依移動速度)
轉速 = 100%(滿轉 / 螺旋丸)球體不透明、高速旋轉橘色螺旋丸 Trail

顏色為藍 / 橘二元(非級距);軌跡彎曲、透明度、Trail 長度才是連續量。對應確認表 BW-108~109(旋轉 + 透明度)、BW-121(Trail 二元,DEC-JSG11-020)。

7團隊分工

角色負責範圍Sheet Row
Andros投擲演算法(手腕 input → 站位 / 力道 / 角加速度映射)118
兔子投擲功能製作 + 戰鬥 UI(HUD / 結算 / 暫停)+ 部分機關119 / 135
Jason計分 / 挑戰追蹤 / Stage 1 2 4 5 / Lobby UI(大廳 / 關卡選擇 / 教學)120 / 134
亞哈UI 美術視覺(HUD / 結算 / 卡片 / 字卡 / 按鈕配色)— HUD + 字卡 5/18~5/29(r133/r137)+ Lobby/結算/教學 5/25~6/12(r138)133 / 137 / 138
飯茄場景(環型/弧型主視覺)+ 大廳背景(場景的相機角度)+ Loading 圖(場景截圖)128
品杰球、球瓶、機關模型(一般球 / 正規瓶 / 障礙瓶 / 風場 / 黑洞 / 地雷)129 / 130
綠豆VFX(特效)— 5/25 起:機關環境 5/25~5/29(r131)+ 機關事件 6/1~6/12(r132)+ 字卡動態 6/1~6/12(r134)+ 球旋轉/軌跡 5/30~6/26(r135~136)131 / 132 / 134 / 135 / 136
SFX(音效)6/15 起(不等 VFX 全完)+ BGM 6/29~7/17(Alpha 用冰壺 BGM 佔位、正式 2 首待 v2.5)132
小曹(TM)規格 / 排程 / CP 驗收 + Figma 素材交付(5/18~5/22)+ Demo 5/15 後在 Figma 標球道/球瓶尺寸115 / 137

8時程

關鍵節點

日期事件負責
5/15 (五)CP0 規格定錨會議(昨天沒開)三方對齊(TM / 美術 / UI)
5/15 (五)Andros 演算法 v1 交付(單點關鍵路徑)Andros
5/15 (五)Demo 完成(球道/球瓶尺寸今天定案)RD + TM
5/18兔子實裝(接 Andros v1,先用 TM Figma 素材拼裝兔子
5/18 ~ 5/22TM Figma 素材整理(layout + 元素 + W×H 尺寸 box,row 115)⭐ NEW小曹
5/22 (五)TM 完整交付 Figma 素材給 RD(兔子 / Jason 取座標 / 尺寸 box 拼裝)⭐ NEW小曹
5/22 ~ 6/5美術階段 2 球瓶/球道美術組
5/18 ~ 5/29亞哈 UI 視覺 — HUD + 字卡(r133/r137,戰鬥優先)亞哈
5/25 ~ 5/29綠豆 VFX 機關環境(r131,風場 / 黑洞 常駐)綠豆
5/25 ~ 6/12亞哈 UI 視覺 — Lobby / 結算 / 教學(r138)亞哈
5/30 ~ 6/26綠豆 球路特效(r135~136,球旋轉視覺 + 軌跡光帶)綠豆
5/31美術階段 1 場景背景白稿完成美術組
6/1 ~ 6/12綠豆 字卡動態特效(r134,Strike 字卡入退場 + 粒子)— 接亞哈字卡設計稿後啟動綠豆
6/1 ~ 6/12綠豆 VFX 機關事件(r132,障礙瓶警示 / 地雷 LED / 地雷爆炸)綠豆
6/5 ~ 6/19美術階段 3 障礙物(視覺先做、大小後期調)美術組
6/12 後Jason / 兔子換亞哈視覺皮(替換 TM 素材佔位)Jason / 兔子
6/15 起鏡 SFX 開工(投擲/撞瓶/Strike/結算先做,不等 VFX 全完)
6/19 ~ 6/26綠豆 VFX 機關(風/黑洞/地雷,接美術階段 3)綠豆
6/29 ~ 7/17鏡 BGM 完成(Alpha 範圍) — 只測 BGM 可否播放,先用冰壺 BGM 佔位;正式 2 首待 v2.5
6 月底素材實裝完成Jason / 兔子
7/7CP 一次驗收(5 關 + 旋轉 + 三機關 + UI + VFX + SFX + BGM)— 多 1 週緩衝給音效小曹
7/B ~ 7/MAlpha(含外整)QC

🎨 美術交付

場景 · 球瓶 · VFX · SFX · BGM
場景 環型 / 弧型主視覺(單一牆面、不轉場)
球瓶 美術組製作
動畫 全物理路線(美術不做動畫)
角色 無角色形象

1風格框架 美術

給美術組的初始 brief — 場景風格以美術組提供之 ref 為主。

🎯 整體調性

  • 圓潤造型、誇張比例
  • 與 JSG 系列其他遊戲(冰壺 / 高爾夫)調性一致
  • 偏向復古暖色保齡球館(不要太硬派、不要賽博龐克)
  • 單一牆面主視覺、不做轉場

📐 場景原則

  • 環型 / 弧型主視覺(5/10 美術會決議)
  • 不超過單一牆面、鏡頭無破綻
  • 不需動態鏡頭切換場景
  • 球道與主視覺可分離製作(球道長度依 Andros v1 實測再定)

🎭 角色 / 動畫

  • 無角色
  • 無投擲動畫(全物理路線)
  • 球 / 瓶 / 機關互動全交給 Unity 物理引擎
  • 美術唯一交付:模型 + 材質 + 物理參數(mass / collider / 摩擦 / restitution)

🎬 視覺重點

  • 球體旋轉視覺連續變化(旋轉量大 = 尾跡明顯)
  • 正規瓶 vs 障礙瓶視覺要明顯區分
  • 機關影響範圍可視化(風線 / 旋渦 / 警示燈)
  • Strike 字卡視覺強烈(+5 加乘要爽)
🎨 美術提供的場景參考板(Miro)
美術組於 5/14 提供場景 ref:https://miro.com/app/board/uXjVHUlh-wo=/
後續新增 ref 由美術組直接傳給 TM(不需上傳到本 repo)。

2美術交付清單 美術

依甘特圖 row 126~131 三階段拆分。請美術組依時程交付,TM 會在每階段結束做匯流檢查。

場景三階段(row 127~129)

階段 1 場景 / 背景 / 大廳 / Loading初稿 ✅ 5/21 入庫 → 迭代到 8/M(v2.5)
• 環型 / 弧型主視覺白稿 × 1
大廳背景(場景的相機角度,不另做)
Loading 圖(場景截圖)
2026-05-21 初稿 3 張已交付(構圖+色相 OK,見 §3 預覽)
持續迭代到 8/M(v2.5),細化材質 / 燈光 / 反射
負責:飯茄
階段 2 球瓶 / 球道2026-05-21 提前啟動(原 5/31~6/15)
• 球道模型(支援彎曲軌跡渲染)
• 正規瓶模型(白底紅頸)+ 障礙瓶
• 一般球模型 + 旋轉視覺
• 依 Andros v1(5/15)+ Demo 實測尺寸定案
不等場景細化即可起跑
負責:品杰
階段 3 障礙物 / 機關2026-05-21 提前啟動(原 6/15~7/4)
• 障礙瓶(視覺明顯區分正規瓶)
• 風場(風線 + 風向 + 範圍可視化)
• 黑洞(旋渦 + 邊緣扭曲)
• 地雷(外殼 + 警示燈)
機關模型完成後 → 機關 VFX → SFX
負責:品杰

UI / VFX / SFX / BGM 介入時程(2026-05-22 v2.5 美術 4 列日期校正)

UI — HUD + 字卡5/18 ~ 5/29
• 戰鬥 HUD 視覺 + 字卡集合
不卡場景細化,5/29 前先收
• 接 TM wireframe 後啟動
Lobby / 結算 / 教學另接 5/25~6/12(r138)
負責:亞哈 ✅
VFX 特效5/25 起跑(v2.5 校正)
VFX 優先順序(v2.5):
  5/29 前 BW-129 黑洞旋渦(機關環境 r131)
  6/1~6/12 BW-124 Strike 字卡(動態,r134)
  + BW-133 地雷爆炸(機關事件 r132)
  → BW-134 挑戰達成 +10
原 BW-116 Open 字卡(2026-05-22 刪除)
• 場景元素上 git 後即可開工
BW-120 投擲箭頭已移出 VFX(→ UI+RD)
負責:綠豆 ✅
SFX 音效機關 VFX 完成後接
• 15 項 SFX(BW-135 ~ BW-149)
• 機關 VFX 完成後啟動
• 撞瓶聲合 1(不分大 / 小力)
負責:鏡 ✅
BGMAlpha 6/29~7/17(只測播放)/ 正式 2 首待 v2.5
Alpha 範圍(6/29~7/17):只測 BGM 是否可以播放(播放 / 迴圈 / 切歌),先用冰壺 BGM 作為測試佔位
• 大廳 BGM × 1(正式版待 v2.5)
• 遊戲 BGM × 1(5 關共用,正式版待 v2.5)
• 風格方向 TM 與鏡 v2.5 場景定案後對齊
正式 2 首交付:待 v2.5 再做,避免場景未定就提前白工
負責:鏡 ✅

3場景規格 美術

📸 場景初稿(飯茄 · 2026-05-21 入庫)

三張 1920×1080 概念圖 — 構圖、色相、燈光氛圍方向 OK,可繼續迭代到 8/M(v2.5 以前),期間細化材質 / 燈光 / 反射 / 細節擺設。

大廳場景初稿
大廳 · 關卡選擇背景(環/弧型 + JACFIT 招牌 + 排排球道)
遊戲畫面初稿
遊戲畫面 · 玩家視角(球道 + 球體 + 瓶區概念)
Loading 圖初稿
Loading 圖 · 場景截圖風格一致

📁 原始檔:output/JSG11-bowling/art-references/scenes/ · 對應 BW-102(階段 1 主視覺)

場景結構分層
主視覺背景
環 / 弧型
球道
支援彎曲渲染
瓶區
10 正規 ± 障礙
機關層
風 / 黑洞 / 地雷

場景原則(5/10 美術會決議)

  • 環型 / 弧型主視覺
  • 不超過單一牆面
  • 不做轉場
  • 主視覺確定後維持一致
  • 鏡頭無破綻、無需動態切換

球道需求

  • 直線球道為基底
  • 需支援由 forward 軸 angularVelocity 產生的彎曲軌跡渲染
  • 玩家手腕扭動量 → 軌跡彎曲程度(連續)
  • 溝槽(gutter)視覺需明確
  • 空氣牆(BW-104,2026-05-28 補) — 球道兩側溝外緣加不可見 collider,防球意外飛出場景(高度涵蓋彈起最大值)

攝影機追球(BW-021/022/179)

  • 球出手 → 投擲視角不動(v1.3,BW-021)
  • 球過 起始線 → `_traceCamera` 開始跟球(BW-022)
  • 球過停止線(2026-05-28 補,BW-024)→ 鏡頭停留,球繼續滾入結算判定
  • 倒瓶結束 → 字卡序列(見 §5)→ 黑畫面 fade 拉回投擲視角(僅非最後一球

4球瓶 / 球規格 美術

🎳 球瓶 + 球正式素材(品杰 · 2026-06-08 入庫)

品杰交付 3D 渲染素材:正規瓶(白底紅環)/ 障礙瓶(黃黑斜紋 · Stage 2) / 地雷彈飛瓶(黑底紅環 · Stage 5) / 一般球(紅橘大理石紋)— 造型 / 材質方向 OK,可繼續迭代反射 / 其餘球皮。

正規瓶 — 白底紅環
正規瓶(白底紅環)
障礙瓶 — 黃黑斜紋 · Stage 2
障礙瓶(黃黑斜紋 · Stage 2)
地雷彈飛瓶 — 黑底紅環 · Stage 5
地雷彈飛瓶(黑底紅環 · Stage 5)
一般球 — 紅橘大理石紋
一般球(紅橘大理石紋)

📁 原始檔:art-references/BW_Pin_Regular.jpg · BW_Pin_Obstacle.jpg · BW_Pin_Mine.jpg · BW_Ball_Default.jpg · 對應下方規格表

類型視覺特徵適用物理
正規瓶 標準保齡球瓶、白底紅頸、可辨識 5 關通用 標準 mass + collider
障礙瓶
(Stage 2)
黃黑斜紋
與正規瓶明顯區分
Stage 2 倒下後跟正規瓶一起重置,每球復位回完整佈局
地雷彈飛瓶
(Stage 5)
黑色
與正規瓶明顯區分
Stage 5 被爆炸彈飛 獨立飛行軌跡 + 落地物理(AddExplosionForce)
一般球 標準保齡球(無強化球) 5 關通用 Rigidbody + 旋轉視覺(連續變化尾跡)

5VFX 特效綠豆

字卡分工:文字(字型 / 排版)= 亞哈動態(入退場 / 動畫 / 粒子)= 綠豆觸發時機(容器切狀態)= 兔子

📇 戰鬥字卡(戰鬥字卡集合 · 8 型 + 共用容器,共 9 張,v0.12 改名)

共用容器(「狀態提示字卡」元件)承載 6 種狀態(準備 / 完成 / 全倒 / 新關卡 / 洗溝 / 吸入),挑戰完成字卡High Score 字卡(2026-05-28 新增)為獨立結算特效。

READY
準備字卡
BW-116 · ⭐⭐⭐
進關後直接出現
關卡選擇 → 載入 → 準備(無倒數 3·2·1)
深色卡片 + 「READY」單字置中
FINISH
完成字卡
BW-117 · ⭐⭐⭐
第 10 球結束 → 球停下 → Finish 字卡 → 直接切結算(無黑畫面 fade,沿用 Lobby Modal 動畫)
取代過關「PASS」音 / 光效
深色卡片 + 「FINISH」置中
New Stage
新關卡字卡
BW-118 · ⭐⭐⭐
結算頁 → HighScore(破紀錄才出)→ New Stage(解鎖才出,在 HighScore 之後)
主標「New Stage」/ 副標「關卡 X — 關名 解鎖」
橘色橫條 + 白字 + 上下白色裝飾線
★ STRIKE!
全倒字卡
BW-124 · ⭐⭐⭐
1 球倒完正規瓶(球停止判定瞬間)
深棕底金字 + 副標「+15(10+5)」
GUTTER!
洗溝字卡
BW-127 · ⭐⭐
關卡 3 球進溝瞬間
觸發即時挑戰失敗(剩餘球不再判定)
紅色警示閃光 + 「GUTTER!」字
SUCKED!
吸入字卡
BW-131 · ⭐⭐
關卡 4 球被吸入黑洞瞬間
觸發即時挑戰失敗(該球 0 分)
紫色警示 + 球被吸入扭曲
✦ +10
挑戰完成字卡
BW-134 · ⭐
挑戰任務完成判定
關卡 1(結算統計達 3 次全倒)/ 關卡 2~5(10 球結束未觸發失敗條件)
金色徽章彈出 + 副標「+10」
[共用容器]
狀態提示字卡(共用容器)
容器本體 · 戰鬥畫面內
承載 6 種狀態:準備 / 完成 / 全倒 / 新關卡 / 洗溝 / 吸入
由程式(兔子)按時機切狀態
統一視覺底框,全部字卡內容置中
🏆 HIGH SCORE
High Score 字卡
BW-119 · ⭐⭐⭐ 2026-05-28 新增
結算頁切入後,若該關打破玩家歷史最高分
序列:Finish → 結算頁 → HighScore → NewStage
金字 + 徽章 + 「+X」差值提示

🎱 球與球路 VFX

球旋轉視覺 — 兩種 spin 對照
球旋轉視覺 + 透明度(v2.0)
BW-108~109 · ⭐⭐⭐
球出手後到球停止
球體旋轉動畫 + 透明度依轉速線性(100% → 不透明,越慢越透明 → 消失)
球體旋轉貼圖 + 透明度 alpha 映射
球路 Trail — 藍 / 橘螺旋丸二元 + 長度依移動速度
球路 Trail v2.0(藍/橘二元)
BW-121 · ⭐⭐⭐ · DEC-JSG11-020
OnPush → 球停準備階段全隱藏
顏色:轉速 < 100% 藍一般 / = 100% 橘螺旋丸
長度:移動速度線性(低於閾值消失)
橘色用「直線骨架 + Trail 動態調整」實作螺旋丸(非 Plane + 骨架曲線方案)

🌀 機關環境 VFX(非字卡)

障礙瓶倒下警示 — 紅色障礙瓶 + 紅三角驚嘆號警告符號
障礙瓶倒下警示
BW-125 · ⭐⭐
Stage 2 擊倒障礙瓶瞬間
觸發即時挑戰失敗
紅色閃光(HUD 變灰已足夠,不需字卡)
風場 VFX — 風線 ribbon + 球被吹偏軌跡
風場 VFX
BW-126 · ⭐⭐
Stage 3 球進入風場區域時
風場本身可常駐顯示
風線 + 風向指示 + 範圍可視化 + 球被吹偏軌跡修正
黑洞 VFX 環境 — 卡通平面螺旋 + 球被吸入拉伸
黑洞 VFX(環境)
BW-129~130 · ⭐⭐
Stage 4 黑洞常駐 + 球被吸入時扭曲
字卡 SUCKED! 另外觸發(見上)
旋渦動畫 + 邊緣扭曲 + 半徑可視化
地雷 VFX — 黑色地雷瓶 idle + 圓潤雲朵爆炸 + 半空 shockwave ring
地雷 VFX
BW-132~133 · ⭐⭐
Stage 5 地雷常駐閃爍 + 引爆瞬間爆炸
警示燈閃爍 + 爆炸特效(2026-05-15 已砍瓶子被彈飛尾跡)

6SFX 音效(15 項)

優先音效觸發時機備註
⭐⭐⭐Ready / Finish 提示音關卡開始 / 結束Finish 兼任過關收尾音
⭐⭐⭐New Stage 進場字卡音BW-118 字卡彈出也作為解鎖下一關回饋音
⭐⭐⭐球出手音釋放瞬間
⭐⭐⭐球滾動音球在球道上
⭐⭐⭐撞瓶聲(單一音檔)球撞擊球瓶不分大 / 小力
⭐⭐⭐球瓶倒下音瓶倒地
⭐⭐⭐Strike 音效(單一音檔)1 球倒完歡呼 + 提示音合 1
⭐⭐倒入溝 gutter 音球出界(Stage 3 挑戰失敗)失敗反饋
⭐⭐障礙瓶倒下警示音Stage 2 擊倒障礙瓶與正規瓶倒下要不同
⭐⭐風場 — 風吹聲Stage 3 球進風場風吹聲已足夠,球偏移聲 v0.11.1 已砍
⭐⭐黑洞 — 吸力聲Stage 4 球被吸入
⭐⭐黑洞 — 吸入音效
⭐⭐地雷 — 引爆聲Stage 5 觸發地雷不做瓶子彈飛聲
挑戰達成 +10 音挑戰任務完成金幣 / 成就音

7BGM

🎵 大廳 BGM

關卡選擇 / 主畫面播放。建議偏向輕快 / 保齡球館氛圍。

🎵 遊戲 BGM(5 關共用)

5 關共用一個遊戲 BGM(不分機關關卡)。

📌 BGM 走向待決
風格方向(保齡球館氛圍 / 流行 / 8-bit)由 TM + 鏡在 6 月場景定案後對齊。

🖼️ UI 規格

15 個畫面 · 元件庫 · 命名對照 · Figma 設計稿 · 流程
v0.12 更新 元件庫獨立成一區 + 戰鬥畫面拆 3 個狀態 + 教學頁拆 3 頁 + 藍牙拆「搜尋中/已連線」2 個畫面
視覺 亞哈(row 133/137,HUD+字卡 5/18~5/29 / row 138 Lobby 5/25~6/12
大廳程式 Jason(row 134,5/18 起先用 TM 素材拼裝)
戰鬥程式 兔子(row 135,5/18 起先用 TM 素材拼裝)
Figma 解析度 1920×1080 橫向(每個元素的寬×高尺寸由 TM 5/22 交付)

1Figma 設計稿 亞哈

亞哈設計稿主頁面。版面草圖 v0.12 已落地(15 個畫面 + 獨立元件庫),亞哈 HUD+字卡 5/18~5/29(r133/r137)+ Lobby/結算/教學 5/25~6/12(r138)接視覺設計。TM 5/22 完整交付 Figma 素材給程式(每個元素的寬×高尺寸)。

JSG11 保齡球(主設計頁)
檔案編號:Kra16tMbARMXT2mp5QVPDc · 頁面節點編號:15099:3041
✅ 版面草圖 v0.12 已落地(15 個畫面 + 元件庫獨立)— 亞哈 5/18 接視覺設計(HUD+字卡優先)
開啟 Figma →

📐 畫面規格(v0.12)

  • 解析度:1920×1080 橫向(保齡球場景偏寬橫向)
  • 15 個畫面(戰鬥畫面 × 3 + 教學頁 × 3 + 藍牙畫面 × 2 + 其餘 7)
  • 畫面名稱改用短名(大廳 / 戰鬥畫面 / 關卡選擇 / 結算 / 離開遊戲 ...),不再用長前綴
  • 藍牙拆 2 個獨立畫面(搜尋中 + 已連線)
  • 獨立元件庫區塊(節點編號 15461:237
  • 頁面名稱:JSG11_保齡球

🔗 其他資源

📌 v0.12 重點變更(2026-05-18 反向同步)
元件庫獨立成一區(節點編號 15461:237)— 30 個元件改一次全畫面同步
戰鬥畫面拆 3 個狀態:基本(節點 15245:25)/ 選位置(節點 15522:738,兩個橘色三角箭頭)/ 瞄準(節點 15522:858,大黑色直立箭頭)— 對應投擲流程「①旋手腕選位 → ②看時機推出」兩段操作
教學頁拆 3 頁:選擇位置 / 丟出保齡球 / 曲球控制(與冰壺「先選位、再推出」分鏡一致)
藍牙拆 2 個獨立畫面:搜尋中(未連線)+ 已連線(手環圖示依裝置型號切換:Jmate1 / Jmate2 / Jmotion)
畫面改名:主選單 → 大廳、關卡選擇(舊長名)→ 關卡選擇(短名)、戰鬥暫停 → 離開遊戲
離開遊戲文案改:「是否回到大廳?」→「離開時分數不會記錄/確定回到開始畫面?」+ 否(紅)/ 是(綠)
新增 8 個元件:載入畫面 / 機關徽章(5 型)/ 選位置箭頭 / 瞄準箭頭 / 分數區塊 / 玩家名稱 / 解鎖分數紙條 / 橘金色確認按鈕
主選單半透明蒙版全彈窗套用:模式選擇 / 關卡選擇 / 結算 / 藍牙 × 2 / 教學 × 3 / 離開遊戲,全部彈窗畫面都加半透明黑色背景。
📌 v0.11 變更(2026-05-14,作為 v0.12 基底)
藍牙雙狀態畫面(v0.12 已改為拆 2 個獨立畫面)
排行榜 → 紀錄改名
模式選擇補雙人模式 鎖定按鈕(畫面 v1.0 上線、程式功能 v1.x 才實裝)
關卡選擇右上「下一關解鎖分數 96 分」標籤
設計稿節點編號同步回 references/figma-map.md

1.1元件庫 亞哈Jason/兔子

v0.12 新增:所有按鈕 / 卡片 / 戰鬥畫面元素 / 徽章 / 對話框 / 教學 / 結算 / 紀錄 / 藍牙都改為「主元件 + 複製品」做法,畫面內全部用複製品拼裝。主元件改視覺一次 → 全畫面複製品自動同步(亞哈 6/1 接視覺只需改主元件)。程式拼裝依複製品節點編號取座標、命名繼承主元件結構。

📌 元件使用約定(v0.12 拍板)
① 畫面內禁止直接畫原生方框 / 文字 取代元件複製品(除畫面標題、註解外)
② 主元件改視覺 → 全畫面複製品自動同步
③ 元件庫節點編號:15461:237,完整節點對照見 references/figma-map.md

元件清單(30 個,⭐ NEW 8 個

類別元件名稱節點編號樣式變化用途
按鈕圖示按鈕15461:1678 種:返回 / 暫停 / 上一頁 / 下一頁 / 回首頁 / 問號 / 略過 / 關閉通用「只有圖示」按鈕
通用按鈕15470:914 種:是(綠)/ 否(紅)/ 關閉(米)/ 確認(橘金 320×90)⭐ NEW離開遊戲 / 結算 / 關卡選擇 / 藍牙 主要動作按鈕
大廳按鈕15461:1323 種:教學 / 紀錄 / 回首頁大廳右下膠囊按鈕
模式按鈕15461:1082 種:鎖定 / 解鎖模式選擇三個按鈕
裝置按鈕15461:1762 種:一般 / 選中藍牙裝置列表
分頁按鈕15477:2602 種:目前頁 / 其他頁紀錄頁 1P / 2P 分頁切換
卡片關卡卡片15461:361 variant:純底卡關卡選擇 5 張卡片。v0.15.8(2026-05-22):master 縮為唯一純白底卡(StageId/StageName placeholder 文字 hidden)。Current variant 已刪除(「當前可玩」被動標記從 BW-061 一併移除)、Locked variant 已刪除(v0.15.1)。所有狀態組合在關卡選擇 frame 內疊:已過關 = 底卡 + 金星 / 鎖定 = 底卡 + 黑 50% dim + Badge/Lock / 玩家當前選中 = 底卡 + Frame/CardSelection cyan 框。2026-06-05:卡片上的機關 icon 已移除Badge/Mechanism component 整組刪除),機關呈現改走遊戲內 3D 模型 / VFX,UI 卡片不再疊機關 icon
戰鬥字卡15461:958 種:準備 / 全倒 / 洗溝 / 完成 / 新關卡 / 吸入 / 挑戰完成 / HighScore共用容器承載 6 種 + 挑戰完成 / HighScore 獨立(共 9 張)
狀態提示字卡(共用容器)15461:94各種戰鬥字卡共用底框
徽章機關徽章 ⭐ NEW15529:3075 種:無機關 / 障礙瓶 / 風 / 黑洞 / 地雷關卡卡片上的機關圖示
挑戰達成徽章15461:181關卡過關金星
鎖頭徽章15461:187模式選擇 / 關卡選擇 鎖頭
戰鬥畫面分數區塊 ⭐ NEW15587:2左上整合「關卡 + 分數 + 目標」
挑戰任務面板15461:219右側挑戰任務面板
球數區塊15461:191右上球數 3/10
選位置箭頭 ⭐ NEW15522:849選位置橘色三角箭頭(181×180)
瞄準箭頭 ⭐ NEW15522:892瞄準大黑色直線箭頭(108×396)
玩家名稱 ⭐ NEW15470:752 種位置:左(1P)/ 右(2P)雙人模式戰鬥畫面玩家名稱(v1.x 啟用)
對話框 / 大廳離開對話框底框15461:227離開對話框白底圓角面板。v0.15.1(2026-05-20):master 內移除原嵌入的 Yes/No 按鈕,只剩白底圓角;按鈕由 Btn/Common Yes/No instance 拼裝
解鎖分數紙條 ⭐ NEW15573:107下一關解鎖分數紙條面板(560×120)
卡片選擇框 ⭐ v0.15 NEW15634:341關卡卡片選擇框(340×610,6px 青色邊框 + 4 角金光點 + 24px 外發光)— BW-068
藍牙連線狀態區15470:994 種:Jmate1 (15899:302) / Jmate2 (15470:95) / Jmotion (15899:305) / 未連線 (15470:96)。連線後依裝置名稱前綴自動切換對應圖示左側 1P 狀態區
裝置列表底框15547:2主面板深灰底 + 8px 橘色裝飾框
載入載入畫面 ⭐ NEW15470:1061920×1080 完整載入畫面(JSG BOWLING + 進度條)
紀錄排行榜列15470:1193 態:黑灰列 Default(其他玩家)/ 米色列 CurrentUserInList(自己出現在榜內)/ 黃色列 CurrentUser(底部固定,分數欄為玩家歷史最高分)排行榜每一行(v0.15.1 後玩家自己分數只保留最高分,由黃色列呈現)
排行榜面板15547:4排行榜深灰底面板(1720×818)
教學教學頁15470:159教學頁白底大圓角容器(含 ‹ › 切頁鈕 + 影片區)
結算結算列15470:130結算面板單列
結算詳情面板15547:6結算 4 列圓角白底面板(1000×500)
最高分徽章15565:2突破最高分金色徽章(條件式顯示)
🎨 Figma 元件 PNG 對照
每個元件樣式變化已獨立匯出至 output/JSG11-bowling/figma/components/,供亞哈 6/1 接視覺時對照參考。檔名 ↔ 節點編號對照見 output/JSG11-bowling/figma/INDEX.md

2流程圖 UI開發

App 啟動 → 大廳 → JSG11 主選單 → 模式選擇 → 關卡選擇 → 戰鬥 → 結算 → 回大廳。

大廳到戰鬥的主流程
App 啟動
登入
大廳
點 JSG11
JSG11
主選單
點擊開始 / 教學 / 紀錄
藍牙檢查
已連跳過
模式選擇
教學 / 單人 / 雙人(v1.x)
關卡選擇
5 卡片
戰鬥流程
10 球循環
結算
PASS / 未達標
回大廳
解鎖下一關 / 重打

關鍵操作流程決議

🔒 教學關卡強制進入

未進過教學關卡前,模式選擇下「單人模式按鈕鎖定」(灰階)。進入教學關卡後(無論是否過關)即解鎖單人模式。

👥 雙人模式畫面上線

JSG11 v1.0 雙人模式畫面已上線(模式選擇含按鈕、紀錄頁含 2P 分頁),程式功能 v1.x 才實裝。現階段鎖定樣式表達「教學關卡尚未完成」。

⚙️ 無設定入口

遊戲內主選單不放設定按鈕,jacfitness 設定統一在 App 大廳。

🔁 沒過關回大廳

沒過 → 回大廳重新選關(不顯示「再試一次」字眼),玩家自行決定是否重打。

315 個畫面清單 亞哈Jason/兔子

v0.12 — 15 個畫面(戰鬥畫面 × 3 + 教學頁 × 3 + 藍牙畫面 × 2 + 其餘 7)。命名鎖結構:亞哈設計時用同樣命名、程式實裝時用同樣命名 → 零翻譯成本。畫面改用短名(不再用長前綴)。

1大廳 15245:2
大廳
範圍大廳
視覺亞哈
程式Jason
v0.12原長名「主選單」改為短名「大廳」(節點編號不變)
對齊 JSG10 網球:左上多國語系遊戲標題 / 右上「返回 Jacfitness 大廳」按鈕 / 中央偏下「點擊開始遊戲」綠字 / 右下 教學 + 紀錄 膠囊按鈕堆疊(共 3 型)
2戰鬥畫面(基本)15245:25
戰鬥畫面 基本
範圍戰鬥
視覺亞哈
程式兔子
v0.12戰鬥畫面拆 3 個狀態,此為「基本」狀態
左上分數區塊「Stage 3 / 136 / 過 96」/ 右上球數區塊「3/10」+ 暫停 / 右側挑戰任務面板「不洗溝」即時失敗(紅槓劃過 + 字體變灰 #888)/ 中央狀態提示字卡共用容器
3戰鬥畫面(選位置)15522:738 ⭐ NEW
戰鬥畫面 選位置
範圍戰鬥
視覺亞哈
程式兔子
v0.12新增 — 對應投擲流程「①旋手腕選位」
兩個橘色三角箭頭(左右兩位置)/ 分數區塊用「過 96」用詞
4戰鬥畫面(瞄準)15522:858 ⭐ NEW
戰鬥畫面 瞄準
範圍戰鬥
視覺亞哈
程式兔子
v0.12新增 — 對應投擲流程「②看時機推出」
中央大黑色直立長箭頭(108×396)/ 左右各 45°、6 秒擺一輪、來回擺動端點慢中間快、無震屏
5模式選擇 15245:69
模式選擇
範圍大廳
視覺亞哈
程式Jason
v0.12加主選單半透明背景蒙版
彈窗上下列表:教學關卡 / 單人模式(鎖定)/ 雙人模式(鎖定);lock badge 圖示表達鎖定狀態(v0.16 拿掉文字提示)
6結算 15245:98
結算
範圍戰鬥
視覺亞哈
程式兔子
v0.12加半透明背景 + 繼續按鈕用橘色實心確認按鈕 + 列文案改「得分 +N 分」
「Result」金色大字 + 條件式最高分徽章(右上)+ 結算詳情面板 4 行(全倒 +80 / 未全倒 +46 / 挑戰達成 +10 / 總分 136 / 96)+ 橘色實心繼續按鈕
7關卡選擇 15245:151 ⭐ 改名 + v0.15 加選擇框
關卡選擇(玩家選關卡 2 demo)
範圍大廳
視覺亞哈
程式Jason
v0.12原長名「關卡選擇」改為短名「關卡選擇」+ 加半透明背景 + 機關圖示改用「機關徽章」元件(5 型)
v0.15新增「卡片選擇框」元件(青色邊框 + 4 角金光點 + 24px 外發光)— 玩家點選關卡時的反饋;範例圖示為「玩家點選關卡 2」狀態 → BW-067「確認按鈕」浮現 + BW-068「卡片選擇框」高亮
5 張卡片橫排(關卡卡片 2 種狀態:已過關 / 鎖定,可玩關共用純底卡)+ 關卡 1, 2 已過關(金星 ★)+ 關卡 3 純底卡可玩 + 關卡 2「玩家選中」青色選擇框 + 角光點(主動反饋)+ 關卡 4, 5 鎖定(黑 dim + lock badge)+ 右上解鎖分數紙條 + 右下確認按鈕(選關後浮現)。v0.15.8(2026-05-22):原「當前可玩」米色橘金描邊被動標記移除(BW-061 已刪),Card/Stage 縮為 1 variant 純底卡
8離開遊戲 15245:255 ⭐ 改名 + 改文案
離開遊戲
範圍戰鬥
視覺亞哈
程式兔子
v0.12原長名「戰鬥暫停」改為短名「離開遊戲」;文案改:「離開時分數不會記錄/確定回到開始畫面?」+ 否(紅)/ 是(綠) 通用按鈕,含戰鬥場景半透明背景蒙版
確認對話框(白底圓角面板)
9教學頁 1:選擇位置 15245:278 ⭐ NEW
教學頁 選擇位置
範圍大廳
視覺亞哈
程式Jason
v0.12動作教學從原 2 頁拆為 3 頁,此為第 1 頁
標題「選擇位置」+ 副文「手腕垂直貼地,左右轉動手腕選擇球的位置」+ 影片區(教學頁元件「▶影片區(影片之後置入)」)
10教學頁 2:丟出保齡球 15553:41 ⭐ NEW
教學頁 丟出保齡球
範圍大廳
視覺亞哈
程式Jason
v0.12動作教學第 2 頁
標題「丟出保齡球」+ 副文「手放下確認位置後,看好角度向前揮臂推出去」+ 影片區
11教學頁 3:曲球控制 15553:61 ⭐ NEW
教學頁 曲球控制
範圍大廳
視覺亞哈
程式Jason
v0.12動作教學第 3 頁
標題「曲球控制」+ 副文「推球瞬間扭動手腕,球路會跟著彎曲」+ 影片區
12戰鬥字卡集合 15284:2
戰鬥字卡集合
範圍戰鬥
視覺亞哈(文字)+ 綠豆(動態)
程式兔子
v0.12畫面改名(原長名「戰鬥字卡」)— 內容沿用 v0.8
8 張字卡 2×4 排版(戰鬥字卡 7 型):第 1 列 準備 / 全倒(+15 10+5)/ 洗溝 / 完成,第 2 列 新關卡(關卡 3 — 風吹 解鎖)/ 吸入 / 挑戰完成(+10)/(共用容器)。:此 Figma 截圖為 HighScore 加入前版本;現行字卡共 8 型(VFX 頁已補 High Score 字卡 BW-119)。
13藍牙搜尋中 15346:2 ⭐ 拆畫面
藍牙搜尋中
範圍大廳(藍牙)
視覺亞哈
程式Jason
v0.12由 v0.11「同一畫面兩狀態」改為獨立畫面
1P + 5 個 Jmate2 裝置(裝置按鈕 一般狀態)+「裝置未連線」紅字 + 確認按鈕(橘金確認)
14a藍牙已連線 — Jmate1 15928:2 ⭐ v0.12 NEW
藍牙已連線 Jmate1
範圍大廳(藍牙)
視覺亞哈
程式Jason
v0.12依裝置型號分三個 layout — Connet/StatusFrame State=Jmate1(切換左側手環插圖,非框色)
Jmate1 手環插圖(JACFIT 手環)+ 裝置列表 5 個(選中列 cyan #26C6C6 highlight)+ 連線成功文字 + 確認按鈕
14b藍牙已連線 — Jmate2 15928:27 ⭐ v0.12 NEW
藍牙已連線 Jmate2
範圍大廳(藍牙)
視覺亞哈
程式Jason
v0.12依裝置型號分三個 layout — Connet/StatusFrame State=Jmate2(切換左側手環插圖,非框色)
Jmate2 手環插圖 + 裝置列表 5 個(選中列 cyan #26C6C6 highlight)+ 連線成功文字 + 確認按鈕
14c藍牙已連線 — Jmotion 15928:52 ⭐ v0.12 NEW
藍牙已連線 Jmotion
範圍大廳(藍牙)
視覺亞哈
程式Jason
v0.12依裝置型號分三個 layout — Connet/StatusFrame State=Jmotion(切換左側手環插圖,非框色)
Jmotion 手環插圖 + 裝置列表 5 個(選中列 cyan #26C6C6 highlight)+ 連線成功文字 + 確認按鈕
15紀錄 15349:2
紀錄
範圍大廳(紀錄)
視覺亞哈
程式Jason
v0.11沿用 — 畫面由「排行榜 → 紀錄」改名
1P/2P 分頁切換 + 7 行可滑動排行;排行列三態:黑灰列=其他玩家 / 米色列=自己出現在榜內(滑動時可見自己的實際排行)/ 底部固定黃色列=自己的排行+歷史最高分(未上榜顯示「-」)。(v0.15.1 已移除「我的最高分」獨立區塊)

4單關循環流程 UI開發

關卡進場 → 10 球循環 → 結算。每球的 UI 反饋順序如下。

關卡進場序列(v0.8 大幅簡化)
LevelSelect 點關
Stage 號 + 機關 icon
已顯示
Loading
資源載入
Ready 字卡
單字 READY
(無 3·2·1 倒數)
進入投擲
第 1 球
HUD 右上常駐挑戰面板

v0.8 刪除:Stage 字卡 / 機關介紹字卡 / 挑戰任務字卡 / 3·2·1 倒數 — 玩家在 LevelSelect 已看過全部資訊,進關不重複介紹

每球循環(× 10)
1
階段 1 選位
手腕垂直旋轉 → X 站位 UI
2
階段 2 瞄準
手放下 → 箭頭自走擺動
3
推出
揮臂 → 擷取箭頭角度
4
球路
旋轉視覺 + 機關互動
5
單球結算
Strike / Gutter / Sucked 字卡 + 分數
🎬 單球循環完整演出時機流程圖(v1.1,2026-05-27 拍板 DEC-JSG11-015 / 016;2026-05-29 併入 v1.4 字卡順序)

操作 gating · 鏡頭切換 · 字卡觸發 · 挑戰 HUD icon 動態 · 黑畫面過場(純黑方案 A)

1操作階段 — 選位置 → 瞄準 ✅ 操作解封
新球初始化
(循環起點)
選位置 HUD 顯示
即時(setActive,無 fade)
選位置態
手放下 OnConfirm
PositionArrow punch 0.30s
AimArrow fade-in
+ 自走擺動 ±45° / 6s
瞄準態
揮臂 OnPush
擷取當下角度

玩家可用:旋手腕 Roll · 手放下 OnConfirm · 手上抬 OnReadjust(回階段 1)· 揮臂 OnPush

2球出手 → 球停(封鎖操作) ❌ 手環輸入封鎖 🎬 鏡頭切換
OnPush 觸發
tween.Kill + 鎖角度
AimArrow fade-out
0.50s InQuad
投擲視角不動
玩家看球往前飛
過截止線
traceCamera 跟球
無 zoom in
球停 + 判定
鏡頭固定
3機關 hit feedback(被擊中當下,非預警) ✨ VFX
球進黑洞 0.75m
黑洞吸入 VFX球到中心消失
球進地雷半徑
地雷爆炸 VFX彈飛瓶子(仍可 Strike,但挑戰失敗)
球進風場
風場 VFX推球(既有,r131 BW-126 常駐)
障礙瓶倒下
hit feedback VFX綠豆 r132 補設計(無預警,被擊倒當下演)
4單球字卡(依結果 + 觸發時機) 💬 字卡

球停下後等 3 秒觀察期(若全倒可提前觸發 Strike)→ 閘門下拉動畫 + 字卡 + 分數彈出 + 挑戰面板即時演出(同步)。⚡ 標記者不等 3 秒、不等球停,觸發瞬間即出。(BW-088,v1.4 2026-05-28)

⚡ 球碰溝當下
Card_Gutter 字卡不等球停,碰溝瞬間即出
⚡ 球到黑洞中心消失後
Card_Sucked 字卡球進黑洞消失瞬間即出
球停 + 倒完所有正規瓶
Card_Strike 字卡球停判定後出;若同時挑戰達標 → 後接 Card_ChallengeClear(見 §5.5)
球停 + 未倒完 Open
無字卡分數直接更新 HUD
5HUD 挑戰面板即時演出(兩種挑戰行為) ☑ 即時成功 ✗ 即時失敗
挑戰類型適用 Stage演出時機與動態
達標型
(即時成功)
Stage 1(至少 3 次 Strike) 條件達成當下瞬間 → HUD ☑ icon + 灰字 → 此後該關 HUD 維持成功態
即時失敗型 Stage 2 不擊倒障礙瓶 / Stage 3 不洗溝 / Stage 4 不碰黑洞 / Stage 5 不碰地雷 違規條件達成當下瞬間 → HUD 紅槓 DOTween 動畫 + 灰字 → 此後該關 HUD 維持失敗態
進行中 HUD 維持任務描述;文字過長 → 跑馬燈循環捲動(固定速度、貼底、不擋左邊、右側碰啟動按鈕停、黑底靜止只跑文字)

⚠️ Stage 1 達標型:第 10 球結束時若仍未達 3 次 Strike → 結算前演紅槓動態(fail)。其他 Stage 違規後 HUD 已失敗,剩下球次照常打完不再判定。

🆕 跑馬燈(2026-06-03 會議,DEC-JSG11-025):進行中態任務描述文字過長會撐破面板,故採水平循環捲動(無限迴圈)避免溢出。任務成功 / 失敗當下先停止捲動 → 文字復位 → 再演 ☑ / 紅槓(三段有序)。速度先設任意值,demo 後調參;「…」長度與文字上限後續微調。

5.5所有挑戰達成 → Card_ChallengeClear 字卡(即時觸發,不等 10 球)💬 字卡
⚡ 全挑戰達成瞬間 (現只 1 挑戰,故 = HUD ☑ 演出後立即;未來多挑戰時 = 最後一條達成瞬間)
Card_ChallengeClear 獨立字卡不等第 10 球結算,當下即出。剩餘球次照常打完
6每球字卡退場後 → 黑畫面過場 → 下一球(純黑方案 A) ⬛ 黑畫面 🎬 鏡頭拉回
字卡退場 / Open 球停
每球都跑(非 10 球後)
Gutter / Sucked / Strike 退場
或 Open 球停直接接
黑 fade in
0.30s InQuad
黑停留 0.20s
鏡頭悄悄拉回投擲視角
黑 fade out
0.30s OutQuad
第 10 球

過場期間不放任何 UI 元素(無球數提示、無 Stage 編號),純黑。

否 → 回 Phase 1 重新出球 · 是 → 進 Phase 7 結算
7第 10 球結束 → 結算(補演各 Stage 未演出的挑戰判定) ☑ 補演 OK ✗ 補演 fail 💬 字卡
Stage第 10 球結束時的狀態補演動作
Stage 1 達標型 仍未達 3 strike 補演紅槓 fail(DOTween 動畫)
Stage 2~5 即時失敗型 整關都沒違規(從未紅槓) 補演 ☑ 成功(DOTween 彈出) → 若是最後一條挑戰 → 觸發 Card_ChallengeClear 字卡(§5.5 即時邏輯延伸到此)
第 10 球結束
HUD 挑戰
仍進行中?
補演挑戰判定
Stage 1 fail 或
Stage 2~5 ☑ 成功
Card_Finish 字卡
BW-117
結算頁
直接切換,無黑畫面 fade
沿用 Lobby Modal 動畫
破最高分?
HighScore 字卡
BW-119(金字 +「+X」差值)
New Stage 字卡
BW-118(若解鎖新關卡)

⚠️ Phase 5 處理「達成 / 失敗當下」的即時 HUD 演出;Phase 5.5 處理「全挑戰達成的瞬間」即時 ChallengeClear 字卡。 Phase 7 只處理 HUD 仍在「進行中」狀態(=該挑戰整關沒明確結論)的條目,依 Stage 類型補演成功 / 失敗動畫。
🆕 v1.4(2026-05-28):Finish → 結算不走黑畫面 fade(沿用 Lobby Modal 動畫);結算後依序判定 HighScore 字卡(BW-119,破紀錄才出)New Stage 字卡(BW-118,解鎖才出)

✅ 操作解封 ❌ 操作封鎖 🎬 鏡頭 💬 字卡 ✨ VFX ⬛ 黑畫面 ☑ 挑戰成功 ✗ 挑戰失敗
🎬 鏡頭流程 v1.3(2026-05-27 拍板 — DEC-JSG11-015)
  1. OnPush 球出手 → 鏡頭停在投擲視角不動(玩家視角看球往前飛)
  2. 球過截止線 → 切到 _traceCamera 開始跟球(無 zoom in,無瓶區近景 — 原 v1.2 PinAreaCamera 已刪除
  3. 倒瓶 / 球停 → 鏡頭固定在球停位置,等字卡演出
  4. 字卡演出完黑畫面 fade in 0.30s + 黑停留 0.20s(悄悄拉回投擲視角)+ fade out 0.30s(方案 A 純黑,無 UI 提示)
  5. 選位置 HUD 顯示(即時,無 fade)→ 下一球操作解封

5命名對照 亞哈Jason/兔子

這節說明 Figma 設計稿 ↔ 美術素材 ↔ 程式內部命名的對照規則(給程式 + 美術之間做翻譯用)。本節只列給亞哈、Jason、兔子三方對齊規則用,企劃書其餘段落都用中文白話描述,不用記這些前綴。

命名空間(檔案前綴)

前綴用途白話說明
UIJSG11_畫面 / 面板UI 畫面 / 彈窗的命名,例如戰鬥畫面、模式選擇面板
Bowling_美術 / 音效 / 特效資源所有保齡球專屬的美術 / 音效 / 特效命名,例如「全倒特效」
JSG11_程式元件 / 控制器程式內部類別命名,例如瞄準箭頭控制器
bowling.多語系翻譯詞條小寫加點,例如「戰鬥畫面分數」對應一組多語系 key

元件類型前綴對照

前綴中文名稱說明
Frm_畫面區塊大區塊容器(例如頂部資訊列)
Pnl_面板 / 彈窗彈出視窗(例如暫停面板)
Btn_按鈕所有可點擊的按鈕
Lbl_文字純文字標籤(例如分數數字)
Img_圖片素材圖(例如球瓶圖片)
Ico_小圖示小型圖標(例如風的圖示)
Bdg_徽章小型標籤徽章(例如「挑戰達成」金星)
Bar_長條長條型元素(例如瞄準箭頭、進度條)
Card_卡片卡片型元素(例如關卡 1 標準關卡片)
Cnt_計數器數字計數器(例如球數計數)

狀態標記(後綴)

後綴中文意思用法範例
_State_Default預設狀態按鈕的一般樣式
_State_Disabled禁用按鈕不可點時的灰階樣式
_State_Locked鎖定關卡未解鎖的暗色 + 鎖頭樣式
_State_Current 已棄用 v0.15.8當前原「當前可玩」黃底框樣式,v0.15.8(2026-05-22)移除 — Card/Stage 縮為 1 variant 純底卡,被動標記取消,主動視覺由 Frame/CardSelection 承擔
_State_Achieved挑戰達成金星亮起樣式
_State_Failed挑戰失敗金星灰掉樣式

6戰鬥畫面佈局 亞哈兔子

遊戲中常駐的戰鬥畫面(亞哈視覺、兔子實裝)。v0.12 戰鬥畫面拆 3 個狀態:基本(共用容器顯示中)/ 選位置(左右橘色三角箭頭)/ 瞄準(中央大黑色直立長箭頭),對應投擲流程「選位置→丟出」兩段操作。實際視覺設計待亞哈 6/1~6/12 交付,兔子 5/18 起先用 TM Figma 素材拼裝。

📌 v0.12 戰鬥畫面 3 個狀態對照
基本(節點編號 15245:25)— 左上分數區塊「關卡 3 / 136 / 目標 96」、右上球數 + 暫停、右側挑戰任務面板、中央共用容器
選位置(節點編號 15522:738)— 兩個橘色三角箭頭(181×180),對應「①旋手腕選位」
瞄準(節點編號 15522:858)— 中央大黑色直立長箭頭(108×396),對應「②看時機推出」
戰鬥畫面(基本)— 版面骨架(v0.12,節點編號 15245:25)
136 / 過 96
3 / 10
Stage 3
暫停 II
(球道 / 球 / 瓶 — 3D 場景)
本關挑戰:不洗溝
即時失敗變灰 + X
← ← ← 瞄準箭頭(自動擺動) ← ← ←

戰鬥畫面元素清單(v0.12,對齊 Figma 戰鬥畫面 3 個狀態)

  • 當前分數(左上)— 絕對數字(例:136)
  • 過關門檻(左上分數旁)— 「過 N」(各關不同:24/48/68/88/96)
  • 球數計數(右上)— 「3 / 10」
  • 關卡標記(右上球數旁)— 「Stage 3」純文字
  • 挑戰任務面板(右上常駐)— 「本關挑戰:不洗溝」+ 即時失敗變灰 + 打叉標記(v0.8 起改畫面常駐,不再用進關字卡)。文字過長時跑馬燈循環捲動(貼底 / 不擋左邊 / 碰啟動按鈕停,黑底靜止只跑文字;2026-06-03 會議)
  • 暫停按鈕(右上角)— 觸發離開遊戲對話框
  • 瞄準箭頭(球道上方)— 階段 2 自動擺動,揮臂瞬間定格
  • 狀態提示文字(球道下方)— 準備 / 完成 / 全倒 / 新關卡 / 洗溝 / 吸入 共用容器(詳見「字卡」段落)
⚠️ 不做的項目
~~力道條 / 蓄力畫面~~(無蓄力條設計)/ ~~補中字卡~~(沒有「第二球補倒所有瓶」的判定)/ ~~「已達標」提示~~(強制 10 球)/ ~~分頁指示器~~(教學頁簡化)

7結算頁佈局 亞哈兔子

結算 — 版面骨架(v0.12,節點編號 15245:98)
Result
HighScore
(條件式:突破個人最高才出現)
本關詳情
Strike 得分+80 分
Open 得分+46 分
挑戰達成+10 分
總分136 / 96
繼續

結算頁元素清單(v0.12 反向同步 Figma)

  • 標題「Result」金色大字(取代 v0.7「過關」狀態文字 — 不論過關 / 沒過都顯示 Result)
  • 最高分徽章(右上偏移處,節點編號 15565:2)— 條件式顯示:玩家本局突破個人最高分才出現
  • 單一中央「結算詳情面板」 圓角面板含 4 行(v0.12 改文案):
    • 全倒得分「+N 分」(v0.12 改:原「全倒次數 × N」→ 顯示貢獻分數而非次數)
    • 未全倒得分「+N 分」(v0.12 改:原「未全倒次數 × N」)
    • 挑戰達成「+10 分」或「Failed」(v0.12 改:原「達成 +10」→ 與全倒 / 未全倒統一單位)
    • 總分「N / 96」
  • 「繼續」按鈕(右下,使用通用按鈕的「確認」橘金樣式)— 橘色實心(v0.12 改用元件,非 v0.8 原本的金底紅邊)— 取代 v0.7「返回大廳」
  • 過門檻 → 點繼續回大廳(解鎖下一關);沒過 → 點繼續回大廳(玩家自選重打或換關,v0.14 無「再試一次」)
❌ 不做以下按鈕(v0.8 拍板)
~~下一關~~ / ~~重玩~~ / ~~再試一次~~ / ~~返回大廳(改為「繼續」)~~ — 過關或沒過都只有「繼續」按鈕回大廳重新選關,玩家自行決定是否重打。

8關卡選擇佈局 亞哈Jason

v0.12 改用短名「關卡選擇」(原長名「關卡選擇」)+ 加主選單半透明背景蒙版。機關圖示改用「機關徽章」元件(5 型主元件),亞哈改主元件一次即全 5 卡片同步。

關卡選擇 — 5 卡片橫排(v0.12,節點編號 15245:151)
[<] 關卡選擇
下一關解鎖分數 96
關卡 1 標準
機關圖示:—
🏆 挑戰達成
關卡 2 障礙物
機關圖示:障礙瓶
🏆 挑戰達成
關卡 3 風吹
機關圖示:風
可玩
關卡 4 黑洞
機關圖示:黑洞
🔒 鎖定
關卡 5 地雷
機關圖示:地雷
🔒 鎖定
確認

2 種卡片狀態(v0.15.8 — 移除「當前可玩」被動標記)

已挑戰達成

  • 純底卡 + 右下角金星徽章(Badge/ChallengeAchieved instance)
  • 顯示機關圖示(左上小框)
  • 可重玩拿挑戰加分

鎖定

  • 純底卡 + 黑 50% dim rect + Badge/Lock instance
  • 無法點擊
  • 需先過前一關 96 分

玩家選中

  • 純底卡 + Frame/CardSelection(cyan 邊框 + 角光點)疊在玩家點選卡片上 → BW-067
  • 主動視覺反饋,與「當前可玩」被動標記無關
  • 頂部「下一關解鎖分數 96 分」標籤常駐(v0.11 新增)
v0.15.8(2026-05-22)變更:原 BW-061「卡片狀態 — 當前可玩」(米色底 + 橘金描邊被動標記)已移除;Figma Card/Stage master 縮為 1 variant(純底卡),「當前可玩」概念取消。5 張卡片中「已解鎖未過關」共用同底卡,玩家主動視覺反饋由 Frame/CardSelection 承擔。

9畫面動畫 亞哈綠豆Jason / 兔子

全部畫面動畫走 DOTween(程式動畫套件)。本節整理彈窗、戰鬥字卡、戰鬥畫面元素自動擺動、條件彈出、按鈕小互動的「時間 / 緩動曲線 / 縮放 / 透明度」參數。2026-05-19 v0.5 拍板:瞄準箭頭擺動 左右各 45° / 6 秒一輪、來回擺動端點慢中間快(撤回 v0.4 雙段串接,因視覺有「中間定格」感;保留 v0.4 角度 / 週期);全倒字卡 不加震屏(v0.2 拍板沿用)。詳見原始規格 games/JSG11-bowling/ui-animation.md

三大類動畫

  • 彈窗(9 個畫面,含半透明黑色蒙版)
  • 戰鬥字卡(共用容器 6 種 + 獨立挑戰完成 + 獨立 HighScore)
  • 戰鬥畫面元素自走 / 條件彈出(瞄準箭頭 / 選位置箭頭 / 最高分 / 載入畫面)

設計禁忌

  • 不用 Unity 內建動畫工具(程式看不懂、複雜度爆炸)
  • 不用無限循環 + 高頻動畫(例外:瞄準箭頭擺動、按鈕滑過)
  • 半透明蒙版區點擊不關閉彈窗(必須點關閉 / 確認按鈕)

分工

  • 視覺品味 / 動畫節奏 = 亞哈
  • 字卡動態 + 粒子 = 綠豆
  • 大廳畫面實裝 = Jason;戰鬥畫面實裝 = 兔子

🎬 即時預覽 — 6 種動畫

用網頁動畫模擬遊戲內動畫節奏。瞄準箭頭為無限循環自動播放,其餘點「重播」觸發。按鈕小互動將滑鼠移到按鈕上即可觸發。

瞄準箭頭擺動v0.5 拍板

左右各 45° / 6.0 秒
範圍:左右各 45°(左 -45 → 右 +45,繞 Z 軸)
週期:6.0 秒(半週期 3.0 秒)
擺動節奏:來回擺動,端點慢中間快
推球時:立刻凍結停住

彈窗 + 半透明背景同步演出 · 9 個畫面共用

彈窗面板
半透明背景:透明 → 60% 黑(0.25 秒 出場慢)
面板放大:85% → 100%(0.35 秒 帶輕微回彈)
面板浮現:透明 → 不透明(0.25 秒
關閉:面板先收 + 半透明背景晚 0.05 秒
📍 套彈窗進場動畫的 6 個畫面
畫面開啟觸發關閉觸發
模式選擇大廳「點擊開始遊戲」選任一模式 / 返回
關卡選擇模式選擇「單人模式」「教學關卡」選關 + 確認 / 返回
藍牙搜尋中進入單人/雙人偵測未連線偵測到目標裝置 / 返回
教學頁 1首次教學關卡 / 大廳「教學」下一頁 / 關閉
結算第 10 球停下 + 結算完繼續按鈕
離開遊戲戰鬥中按暫停圖示否(繼續)/ 是(回大廳)
連續轉場:大廳 → 模式選擇 → 關卡選擇,同一層半透明背景複用,新面板在舊面板退出 50% 時開始進場(提早 0.1 秒銜接)。
離開遊戲特例:用戰鬥場景半透明背景,「否」按鈕設預設焦點。

最高分徽章彈跳出現

HIGH SCORE
觸發:結算頁顯示後延遲 0.3 秒
放大:0 → 1.2 倍 → 1.0 倍(0.60 秒 彈跳)
浮現:透明 → 不透明(0.30 秒
條件:玩家本局突破個人最高分

大廳「點擊開始遊戲」綠字無框

點擊開始遊戲
樣式:綠字無框文字(仿 JSG10 網球)
呼吸:放大 1.0↔1.06 倍 + 透明度 1.0↔0.75(1.6 秒 來回擺動永久)
點擊後:觸發模式選擇彈窗

📋 完整參數表

「節奏」欄是給程式抓動畫節奏用的英文名稱,括號內為白話說明。

類別動畫時間節奏起 → 終值
彈窗半透明背景 浮現 / 退場0.25 秒OutQuad / InQuad(出場慢 / 進場慢)透明度 0 ↔ 0.6
面板 放大 / 縮回0.35 秒 / 0.20 秒OutBack / InQuad(帶回彈 / 進場慢)放大比例 0.85 ↔ 1.0
面板 浮現 / 退場0.25 秒 / 0.20 秒OutQuad / InQuad透明度 0 ↔ 1
最高分徽章0.60 秒(延遲 0.3 秒)OutElastic(彈跳)放大比例 0 → 1.2 → 1.0
戰鬥畫面元素瞄準箭頭擺動6.0 秒一輪(半輪 3.0 秒)InOutSine 來回擺動 無限(端點慢、中間快)左右各 45°(v0.5 拍板:保留 v0.4 角度週期,撤回 v0.4 雙段串接,改回 v0.2 節奏)
選位置箭頭確認0.30 秒OutBack 彈跳(縮放反饋)放大比例 1.0 → 1.15 → 1.0
瞄準箭頭推出後淡出0.50 秒InQuad(進場慢)透明度 1 → 0
大廳動畫「點擊開始遊戲」呼吸(永久來回)1.6 秒一輪InOutSine 來回擺動 無限放大比例 1.0 ↔ 1.06 + 透明度 1.0 ↔ 0.85
按鈕(手機點擊)所有按鈕點擊(確認 / 是 / 否 / 返回 / 暫停 ...)0.08 秒 + 0.12 秒InQuadOutBack(縮 → 回彈)放大比例 1.0 → 0.92 → 1.0

🔧 程式共用常數(給工程師抽常數)

這段是給程式工程師抄到靜態類別用的英文常數,方便 5/29 試玩後集中調參。非工程角色可以跳過這段,前面的中文參數表已足夠理解動畫節奏。

// AimArrow(v0.5 拍板 2026-05-19:±45° / 6.0s / InOutSine Yoyo — 撤回 v0.4 雙段串接)
public const float AimArrowSwingHalf      = 3.00f;   // 半週期(端點→端點),總週期 6.0s
public const float AimArrowSwingAngle     = 45.0f;   // 度,±45°
public const Ease  AimArrowSwing          = Ease.InOutSine;// 端點慢、中間快(v0.5 回歸 v0.2 ease)

// Modal 彈窗
public const float ModalDimFadeIn       = 0.25f;
public const float ModalPanelScaleIn    = 0.35f;
public const float ModalPanelScaleOut   = 0.20f;
public const Ease  ModalPanelScaleIn_E  = Ease.OutBack;     // overshoot 1.2

// HUD 字卡(Strike / NewStage / Challenge Clear)
public const float HUDCardStrikeIn      = 0.40f;     // OutBack overshoot 1.4
public const float HUDCardNewStageIn    = 0.50f;     // OutQuad,posX -200 → 0
public const float HUDCardChallengeIn   = 0.50f;     // OutBack overshoot 1.5 + rotation 360°→0°
public const float HUDCardHold          = 1.00f;     // v0.8(2026-06-24)所有字卡停留統一 1s(原 Ready/Finish/Gutter/Sucked=1.5 / Strike=1.8 / NewStage/ChallengeClear=2.0)

// HighScore(OutElastic)
public const float HighScoreBadgeDelay  = 0.30f;
public const float HighScoreBadgeScale  = 0.60f;
public const Ease  HighScoreBadge_E     = Ease.OutElastic;

📄 原始規格:games/JSG11-bowling/ui-animation.mdv0.5,2026-05-19:瞄準箭頭節奏撤回 v0.4 的雙段串接,改回「來回擺動,端點慢中間快」— 保留 v0.4 的「左右各 45° / 6 秒」;沿用 v0.3 手機點擊 + 大廳動畫 + 彈窗使用場景對照;藍牙已連線 / 教學頁 2 / 教學頁 3 不在動畫規格範圍;載入畫面不做動畫)| 同步引用點:mechanics.md §階段 2tech-spec.md §2 瞄準箭頭控制器feature-checklist.md BW-003/090/091 + §11 BW-171~183ui-layout.md §3.2/3.3

⚙️ 開發規格

演算法層沿用 · 含遊戲規則全部重做 · 企劃流程圖為主 · 3 張 Excel 表
演算法 ✅ 沿用 Andros 既有
遊戲規則 / 程式 / UI全部重做
Excel 資料表 ✅ 保留 3 張
本頁定位 給 RD 看企劃流程與資料結構,實作細節自決

1程式重做範圍兔子/Jason

除演算法層外全部重做(包含遊戲規則)。本企劃書 dev panel 採「企劃流程圖 + 資料結構」導向,code 細節由 RD 自決。

保留 vs 重做邊界

✅ 演算法層 — 唯一保留

  • JPlayCurlingAlgorithm(手環 IMU → 手腕動作判讀)
  • DetectRotate(Roll 角度 → Direction)
  • PushCurling(揮臂力道計算)
  • OnPush / OnRotate / OnConfirm / OnReadjust 事件介面
  • Andros 5/15 v1 演算法交付仍有效
  • 角加速度 → forward 軸 ω(新增)

✅ Excel 資料表 — 保留

  • JSG11Bowling_LevelSetting
  • JSG11Bowling_PinSetting
  • JSG11Bowling_MechanismSetting
  • 結構參考 JSG9Curling / JSG08Golf 既有資料表
  • 詳見 §7 Excel 表

❌ 其他全部重做(含遊戲規則)

  • 遊戲規則邏輯(計分判定 / Strike 判定 / 挑戰追蹤 / 闖關解鎖)
  • 機關互動邏輯(風 / 黑洞 / 地雷 + 物理表現)
  • 主控架構 GameCore / Manager / System
  • 藍芽事件分派器(事件名沿用、實作重寫)
  • Camera Manager + 鏡頭控制
  • InteractiveObjects 球瓶物件管理
  • Game UI Component(HUD / 結算 / 暫停)
  • VFX / Audio / TimeLine 控制
  • 大廳 / 解鎖 / 任務系統 / 影片播放器

事件介面(演算法層保留設計)

事件 / API狀態JSG11 用途
DetectRotate(roll, gyro)✅ 沿用階段 1 站位 X 映射
OnRotate✅ 沿用左右旋轉事件
OnConfirm✅ 沿用手放下 → 鎖站位
OnReadjust✅ 沿用手往上抬 → 回階段 1
PushCurling✅ 沿用揮臂力道計算
OnPush(forcePercentage)✅ 沿用球出手觸發
角加速度 → forward ω⭐ 新增旋轉球路(Andros 收斂映射曲線)
📁 冰壺骨架位置(不沿用,僅供 RD 必要時參考玩法行為)
// Unity 路徑 — 不沿用 code,僅作設計思路對照
Unity/Assets/Hotfix/Module/UI/JSG/JSG_Curling/Battle/
  ├─ Game/         // ❌ 重做
  ├─ Component/    // ❌ 重做
  └─ System/       // ❌ 重做

Unity/Assets/Hotfix/Entity/DeviceData/Curling/
  └─ JPlayCurlingAlgorithm.cs  // ✅ 沿用(演算法層)

Unity/Assets/Hotfix/MonoBehaviour/JSG_Curling/Scripts/
  └─ Camera / VFX / Audio / TimeLine 控制  // ❌ 全部重做

Excel/JSG/JSG9CurlingSetting.xlsx
  └─ 結構參考(極簡雙 sheet)  // JSG11 改 3 張表

2投擲技術流程 Andros/兔子

演算法層沿用 Andros 既有 input pipeline + 新增階段 2 箭頭自走擺動。UI 層全部重做

階段 1 — 站位選擇(手腕垂直 + 旋轉)
手環 IMU
Roll / Pitch / Gyro / AccelΩ
DetectRotate
Roll → Direction
SetObjectPosition
站位 X 累加
OnConfirm?
AimingArrow
DOTween 自走
階段 2 — 推球與球路(揮臂釋出 → Unity 物理)
OnPush
擷取 forcePercentage
擷取箭頭角度
→ forward 向量
讀手環角加速度
→ 旋轉量
AddForce + ω
球體 Rigidbody
球路
Unity 物理

關鍵 API 對應

// === 演算法層 ✅ 沿用 Andros 既有 ===

// 階段 1 — 旋手腕選位
DetectRotate(roll, gyro)  // Andros 演算法:roll < -45° = Left, > +20° = Right; multiplier 0/1/2

// 階段 1→2 — 手放下鎖站位
OnConfirm()  // Andros 演算法:Pitch < 0 + Gyro.z < -50000 → 觸發

// 階段 2 — 揮臂推出
PushCurling(forcePercentage)  // Andros 演算法:揮臂偵測 + 力道計算
OnPush(forcePercentage)  // 觸發瞬間 → freeze 箭頭定格 → 擷取當下角度

// (可選)重選
OnReadjust()  // Andros 演算法:Pitch > 0 + Gyro.z > +50000 → 回階段 1


// === UI / 渲染層 ❌ 全部重做(JSG11 自寫)===

// 階段 1 站位 UI(不沿用冰壺 SetObjectPosition,自寫)
JSG11_StancePositionUI.UpdateX(direction × moveDistance)  // 累加 X 位置 + 自訂上下限

// 階段 2 瞄準箭頭自走(自寫)
JSG11_AimingArrowController.StartSwing()  // DOTween 連續擺動,無鎖定動作
// 取代冰壺 SetObjectRotation() 的「手腕主動轉角度」

3鏡頭流程 v1.3兔子

JSG11_CameraManager 全部重寫(不沿用冰壺 CameraManager)。v1.3 拍板(2026-05-27 DEC-JSG11-015):刪除原 v1.2 的 _pinAreaCamera 瓶區近景,改為「OnPush 鏡頭不動 → 球過截止線才 _traceCamera 跟球(無 zoom in)→ 字卡 → 黑畫面 fade 過場拉回投擲視角」。

球出手到下一球的鏡頭切換(v1.3)
OnPush 觸發
球出手
投擲視角不動
玩家看球往前飛
過截止線?
_traceCamera 跟球
無 zoom in
球停 + 字卡
鏡頭固定
黑畫面 fade
0.30s + 0.20s + 0.30s
投擲視角解封
下一球 PositionArrow
📐 截止線位置
球道 z 軸距離,由兔子在 Unity 場景配。預設約在球道 60~70% 處(讓玩家先看球往前飛的投擲視角,過線後 _traceCamera 接管看曲球軌跡 + 倒瓶)。
⚠️ 不沿用冰壺結算頂視角
保齡球單關 10 球連續,不需要每球切結算頂視角。冰壺 _overHeadCamera 流程整段移除。
🔄 v1.3 變更(2026-05-27 DEC-JSG11-015)
  • 刪除 _pinAreaCamera(瓶區近景 zoom in 鏡頭)
  • OnPush 鏡頭不動(改為球過截止線才開始 _traceCamera 跟球)
  • 新增黑畫面 fade 過場(字卡退場 → 純黑 0.30s + 0.20s + 0.30s → 鏡頭悄悄拉回投擲視角)

4旋轉球路演算法Andros

手環角加速度 → 球體 forward 軸 angularVelocity 的連續映射。Andros 在演算法 code 內調,不另開 Excel 表

// JSG11_BallSpinController
// 投擲瞬間(OnPush 觸發時)執行

public void ApplySpin(Rigidbody ball) {
    // 1. 讀手環角加速度(Andros 提供)
    float angularAccel = wristband.GetAngularAcceleration();

    // 2. 依映射曲線換算為球體 forward 軸 angularVelocity
    //    映射方式:線性 / 分段 / 上限值 — Andros 收斂中
    float omega = MapToAngularVelocity(angularAccel);

    // 3. 套用到球體 transform.forward(向前軸 / Z 軸)
    ball.angularVelocity = ball.transform.forward * omega;
    // → Unity 物理引擎依此產生軌跡彎曲(連續量,無離散等級)
}

設計原則

  • 連續映射,非隨機抽選
  • 無離散等級(不是 5 種球路)
  • 無 UI 提示(玩家從球行為學)
  • 不扭手腕 → ω ≈ 0 → 球直走
  • 扭得越大 → ω 越大 → 軌跡彎得越多

待 Andros 收斂

  • 映射曲線(線性 / 分段 / 對數)
  • 上限值(避免暴衝)
  • 不靈敏區(避免手抖誤觸)
  • QC 必測:「靜止手腕投擲走直線」

5計分流程圖 Jason

計分規則重新撰寫。本段為企劃流程,RD 依此實作(Component 名稱與切分自決)。

單球計分判定流程
球停止
該球結算觸發
統計倒下瓶
只算正規瓶
正規瓶
全倒?
Yes →
Strike
+15 分(10+5)
No →
Open
倒幾瓶 = 幾分

判定規則

結果條件得分關鍵規則
Open正規瓶沒倒完倒幾瓶 = 幾分
Strike正規瓶全倒15(10+5)只看正規瓶,地雷彈飛瓶也算倒下
挑戰binary 達成+10~+50(各關遞增)計入過關門檻
⚠️ 重要判定細節
  • Strike 判定只看正規瓶:障礙瓶 / 地雷彈飛瓶倒下不影響邏輯
  • Stage 5 地雷彈飛瓶算倒下:仍可 Strike,但挑戰失敗(限制違規 → 失去 +50)
  • 無 Spare
  • 無連擊獎勵(連續 Strike 各自 +5,不額外加碼)
  • 強制 10 球(提前達標也要打完)
全關計分流程(10 球 + 挑戰加分)
第 10 球結束
所有球停止
累加 10 球分數
Open + Strike
挑戰達成?
+N 加分
+10~+50 各關
≥ 門檻?
PASS
解鎖下一關
📐 滿分 / 門檻計算
基礎滿分 = 10 球 × (正規瓶 + 5) = 150 · 挑戰加分 +10/+20/+30/+40/+50(各關遞增) · 門檻 24/48/68/88/96(ScoreThresholdForNormal)

6三機關互動流程 兔子/Jason

三機關位置固定(Unity 場景管理)。參數寫入 JSG11Bowling_MechanismSettingTrapValue: double[](詳見 §7)。本段為企劃流程,RD 依此實作。

💨 Stage 3 風吹

風場互動流程
球進入
風場區域
範圍偵測
讀取風向 + 強度
TrapValue[0/1]
球速度
加側向分量
物理推球
球進溝?
→ Yes
挑戰失敗
失去 +10
規則要點:玩家可主動曲球抗風 / 順風;不影響球瓶位置;位置固定每次同位(玩家可學)。

🕳️ Stage 4 黑洞

黑洞互動流程
球接近
黑洞
距離 < r
依距離曲線
拉向中心
TrapValue[0/1]
被吸入?
→ Yes
該球作廢
0 分
挑戰失敗
失去 +10
規則要點不影響球瓶(瓶子不會被吸);被吸入該球 0 分;位置固定每次同位。

💣 Stage 5 地雷

地雷互動流程
球觸發
地雷
範圍偵測
已引爆?
→ No
引爆 + 標記
一次性
爆炸力
炸飛正規瓶
TrapValue[0/1]
正規瓶
全倒?
→ Yes
Strike +15
但挑戰失敗
規則要點:地雷彈飛瓶算正規倒下,仍可 Strike;但觸發地雷 = 挑戰失敗(失去 +10);地雷一次性消耗(觸發後該關不再生效);位置固定每次同位。

挑戰任務追蹤

Stage挑戰判定方式失敗時機
1至少 3 次 Strike結算統計結算時 Strike < 3
2不擊倒任何障礙瓶即時失敗任一障礙瓶倒下
3不洗溝即時失敗任一球進溝
4不要碰到黑洞即時失敗任一球被吸
5不要碰到地雷即時失敗任一球引爆

7Excel 表(3 張)RD

參考 JSG9Curling / JSG08Golf 既有結構。多語系 key / 美術資源 / 機關位置 / 滿分計算 / 球手感 — 皆不寫進企劃表

📥
JSG11BowlingSetting.xlsx
3 張表合併(LevelSetting / PinSetting / MechanismSetting)· 來源:Jacfitness_Client/Excel/JSG/
下載 Excel

📊 JSG11Bowling_LevelSetting

對應 levels.md 每一列。挑戰合進此表(不另開)。

Id: long
LevelTypeId: int (0=教學 1=一般)
PinComposition: int[]   // → PinSetting.Id
MechanismIds: int[]     // → MechanismSetting.Id(可空)
UnlockNextLevelScore: int
UnlockNextLevelID: int
ChallengeType: enum
  // StrikeCount/NoObstaclePin/
  // NoGutter/NoBlackHole/NoLandmine
ChallengeThreshold: int  // 3/0/0/0/0

影片不入表:機關規則影片改用 Unity 素材嵌入,併入教學頁(ui-layout §2.5)一起做

📊 JSG11Bowling_PinSetting

仿 JSG9 ObjectSetting,極簡。Strike 判定靠 PinType 程式判斷。

Id: int
PinType: enum
  // Regular / Obstacle
Score: int   // 1 / 0
Mass: double

📊 JSG11Bowling_MechanismSetting

仿 JSG08 TrapValue。陣列含義依 MechanismType 不同。

Id: int
MechanismType: enum
  // Wind / BlackHole / Landmine
TrapValue: double[]
  // 風: [強度, 週期秒]
  // 黑洞: [峰值力, 曲線類型]
  //   0=線性 1=反平方
  // 地雷: [爆炸 impulse, 連鎖 0/1]
❌ 不寫進企劃表
多語系 key(另有多國表)/ Prefab / VFX / SFX 路徑(Unity 場景管)/ 機關位置 / 半徑(Unity 場景管)/ 滿分(程式算)/ BonusScore(硬編 +10)/ 球手感映射(Andros code 內調)

📖 欄位逐欄白話解釋(TM / 老闆視角)

上方 3 張卡片是給 RD 的 schema 摘要,本段是給 TM、老闆、新進 RD 的白話欄位字典。完整版見 KB games/JSG11-bowling/excel-schema.md

🟢 通用結構 — 每張表前 6 列是什麼?

這是 Jacfit Server 端的 Excel 規範格式(JSG09/JSG10 都同一套):

內容給誰看
Row 1AppType.ClientH / AppType.LobbyServer tag — 這張表餵給哪個 App
Row 3中文欄位名(關卡編號…)TM / 企劃
Row 4英文欄位名(_id…)RD 程式對應
Row 5資料型別(int / long / double / int[])限制能填什麼
Row 6列舉值說明(1=Regular 2=Obstacle…)共同對照
Row 7+真正的資料程式會讀

注意:改表時只能改 Row 7 起的資料列,前 6 列是規範不能動。

📊 Sheet 1 · LevelSetting — 9 欄逐欄解釋
欄位意義目前值
關卡編號
_id
關卡唯一 ID。0 = 教學關、1~5 = Stage 1~50~5
#註解程式不會讀,純備註欄。給人看的關卡說明「Stage 1 標準」…
關卡類別
LevelTypeId
0 = 教學、1 = 一般。Client 判斷要不要走教學流程教學=0、其他=1
瓶種組成
PinComposition
PinSetting._id 組成的陣列,列出場上要擺哪些瓶。一個數字 = 一顆瓶Stage 1:1,1,1,1,1,1,1,1,1,1
Stage 2:1×10, 2,2,2
機關ID
MechanismIds
指定這關套哪些機關,0 = 無機關Stage 3=1(風)
Stage 4=2(黑洞)
Stage 5=3(地雷)
解鎖下關分數
UnlockNextLevelScore
拿到幾分才能解鎖下一關。-1 = 最後一關24 / 48 / 68 / 88 / 96(各關遞增)
Stage 5 = -1
解鎖關卡ID
UnlockNextLevelID
達標後解鎖的下一關 _id1→2→3→4→5
挑戰類型
ChallengeType
0 無 / 1 StrikeCount / 2 NoObstaclePin / 3 NoGutter / 4 NoBlackHole / 5 NoLandmine對應 levels.md 每關「+N 加分條件」
挑戰門檻值
ChallengeThreshold
配合挑戰類型用的數值。例:Stage 1「至少 3 次 Strike」→ 3Stage 1=3、其餘=0

💡 影片不入此表:機關規則影片改用 Unity 素材直接嵌入,併入教學頁(ui-layout §2.5)一起做 — 教學頁本來就有翻頁 UI,多加 N 頁機關介紹直接放影片,不需要 Excel schema 也不需要 RD 寫條件分支。

📊 Sheet 2 · PinSetting — 5 欄逐欄解釋
欄位意義目前值
瓶種編號
_id
LevelSetting.PinComposition 對照用1(正規)、2(障礙)
#註解程式不讀,備註用「正規瓶」「障礙瓶(跟正規瓶一起重置)」
瓶類型
PinType
1 = Regular(正規瓶)
2 = Obstacle(障礙瓶)
1、2
分數
Score
倒下一顆得幾分正規=1
障礙=0(碰倒不給分、反而挑戰失敗)
重量
Mass
物理引擎參數(kg),影響碰撞反應正規=1.6
障礙=2.0(重一點、難倒)

💡 Strike 判定不在這張表:「該球倒完所有正規瓶」算 Strike,跟障礙瓶無關 — 這個邏輯寫在程式裡(雙保險)。

📊 Sheet 3 · MechanismSetting — TrapValue 陣列詳解
欄位意義目前值
機關編號
_id
LevelSetting.MechanismIds 對照用1、2、3
#註解這欄很重要 — 把 TrapValue 陣列每個位置的意義寫明白詳下表
機關類型
MechanismType
1=Wind / 2=BlackHole / 3=Landmine1、2、3
機關係數
TrapValue
double[] 陣列,意義依機關類型而不同(省欄位的設計)詳下表

TrapValue 陣列詳解(同欄位、不同機關意義不同):

機關TrapValue第 1 個值第 2 個值
風 Wind5.0, 0.0強度 = 5.0週期秒 = 0.0 → 0 表「固定風」
黑洞 BlackHole20.0, 1.0峰值力 = 20.0曲線類型 = 1(反平方衰減)
地雷 Landmine15.0, 1.0爆炸 impulse = 15.0是否連鎖 = 1(會連環爆)

📐 陣列數值的物理意義(玩家會感覺到什麼)

🌬 風 Wind = [強度, 週期秒]

  • 強度 5.0:球進風場時側向受力大小(Unity 物理單位 Newton)。數字越大球被吹得越歪 — 5.0 = 中等難度,玩家感覺得到但仍可用旋轉抗衡
  • 週期秒 0.0:風向變化的時間。0 = 固定不變方向(適合 v1.0 學習門檻);如果填 3.0 表示「每 3 秒換向一次」,難度大幅上升 — 留給 v1.x 微調用

🕳 黑洞 BlackHole = [峰值力, 曲線類型]

  • 峰值力 20.0:在黑洞中心點時的最大吸引力(球被吸入的力道)— 比風強很多,因為要做到「離夠近就直接被吃掉」的爽快感
  • 曲線類型 1:吸引力隨距離衰減的數學模型。0 = 線性衰減(離越遠等比例變弱);1 = 反平方衰減(離 2 倍距離吸力只剩 1/4)— 用 1 比較符合真實物理黑洞,且讓玩家「貼著邊緣繞」變成可行策略

💣 地雷 Landmine = [爆炸 impulse, 是否連鎖]

  • 爆炸 impulse 15.0:被踩到時瞬間推力(Newton·sec)。比黑洞小,因為地雷是「踩到就炸」一次性事件,不需要持續吸力
  • 是否連鎖 10 = 單顆爆,1 = 炸到的範圍會引爆隔壁地雷形成連環爆 — 1 視覺效果爽,但對玩家挑戰失敗判定更嚴格(一踩全爆,沒救)

💡 為什麼用陣列不分欄位?
仿 JSG08 高爾夫 SceneObject.TrapValue 設計;不同機關需要的參數數量不同,陣列彈性最高(未來新增「移動牆」可能需要 3~4 個參數,陣列直接擴充不用改 schema)。代價是必須靠 #註解 欄寫清楚每個位置的意義,否則沒人看得懂陣列裡的數字代表什麼。

📋 完整功能表

183 項 · 11 模組 · 同步 Google Sheet
同步目標 1STspfoH-H76...
Tab JSG11-bowling
狀態圖示 ⬜ 未開始 / 🟡 開發中 / 🟢 已完成 / 🔵 測試中 / ✅ 驗收通過 / ❌ 阻塞
183
總項目
11
模組
35
⬜ 未開始
1
🟡 開發中
0
✅ 驗收通過
📌 拆行原則
每項只記 1 個原子功能。狀態欄由 RD / QC 在 Google Sheet 上填,再 sync 回 KB SSoT (feature-checklist.md) → HTML 自動同步生成。
1. 投擲系統(Andros 動作演算法 row 117 + 兔子 功能製作 row 118) (24 項)
#模組功能負責狀態備註
BW-001投擲基礎階段 1 — 手腕 Roll 偵測 → 球道 X 站位映射Andros🟢沿用冰壺 DetectRotate + OnRotate + SetObjectPosition。站位上下限參考冰壺 _constLimitPositionX
BW-002投擲基礎階段 1→2 — 手放下確認(OnConfirm 鎖定站位)Andros🟢沿用冰壺 OnConfirm(Pitch<0 + Gyro.z<-50000)
BW-003投擲基礎階段 2 — 瞄準箭頭自動擺動(DOTween 連續擺動,無鎖定動作;±45° / 6s 週期 InOutSine Yoyo,端點慢、中間快)兔子🟢v1.2 新增。取代冰壺 SetObjectRotation()。參數 2026-05-19 v0.5 拍板(保留 v0.4 ±45°/6s 角度週期,撤回 v0.4 OutSine+InSine 雙段串接 — 視覺有「中間定格」感,改回 v0.2 ease),詳 ui-animation.md §3.2
BW-004投擲基礎階段 2 — 揮臂力道計算Andros🟢沿用冰壺 PushCurling + G_Sensor / Gyro_Sensor 邏輯
BW-005投擲基礎階段 2 — 推出瞬間擷取箭頭角度為球初始 forward 向量兔子🟢OnPush 觸發時鎖定 AimingArrow 當下角度
BW-006投擲基礎重選 — 手往上抬觸發 OnReadjust 回到階段 1(可選)Andros🟢沿用冰壺 OnReadjust(Pitch>0 + Gyro.z>+50000)— 依 UX 決定是否開放
BW-007旋轉球路手環角加速度讀取Andros🟢input source 已確認 5/11
BW-008旋轉球路接收手環旋轉輸入Andros🟢白話:手腕扭動偵測
BW-009旋轉球路手腕轉動量 → 球旋轉量(對應曲線)Andros🟢線性/分段待 Andros 收斂
BW-010旋轉球路手腕未扭 → 球走直線(不靈敏區)Andros🟢QC 必測「靜止手腕→直線」
BW-011旋轉球路球旋轉速度上限(避免暴衝)兔子🟢
BW-012投擲功能球瓶倒下判定 — 角度閾值Jason🟢
BW-013投擲功能球瓶倒下判定 — 旋轉速度閾值Jason🟢
BW-014投擲功能球旋轉控制元件實裝兔子🟢5/18 接 Andros v1
BW-015投擲功能球的直線基礎軌跡兔子🟢
BW-016投擲功能球速強制覆寫(防止橫向位移殘留)兔子🟢
BW-017投擲功能球的旋轉量影響球路彎曲程度兔子🟢
BW-018投擲功能球出手特效 trigger兔子🟢對接綠豆 VFX
BW-019投擲功能強制 10 球流程兔子🟢提前達標也要打完
BW-020投擲功能球的回吐機制(重置板上下移動)兔子🟡不抓球,內部重置;重置板下拉即 BW-088 的閘門動畫(同一物件),字卡演出前觸發
BW-021鏡頭球出手 → 投擲視角不動(玩家視角看球往前飛,v1.3 變更:不立即跟球)兔子🟢v1.3 拍板(2026-05-27 DEC-JSG11-015):OnPush 後鏡頭停在投擲視角,等球過截止線才切
BW-022鏡頭過截止線 → _traceCamera 開始跟球(無 zoom in,無瓶區近景)兔子🟢v1.3 改寫(2026-05-27 DEC-JSG11-015):~~原 PinAreaCamera 瓶區近景刪除~~,沿用冰壺 TraceCameraChangeOverHeadCamera 切換機制但目標改 _traceCamera(無 zoom in)
BW-023鏡頭倒瓶結束 / 球停下 → 字卡演出 → 黑畫面 fade 過場拉回投擲視角 → 選位置 HUD 顯示解封(僅非最後一球兔子🟢v1.3 + v1.4(2026-05-28):純黑 fade in 0.30s + 黑停留 0.20s + fade out 0.30s。v1.4 補:最後一球(Finish 後)不走黑畫面,直接切結算(見 BW-089)
BW-024鏡頭追球停止線_traceCamera 跟球至設定 Z 軸位置時停止追球(鏡頭停留,球繼續滾入結算判定)兔子🟢v1.4 新增(2026-05-28 會議):補對 BW-022「開始跟球線」缺對應「停止跟球線」
2. 計分系統(row 119 Jason) (14 項)
#模組功能負責狀態備註
BW-025基礎計分Open 計分(倒幾瓶 = 幾分)Jason🟢
BW-026基礎計分Strike 計分(15 分 = 10 + 5)Jason🟢
BW-027基礎計分Strike 判定 — 僅以正規瓶為準Jason🟢
BW-028基礎計分Strike 判定 — 排除障礙瓶Jason🟢Stage 2 障礙瓶倒下不影響
BW-029基礎計分Strike 判定 — 排除地雷彈飛瓶Jason🟢Stage 5 地雷彈飛仍算 Strike 但挑戰失敗
BW-030基礎計分UI 顯示絕對分數(不顯示百分比)兔子🟢
BW-031挑戰任務Stage 1 挑戰 — 至少 3 次 Strike(結算統計)Jason🟢
BW-032挑戰任務Stage 2 挑戰 — 不擊倒障礙瓶(即時失敗)Jason🟢
BW-033挑戰任務Stage 3 挑戰 — 不洗溝(即時失敗)Jason🟢
BW-034挑戰任務Stage 4 挑戰 — 不要碰到黑洞(即時失敗)Jason🟢
BW-035挑戰任務Stage 5 挑戰 — 不要碰到地雷(即時失敗)Jason🟢
BW-036挑戰任務ChallengeTracker — 即時失敗 APIJason🟢
BW-037挑戰任務ChallengeTracker — 結算判定 APIJason🟢
BW-038失敗處理限制違規 → 改加分制(違規不扣分,失去該關挑戰加分 +10~+50 各關遞增)Jason🟢
3. 5 關設計(Stage 3/4/5 負責 RD 待討論先空著) (13 項)
#模組功能負責狀態備註
BW-039Stage 1 標準10 正規三角陣配置Jason🟢
BW-040Stage 1 標準挑戰任務:至少 3 次 StrikeJason🟢
BW-041Stage 2 障礙物3 障礙瓶前排佈局Jason🟢
BW-042Stage 2 障礙物障礙瓶倒下跟正規瓶一起重置邏輯Jason🟢
BW-043Stage 2 障礙物挑戰任務:不擊倒障礙瓶Jason🟢
BW-044Stage 3 風吹風場機關(位置固定)兔子🟢
BW-045Stage 3 風吹挑戰任務:不洗溝兔子🟢
BW-046Stage 4 黑洞黑洞機關(位置固定)Jason🟢
BW-047Stage 4 黑洞挑戰任務:不要碰到黑洞Jason🟢
BW-048Stage 5 地雷地雷機關(位置固定)Jason🟢
BW-049Stage 5 地雷地雷彈飛瓶物理Jason🟢
BW-050Stage 5 地雷挑戰任務:不要碰到地雷Jason🟢
BW-051闖關系統關卡解鎖機制(過各關門檻 24/48/68/88/96 → 下一關開放,未過 → 回大廳,玩家自由重選)兔子🟢
4. UI - Lobby(亞哈視覺 v2.2 r137~138 + Jason 程式 v2.2 r139) (24 項)
#模組功能負責狀態備註
BW-052主選單點擊開始按鈕亞哈 / Jason🟢原 PLAY 按鈕
BW-053主選單教學按鈕亞哈 / Jason🟢
BW-054主選單紀錄按鈕(v0.11 改名,原排行按鈕)亞哈 / Jason🟢
BW-055主選單主視覺背景(環型/弧型)亞哈 / Jason🟢5/10 美術會決議
BW-056主選單Btn_BackToJacfitness — 右上 home icon,返回 Jacfitness App 大廳亞哈 / Jason🟢v0.9 新增;對齊 JSG10 網球主選單樣式
BW-057模式選擇單人模式按鈕(點擊 → 接關卡選擇 → 進入遊戲)亞哈 / Jason🟢v0.11:雙人模式按鈕亦放在模式選擇,UI 上線 / RD 功能延後 v1.x(見下方雙人模式條目)
BW-058模式選擇教學關卡按鈕 + 首次強制 / 解鎖邏輯(未進過教學關卡前,模式選擇只能選教學;進入教學關卡後無論是否過關即解鎖單人模式)亞哈 / Jason🟢獨立教學關卡視為一個模式入口,沿用 JSG09/JSG10 互動式教學關卡精神
BW-059模式選擇雙人模式按鈕(lock 樣式 — UI v1.0 上線 / RD 功能延後 v1.x)亞哈 / Jason🟢v0.11 新增;v0.16 拿掉 hint 文字,僅靠 lock badge 圖示表達鎖定狀態
BW-060關卡選擇5 卡片橫排佈局亞哈 / Jason🟢
BW-061關卡選擇卡片狀態 — 已過關亞哈 / Jason🟢
BW-062關卡選擇卡片狀態 — 鎖定亞哈 / Jason🟢v0.15.1 拆界Card/Stage 已縮為 2 態(Unlocked / Current)— Locked variant 移除(純底卡與 Unlocked 重複);鎖定樣式由 Unlocked instance + 黑 50% dim rect + Badge/Lock instance 在 frame 內拼裝
BW-063關卡選擇卡片內容 — 機關 icon亞哈 / Jason🟢2026-06-05 取消:卡片上的機關 icon 移除,Badge/Mechanism component(5 型)整組刪除(Figma + 雲端 Drive + Unity bundle)。機關呈現改走遊戲內 3D 模型 / VFX,UI 卡片不再疊機關 icon。(原 v0.15.1 拆界:Card/Stage master 不含機關 icon、由 Badge/Mechanism instance 疊)
BW-064關卡選擇卡片內容 — 挑戰達成標記亞哈 / Jason🟢v0.15.1 拆界Card/Stage master 不含金星;由 Badge/ChallengeAchieved instance 疊在 Stage frame 已通關卡片右下
BW-065關卡選擇下一關解鎖分數標籤 — 右上獨立顯示「下一關解鎖分數 96 分」亞哈 / Jason🟢v0.11 由卡片內提示改為右上獨立常駐標籤
BW-066關卡選擇「確認」按鈕 — 當玩家選擇某一關時,確認按鈕才會出現(條件式顯示,未選關時隱藏)亞哈 / Jason🟢v0.15 改條件式出現
BW-067關卡選擇卡片選擇框 — 玩家點選某張關卡卡片時顯示選中狀態(選中視覺反饋,配合 BW-067 確認按鈕出現流程)亞哈 / Jason🟢v0.15 新增
BW-068教學頁Tutorial_01_SelectPosition — 動作教學頁 1「選擇位置」(手腕貼地左右轉動選球道站位)亞哈 / Jason🟢v0.12 frame 改名,原「兩階段投擲」拆 3 頁
BW-069教學頁Tutorial_02_ThrowBall — 動作教學頁 2「丟出保齡球」(手放下確認位置 + 看角度揮臂推出)亞哈 / Jason🟢v0.12 frame 拆出,原合在 BW-068 內
BW-070教學頁Tutorial_03_CurveBall — 動作教學頁 3「曲球控制」(推球瞬間扭手腕,球路彎曲)亞哈 / Jason🟢v0.12 拆出第 3 頁(nodeId 15553:61);v0.15 從 §11 移入教學頁區塊。對齊 BW-009 旋轉球路
BW-071教學頁上一頁按鈕亞哈 / Jason🟢
BW-072教學頁下一頁按鈕亞哈 / Jason🟢
BW-073紀錄頁 (Record)紀錄頁完整功能 — 1P/2P tab 切換(2P 內容 RD v1.x 才實裝資料源) + 可滑動排行榜 + 玩家自己若在榜內,滑動時可看到自己的實際排行並以米色列區分 + 底部固定黃色自己的排行列(未上榜顯示「-」+ ID + 玩家歷史最高分)+ CP0 待決:各關獨立 vs 統一亞哈 / Jason🟢2026-06-04 補充Record/RankingRow 三態為 Default / CurrentUserInList(米)/ CurrentUser(黃);component 皆不含文字,排名/名稱/分數由 layout/程式注入。v0.15.1 移除「我的最高分」獨立顯示。外觀詳 ui-layout.md §2.7
BW-074藍牙連線藍牙連線完整功能 — 裝置列表(最多 5 個)+ 兩 frame 切換(Connet_Searching 未連線 / Connet_Connected 已連線)+ 偵測到目標裝置自動切態 + cyan highlight 選中裝置 + 連線狀態白字 / 紅字提示 + 「請將裝置配戴於右手腕」配戴指引;連線成功後 Connet/StatusFrame 依裝置名稱前綴切換圖示(Jmate1 / Jmate2 / Jmotion)亞哈 / Jason🟢v0.15 由 BW-076~080 合併。外觀(面板色 / sticky tag / 手環圖示 3 variant / LED 亮燈)詳 ui-layout.md §2.8 Connet 兩 frame + v0.12 Component(Connet/StatusFrame 4 variant:Jmate1 15899:302 / Jmate2 15470:95 / Jmotion 15899:305 / Unconnected 15470:96 / Connet/DeviceList_bg / Btn/Device
BW-075藍牙連線繼續按鈕(連線成功後可點 → 進入下一步)亞哈 / Jason🟢功能項;外觀詳 ui-layout.md
5. UI - 戰鬥(亞哈視覺 v2.2 r137~138 + 兔子 程式 v2.2 r140) (26 項)
#模組功能負責狀態備註
BW-076進場Ready 字卡(單字 READY,無 3·2·1 倒數)— 每關只播 1 次(Loading 完場景 + BGM 起後),不是每球亞哈 / 兔子🟢v0.8 簡化 + v0.6 觸發補完(2026-05-27 DEC-JSG11-016)
BW-077HUD當前分數(左上)亞哈 / 兔子🟢
BW-078HUD過關門檻顯示亞哈 / 兔子🟢
BW-079HUD球數計數(右上)亞哈 / 兔子🟢
BW-080HUDStage 標記亞哈 / 兔子🟢
BW-081挑戰面板面板視覺 3 態 — 進行中(顯示任務描述)/ 成功(☑ icon + 灰字)/ 失敗(紅槓 + 灰字)亞哈 / 兔子🟢v0.6.1 修正(2026-05-27 DEC-JSG11-016a):☑ icon 沿用 JSG05 棒球教學打勾風格;進行中 = 顯示任務描述文字本身
BW-082挑戰面板即時失敗型(Stage 2~5):違規條件達成當下瞬間演紅槓 DOTween 動畫 + 灰字(不震動 / 不配音亞哈 / 兔子🟢v0.6.1 改寫(DEC-JSG11-016a):適用 Stage 2 障礙瓶 / Stage 3 洗溝 / Stage 4 黑洞 / Stage 5 地雷。動畫參數 token 詳 ui-animation.md §5
BW-083挑戰面板達標型即時成功(Stage 1 至少 3 strike):條件達成當下瞬間 → ☑ icon DOTween 彈出 + 灰字亞哈 / 兔子🟢v0.6.1 修正(DEC-JSG11-016a):~~原「整關 10 球結算完 + 未違規才出」~~改為「累計 strike 達 3 的那一球結算完即出」
BW-084挑戰面板達標型補演 fail(Stage 1):第 10 球結束時若仍未達 3 strike → 結算前演紅槓 DOTween 動畫 + 灰字亞哈 / 兔子🟢v0.6.1 新增(DEC-JSG11-016a):達標型挑戰特有的「結算前補演 fail」邏輯
BW-085結算字卡Card_ChallengeClear 字卡 — 所有挑戰達成的瞬間即出(不等第 10 球結算頁)亞哈, 綠豆 / 兔子🟢v0.6.1 修正(DEC-JSG11-016a):~~原「結算頁觸發」~~改為「最後一條挑戰達成瞬間即出」。現只 1 挑戰 → 等於 HUD ☑ 演出後立即;未來多挑戰 → 最後一條達成瞬間
BW-086操作 gatingOnPush 觸發瞬間 → 球停 → 字卡 → 黑畫面過場期間,手環輸入全部封鎖;選位置 HUD 顯示才解封兔子🟢v0.6 新增(2026-05-27 DEC-JSG11-016)JSG11_BattleInputGate 統一 gate
BW-087過場演出字卡退場後 → 純黑 fade in 0.30s + 黑停留 0.20s(鏡頭悄悄拉回投擲視角)+ fade out 0.30s兔子🟢v0.6 新增(2026-05-27 DEC-JSG11-016):方案 A 純黑,無球數提示或 Stage 編號。v1.4 補(2026-05-28):僅適用非最後一球;最後一球見 BW-089
BW-088結算 gating球停下後等 3 秒 → 閘門下拉動畫 → 字卡 + 分數 + 挑戰面板同步演出兔子v1.4 新增(2026-05-28 會議):統一所有觸發路徑(碰判定點 / 進溝 / Strike 即時 / 球低速判定);Animator 由飯茄(場景)確認
BW-089結算流程最後一球字卡序列 — Finish → 直接切結算頁(無黑畫面 fade)→ HighScore(破紀錄才出)→ NewStage(解鎖才出);結算頁進退場沿用 Lobby Modal 動畫設定(dim 0→0.6 / panel scale 0.85→1.0 OutBack)兔子🟢v1.4 新增(2026-05-28 會議):覆蓋原 BW-023 + BW-087 在最後一球的黑畫面 fade;參考 BW-178 Lobby Modal 動畫 token
BW-090投擲 UI瞄準箭頭自走擺動視覺(±45° / 6s 週期 InOutSine Yoyo,端點慢、中間快)亞哈 / 兔子🟢參數 2026-05-19 v0.5 拍板(保留 v0.4 ±45°/6s,撤回 OutSine+InSine 雙段),詳 ui-animation.md §3.2 + §5 token
BW-091單球字卡Strike 字卡(OutBack 進場 + punchScale 0.1;不加震屏 2026-05-18 拍板)— 若挑戰達標,後接 Challenge Clear 字卡(BW-085)亞哈 / 兔子🟢v1.4 補(2026-05-28):補對播放順序「Strike → Challenge Clear」;詳 ui-animation.md §2.1 + §7.1
BW-092LeaveGame 視窗LeaveGame 確認對話框視覺(白底圓角 Dialog/LeaveGame_bg + 文案「離開時分數不會記錄/確定回到開始畫面?」+ 否(紅)/ 是(綠)Btn/Common Yes/No + GameSceneBehind_dim亞哈 / 兔子🟢v0.12 改名(原 UIJSG11_Battle_Pause)+ 文案改;沿用 shared/pause v2.0 容器;v0.15.1(2026-05-20)拆界Dialog/LeaveGame_bg master 內不含 Yes/No 按鈕,按鈕由 Btn/Common Yes/No instance 拼裝
BW-093LeaveGame 視窗否(紅)/ 繼續遊戲(恢復球次/分數/挑戰狀態)兔子🟢v0.12 改按鈕語意
BW-094LeaveGame 視窗是(綠)/ 回大廳(當局放棄,不計分)兔子🟢v0.12 改按鈕語意
BW-095結算頁Result header — gold 大字(不論過關 / 沒過均顯示 Result)亞哈 / 兔子🟢v0.8 取代 PASS 狀態文字
BW-096結算頁該關總分亞哈 / 兔子🟢
BW-097結算頁總分顯示 N / 96(單一中央 Pnl_ResultDetail 內第 4 行)亞哈 / 兔子🟢v0.8 取代 PASS / 未過訊息
BW-098結算頁Strike 統計亞哈 / 兔子🟢
BW-099結算頁Open 統計亞哈 / 兔子🟢
BW-100結算頁挑戰結果(Clear +10 / Failed)— Pnl_ResultDetail 內第 3 行亞哈 / 兔子🟢v0.8 合併原 BW-093 達成徽章 + BW-094 失敗顯示
BW-101結算頁「繼續」按鈕 — 結算頁唯一按鈕(v0.8 取代「返回大廳」)亞哈 / 兔子🟢右下金底紅邊;功能仍是回大廳,UX 文字更友善
6. 美術素材(v2.2 r127~r132 場景+球瓶+機關三階段,**2026-05-21 階段 2/3 提前啟動**) (14 項)

階段 1 場景 / 背景(v2.2 r127,**初稿 5/21 入庫**,持續迭代到 8/M)

#模組功能負責狀態備註
BW-102階段1場景保齡球館場景 — 環型/弧型主視覺(初稿 ✅ 2026-05-21 入庫:大廳 / 遊戲畫面 / Loading 三張)Jason🟢構圖+色相 OK,材質 / 燈光細化期到 8/M

階段 2 球瓶(v2.2 r128~129,**2026-05-21 提前啟動** — 球道列已刪)

#模組功能負責狀態備註
BW-103階段2球瓶球道模型Jason🟢
BW-104階段2球瓶空氣牆 — 球道兩側溝外緣(不可見 collider,防球意外飛出場景);高度涵蓋球可能彈起最大值Jason🟢v1.4 新增(2026-05-28 會議):對應地雷彈飛 / 風場吹偏等極端情境
BW-105階段2球瓶球道支援彎曲軌跡渲染(依旋轉量)Jason🟢
BW-106階段2球瓶正規球瓶模型Jason🟢
BW-107階段2球瓶一般球模型兔子🟢
BW-108階段2球瓶球體旋轉視覺 — 連續映射尾跡兔子🟢
BW-109階段2球瓶球體旋轉視覺 — 旋轉貼圖兔子🟢

階段 3 障礙物 / 機關視覺(v2.2 r130~132,**2026-05-21 提前啟動**:機關模型完成後接機關 VFX)

#模組功能負責狀態備註
BW-110階段3障礙物障礙瓶 — 模型(視覺明顯區分正規瓶)Jason🟢
BW-111階段3障礙物風場視覺(風線 + 風向指示 + 影響範圍可視化,不做落葉)兔子🟢
BW-112階段3障礙物黑洞視覺(旋渦動畫 + 邊緣扭曲 + 影響半徑可視化)Jason🟢
BW-113階段3障礙物地雷視覺 — 外殼Jason🟢
BW-114階段3障礙物地雷視覺 — 警示燈Jason🟢
BW-115階段3障礙物地雷視覺 — 引爆 VFX 介接Jason🟢
7. 特效 VFX(v2.2 分佈:機關環境/事件 r131~132、字卡動態 r134、球路特效 r135~136 — 綠豆) (19 項)
#模組功能負責狀態備註
BW-116通用 VFXReady 字卡兔子, 亞哈, 綠豆🟢
BW-117通用 VFXFinish 字卡 — 最後一球結束後播放,播完直接切結算(無黑畫面 fade)兔子, 亞哈, 綠豆🟢v1.4 補(2026-05-28 會議):與 BW-089 配合
BW-118通用 VFXNew Stage 進場字卡 — 在 HighScore 字卡(BW-119)後播放,僅解鎖新關卡時觸發兔子, 亞哈, 綠豆🟢v1.4 補(2026-05-28 會議):補對結算字卡序列位置
BW-119結算字卡HighScore 字卡 — 結算頁切入後,若該關打破玩家歷史最高分則彈出(金字 + 徽章 + +X 提示)兔子, 亞哈, 綠豆🟢v1.4 新增(2026-05-28 會議):序列:Finish → 結算 → HighScore → NewStage
BW-120通用 VFX~~投擲方向箭頭 VFX~~ — 2026-05-21 釐清非 VFX:UI 做圖(亞哈)+ RD 做動態(兔子 / Andros),由 BW-001 / BW-003 / BW-083 覆蓋兔子, 亞哈🟢
BW-121球與球路球路 Trail 視覺 v2.0(顏色 = OnPush 轉速二元:< 100% 藍一般 Trail / = 100% 橘螺旋丸;長度 = 球體移動速度線性,低於閾值消失;球體透明度 = 轉速線性,越慢越透明;準備階段全隱藏;橘色用「直線骨架 + Trail 動態調整」實作;詳 DEC-JSG11-020)兔子, 綠豆🟢
BW-122結算字卡~~Strike VFX — 彩帶~~ — 砍掉(2026-06-22):見 DEC-JSG11-029兔子, 綠豆
BW-123結算字卡~~Strike VFX — 閃光~~ — 砍掉(2026-06-22):見 DEC-JSG11-029兔子, 綠豆
BW-124結算字卡Strike VFX — 字卡(動態,r134 字卡動態階段 6/1~6/12 綠豆 / 設計 r133 5/18~5/29 亞哈)兔子, 亞哈, 綠豆🟢
BW-125機關 VFX障礙瓶倒下警示 VFX — 紅色閃光Jason, 綠豆🟢
BW-126機關 VFX風場 VFX兔子, 綠豆🟢
BW-127機關 VFX洗溝 VFX — 「Gutter!」字卡兔子, 亞哈, 綠豆🟢碰溝即彈字卡 → 下一球(球次照算,挑戰即時失敗 → 失去 +10)
BW-128機關 VFX洗溝 VFX — 警示閃光Jason, 綠豆🟢
BW-129機關 VFX黑洞 VFX — 旋渦動畫Jason, 綠豆🟢
BW-130機關 VFX~~黑洞 VFX — 球被吸入扭曲效果~~ — 砍掉(2026-06-22):見 DEC-JSG11-029Jason, 綠豆
BW-131機關 VFX黑洞 VFX — 「Sucked!」字卡兔子, 亞哈, 綠豆🟢
BW-132機關 VFX地雷 VFX — 警示燈閃爍Jason, 綠豆🟢
BW-133機關 VFX地雷 VFX — 爆炸特效Jason, 綠豆🟢2026-05-15 簡化(原「引爆爆炸光圈」+ 已砍「瓶子被彈飛尾跡」)
BW-134結算 VFX挑戰達成 +10 VFX(金色徽章 + 「Challenge Clear +10」字卡)兔子, 亞哈, 綠豆
8. 音效 SFX(v2.2 r141~142 鏡) (15 項)
#模組功能負責狀態備註
BW-135通用 SFXReady 提示音兔子, 鏡
BW-136通用 SFXFinish 提示音兔子, 鏡取代過關 PASS 音 / 過關慶祝光效
BW-137通用 SFXNew Stage 進場字卡音兔子, 鏡對應 BW-117 字卡,也作為解鎖下一關回饋音
BW-138通用 SFX球出手音兔子, 鏡
BW-139通用 SFX球滾動音兔子, 鏡
BW-140撞瓶撞瓶聲(單一音檔)兔子, 鏡大/小力撞擊合 1
BW-141撞瓶球瓶倒下音Jason, 鏡
BW-142StrikeStrike 音效(單一音檔)兔子, 鏡
BW-143機關 SFX倒入溝 gutter 音Jason, 鏡對應 BW-126 Gutter 字卡音,Stage 3 挑戰失敗
BW-144機關 SFX障礙瓶倒下警示音Jason, 鏡Stage 2
BW-145機關 SFX風場 — 風吹聲兔子, 鏡Stage 3(風吹聲已足夠,球偏移聲於 v0.11.1 已砍)
BW-146機關 SFX黑洞 — 吸力聲Jason, 鏡Stage 4
BW-147機關 SFX黑洞 — 吸入音效Jason, 鏡
BW-148機關 SFX地雷 — 引爆聲Jason, 鏡Stage 5
BW-149結算 SFX挑戰達成 +10 音(金幣/成就)兔子, 鏡
9. BGM(v2.2 r143 鏡) (2 項)
#模組功能負責狀態備註
BW-150BGM大廳 BGMJason, 鏡Alpha 用冰壺 BGM 佔位,正式版待 v2.5
BW-151BGM遊戲 BGM(5 關共用)Jason, 鏡Alpha 用冰壺 BGM 佔位,正式版待 v2.5
10. 整合 / QC(row 135 素材實裝 + row 136 CP) (20 項)

素材實裝(row 135 程式側)

#模組功能負責狀態備註
BW-152素材實裝美術場景素材實裝Jason, 兔子
BW-153素材實裝音效素材實裝Jason, 兔子
BW-154素材實裝特效素材實裝Jason, 兔子
BW-155素材實裝UI 素材實裝Jason, 兔子

Excel 表(RD 數值設定表,讓 TM/策劃調參數不用動 code)

#模組功能負責狀態備註
BW-156Excel 表JSG11Bowling_LevelSetting待 RD關卡表:StageId / LevelTypeId(0教學 1一般)/ 瓶種組成 int[] / 機關 ID int[] / 解鎖下關分數 / 解鎖關卡 ID / 挑戰類型 enum / 挑戰門檻值
BW-157Excel 表JSG11Bowling_PinSetting待 RD瓶種表(仿 JSG9 ObjectSetting):PinId / 註解 / PinType(Normal/Obstacle)/ 分數 / 重量
BW-158Excel 表JSG11Bowling_MechanismSetting待 RD機關表(仿 JSG08 TrapValue):MechanismId / 註解 / TrapValue: double[]。陣列含義 — 風:[強度, 週期秒];黑洞:[峰值力, 曲線類型 0線性 1反平方];地雷:[爆炸 impulse, 是否連鎖 0/1]

中斷恢復

#模組功能負責狀態備註
BW-159中斷恢復藍牙斷線偵測(沿用 shared/bluetooth)待 RD
BW-160中斷恢復藍牙斷線 — 重投當球 vs 整關重來判定待 RD

多語系

#模組功能負責狀態備註
BW-161多語系多語系 key — 5 關名稱Jason🟢
BW-162多語系多語系 key — 挑戰任務描述Jason
BW-163多語系多語系 key — UI 文字Jason🟢

QC 必測項目

#模組功能負責狀態備註
BW-164QC 必測靜止手腕投擲走直線兔子🟢
BW-165QC 必測5 關門檻平衡兔子, Jason
BW-166QC 必測挑戰任務即時失敗判定Jason🟢
BW-167QC 必測障礙瓶倒下跟正規瓶一起重置邏輯QC
BW-168QC 必測地雷彈飛 Strike 判定QC
BW-169QC 必測5 關全通關流程兔子, Jason
BW-170QC 必測各 Stage 重玩流程兔子, Jason

CP

#模組功能負責狀態備註
BW-171CPCP 一次驗收 @ 7/7(row 136)小曹
11. UI 動畫實裝(v0.14 新增 / v0.15 重整)— 對齊 ui-layout v0.12 + ui-animation v0.5 (12 項)

Lobby 動畫(亞哈視覺 + Jason 程式)

#模組功能負責狀態備註
BW-172載入畫面Loading/Screen 1920×1080 完整載入畫面(JSG BOWLING + 進度條)亞哈 / Jason🟢v0.12 新增 component(nodeId 15470:106);v0.3.2 拍板:不做動畫(純切場景 + fillAmount 真實進度回呼)
BW-173Lobby CTA「點擊開始遊戲」呼吸動畫(scale 1.0↔1.06 + alpha 1.0↔0.85,1.6s InOutSine Yoyo 永久循環)Jason🟢ui-animation §3.5.2 + token LobbyCtaBreathePeriod=1.60f
BW-174Lobby 進場Lobby 進場 stagger 序列(bg fade-in 0.3s + logo 0.4s + CTA 0.35s + 右下三膠囊 stagger 0.08s/個 )Jason🟢ui-animation §3.5 + token LobbyBg/Logo/Cta/BtnStagger
BW-175Tab 切換Tab 切換動畫 — 被選 Tab 輕彈一下(縮放),底色跟著換,底線指示器橫向滑過去(0.30s),內容區淡出入換頁Jason🟢套用 Record 1P/2P + Tutorial Prev/Next;ui-animation §3.5.4(token:punch 1.0→1.08→1.0、OutCubic posX)
BW-176Btn tap 反饋全遊戲按鈕點擊回饋 — 所有按鈕點下去縮到 92% 後彈回,讓玩家感覺有按到(適用:一般按鈕、圖示按鈕、Lobby 三膠囊、已解鎖模式按鈕);手機 tap-only 無 hover(v0.3 拍板)Jason, 兔子🟢ui-animation §4 + token BtnPressDown/Up(scale 1.0→0.92→1.0 / 0.08s InQuad + 0.12s OutBack)
BW-177Lobby 動畫Lobby Modal 連續轉場 — Lobby → ModeSelect → Stage 同 dim 層複用,新 panel 在舊 panel 出 50% 時提早 0.1s 銜接進場Jason🟢v0.15 從 §11.B 移到 §11.A Lobby 範疇;ui-animation §1.6
BW-178Lobby 動畫Lobby Modal 開閉動畫 — ModeSelect / Stage / Connet_Searching / Tutorial_01 四個 Lobby modal 通用進退場(dim alpha 0→0.6 / 0.25s + panel scale 0.85→1.0 0.35s OutBack + alpha 0→1 0.25s)+ 關閉反向亞哈 / Jason🟢v0.15 從原 BW-181 拆出 Lobby 部分;ui-animation §1.2-1.5 + token ModalDim/Panel*

戰鬥動畫 / HUD 元件(亞哈視覺 + 兔子程式 + 綠豆字卡)

#模組功能負責狀態備註
BW-179ScoreBlock 整合元件HUD/ScoreBlock(左上整合 Stage + 分數 + 目標)取代 BW-084/085/087 散項實裝亞哈 / 兔子🟢v0.12 新增 component(nodeId 15587:2);BW-084/085/087 視覺仍保留但實裝為單一 component。2026-06-05:不嵌字規約擴及 HUD 動態元件 — ScoreBlock / ScoreItem / ChallengeTask / UnlockHint master 不含文字(純底卡),Stage / 分數 / 目標 / 挑戰文字由 layout / 程式於執行期注入
BW-180戰鬥 Modal戰鬥 Modal 開閉動畫 — Result / LeaveGame 兩個戰鬥內 modal 通用進退場(dim alpha 0→0.6 / 0.25s + panel scale 0.85→1.0 0.35s OutBack + alpha 0→1 0.25s)+ 關閉反向亞哈 / 兔子🟢v0.15 從原 BW-181 拆出戰鬥部分;ui-animation §1.2-1.5 + token ModalDim/Panel*
BW-181HUD 字卡進退場Card/StatusHint 共用容器 6 種狀態進退場(Ready/Finish/Strike/NewStage/Gutter/Sucked,OutBack 進場 + InQuad 退場,Strike 加 punchScale 0.1 / NewStage 滑入 + 上下白線 / Gutter 紅閃 / Sucked shake)綠豆 / 兔子🟢ui-animation §2.1 + token HUDCardStandard/Strike/NewStage*;對接 BW-116~118/122~124/127/131 字卡
BW-182Stage→Battle 轉場選關卡點「確認」後畫面流程:① Loading(純進度條,不做動畫)→ ② 進戰鬥後 HUD 各元件錯開依序淡入升起(左上分數、挑戰面板、本球計分)→ ③ 出現「Ready」字卡 → ④ 選投球位置 HUD 直接顯示(即時,不做淡入)兔子🟢ui-animation §3.5.5 完整序列(stagger:ScoreBlock/ChallengeTask/ScoreItem fade-in + posY)
BW-183挑戰面板進行中態文字跑馬燈 — 任務描述過長時水平循環捲動(無限迴圈、固定速度 ChallengeMarqueeSpeed px/s、貼底、不擋左邊、右側碰啟動按鈕停、黑底靜止只跑文字);任務成功/失敗時停止→文字復位→再演 ☑/紅槓(三段有序)兔子🟢v0.7 新增(2026-06-03 會議 DEC-JSG11-025):ui-animation.md §0.5.4b + token;速度先設任意值 demo 後調
BW-184炸彈瓶炸彈瓶擊中後立即在原位刷新(mid-ball 即時復位,不等球結束)— 不計分、不影響 Strike 判定;Stage 5 × 1 顆兔子v1.4(2026-06-24 全確認):挑戰=無獨立;VFX=沿用地雷爆炸;視覺=正規瓶改色。位置待 RD 定
BW-185HUD 字卡所有字卡停留時間統一改 1.0s(原 Ready/Finish/Gutter/Sucked=1.5s、Strike=1.8s、NewStage/ChallengeClear=2.0s)— 綠豆調整 DOTween token HUDCardHold = 1.00f綠豆v0.8 新增(2026-06-24);ui-animation.md §2.1 + §2.2
🔗 Google Sheet 同步
同步腳本:見 KB CLAUDE.md 外部資源章節。
欄位:A 編號 / B 模組 / C 功能 / D 狀態 / E 負責 RD / F 美術負責 / G 預計階段 / H 完成日期 / I 備註
JSG11 保齡球 — 完整企劃書
製作:TM 小曹 · 受眾:美術(場景 / VFX / SFX)/ UI / 開發組
SSoT 原始碼:games/JSG11-bowling/ · 視圖由 Agent 自動編譯