JSG11 保齡球 — 完整企劃書
TM 小曹

JSG11 保齡球

Q 版單人闖關 · 兩階段投擲 · 5 關機關闖關 · 全局曲球
類型 運動 / 體感
模式 單人 5 關闖關
球數 每關固定 10 球
門檻 各關 96 分(含挑戰滿分 × 60%)
製作 5/18 ~ 7/B(1.5 月)+ Alpha 0.5 月
CP 7/7 一次驗收

1遊戲核心

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

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

關鍵賣點

🎯 玩家技術定變化

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

🎪 5 關 5 種樂趣

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

🧠 規則簡單客服好解釋

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

⚠️ 前端與規則重做

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

2設計哲學

簡化勝過複雜

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

沒有失敗 ≠ 沒有後果

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

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

附帶挑戰任務 +10 分計入門檻,鼓勵玩家嘗試但不強迫。

變數在玩家、固定在機關

旋轉量由玩家手腕扭動決定(操控變量);機關位置固定(玩家可學、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 決定是否開放。
📐 鏡頭流程
球出手 → traceCamera 追球 → 過截止線切到 瓶區近景 PinAreaCamera → 倒瓶結束拉回投擲視角。
沿用冰壺 OverHeadCamera 結算頂視角流程。

4計分系統

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

滿分計算

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

含挑戰滿分 = 150 + 10 = 160

過關門檻 = 含挑戰滿分 × 60%
        = 160 × 0.6
        = 96

重要規則

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

55 關闖關架構

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

STAGE 1
標準
場上 10 正規三角陣
機關
滿分 160 / 門檻 96
為玩家建立操作基準,體驗正規保齡球感受。
挑戰:至少 3 次 Strike(結算統計)
STAGE 2
變陣
場上 10 正規 + 3 障礙
機關 障礙瓶(前排,位置固定)
滿分 160 / 門檻 96
障礙瓶倒下 0 分、不重置,下一球更難。Strike 仍只看正規瓶。
挑戰:不擊倒任何障礙瓶(即時失敗)
STAGE 3
風吹
場上 10 正規三角陣
機關 風場(位置固定)
滿分 160 / 門檻 96
球進風場 → 被側向推走,提高洗溝風險。玩家可用旋轉抗風或順風。
挑戰:不洗溝(即時失敗,任一球洗溝即失敗)
STAGE 4
黑洞
場上 10 正規三角陣
機關 黑洞(位置固定)
滿分 160 / 門檻 96
球進黑洞影響半徑 → 被吸入 → 該球作廢 0 分。不影響球瓶
挑戰:不要碰到黑洞(即時失敗)
STAGE 5
地雷
場上 10 正規三角陣
機關 地雷(位置固定、一次性)
滿分 160 / 門檻 96
球觸發地雷 → 爆炸 → 被炸瓶彈開(算倒下)。仍可 Strike,但挑戰失敗。
挑戰:不要碰到地雷(即時失敗)

6旋轉球路系統(全局)

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

機制

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

設計意圖

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

Owner:Andros

旋轉視覺映射(連續變化)

旋轉量級距球體視覺軌跡視覺
接近 0(手腕未扭)無旋轉、無尾跡走直線
低(小幅扭動)緩慢旋轉 + 淡色尾跡軌跡微彎
高(大幅扭動)高速旋轉 + 明顯尾跡軌跡明顯彎曲

7團隊分工

角色負責範圍Sheet Row
Andros投擲演算法(手腕 input → 站位 / 力道 / 角加速度映射)117
兔子投擲功能製作 + 戰鬥 UI(HUD / 結算 / 暫停)+ 部分機關118 / 134
Jason計分 / 挑戰追蹤 / Stage 1 2 4 5 / Lobby UI(大廳 / 關卡選擇 / 教學)119 / 133
亞哈UI 美術視覺(HUD / 結算 / 卡片 / 字卡 / 按鈕配色)132
美術組三階段:場景 → 球瓶/球道 → 障礙物127 / 128 / 129
綠豆VFX(特效)— Demo 完成後 5/30 起介入130
SFX(音效)+ BGM131
小曹(TM)規格 / 排程 / CP 驗收136

8時程

關鍵節點

日期事件負責
5/14 (四)CP0 規格定錨會議三方對齊(TM / 美術 / UI)
5/15 (五)Andros 演算法 v1 交付(單點關鍵路徑)Andros
5/18兔子實裝(接 Andros v1)兔子
5/22亞哈 UI 視覺交付 → Jason / 兔子接亞哈
5/29Demo 完成(球道 / 旋轉 / 障礙物三項驗證)RD
5/31月底匯流(尺寸定案 + 美術背景白稿)美術 + RD
5/30 起綠豆 VFX 介入綠豆
6 月中後SFX 開工
6 月底前BGM 完成
6 月底素材實裝完成Jason / 兔子
7/7CP 一次驗收(5 關 + 旋轉 + 三機關 + UI + VFX + SFX + BGM)小曹
7/B ~ 7/MAlpha(含外整)QC

🎨 美術交付

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

1風格框架 美術

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

🎯 整體調性

  • Q 版圓潤造型、誇張比例
  • 與 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 場景 / 背景5/12 ~ 5/31
• 環型 / 弧型主視覺白稿 × 1
• 與球道長度無關,可先做
• 5/31 前白稿確定 → 移交場景團隊細化
負責:美術組(負責人待定)
階段 2 球瓶 / 球道5/31 ~ 6/15
• 球道模型(支援彎曲軌跡渲染)
• 正規瓶模型(白底紅頸)
• 一般球模型 + 旋轉視覺
• 依 Andros v1(5/15)+ Demo 實測尺寸定案
負責:美術組(負責人待定)
階段 3 障礙物 / 機關6/15 ~ 7/4
• 障礙瓶(視覺明顯區分正規瓶)
• 風場(風線 + 風向 + 範圍可視化)
• 黑洞(旋渦 + 邊緣扭曲)
• 地雷(外殼 + 警示燈)
負責:美術組(負責人待定)

VFX / SFX / BGM 介入時程

VFX 特效5/30 起
• 22 項 VFX(BW-111 ~ BW-132)
• Demo 完成(5/29)後介入
• 字卡:文字 = 亞哈 / 動態 = 綠豆
負責:綠豆 ✅
SFX 音效6 月中後
• 16 項 SFX(BW-133 ~ BW-148)
• 場景風格定案後介入
• 撞瓶聲合 1(不分大 / 小力)
負責:鏡 ✅
BGM6 月底前
• 大廳 BGM × 1
• 遊戲 BGM × 1(5 關共用)
• 風格方向 TM 與鏡 6 月場景定案後對齊
負責:鏡 ✅

3場景規格 美術

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

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

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

球道需求

  • 直線球道為基底
  • 需支援由 forward 軸 angularVelocity 產生的彎曲軌跡渲染
  • 玩家手腕扭動量 → 軌跡彎曲程度(連續)
  • 溝槽(gutter)視覺需明確

4球瓶 / 球規格 美術

類型視覺特徵適用物理
正規瓶 標準保齡球瓶、白底紅頸、可辨識 5 關通用 標準 mass + collider
障礙瓶
(Stage 2)
需明顯區分
例:黑色 / 帶警示條紋 / 鐵製外觀
Stage 2 倒下後不重置,需有「倒下定置」狀態
地雷彈飛瓶
(Stage 5)
沿用正規瓶模型 Stage 5 被爆炸彈飛 獨立飛行軌跡 + 落地物理(AddExplosionForce)
一般球 標準保齡球(無強化球) 5 關通用 Rigidbody + 旋轉視覺(連續變化尾跡)

球體旋轉視覺(連續映射)

手腕扭動量 → 球體視覺對應
手腕未扭
角加速度 ≈ 0
無旋轉
無尾跡
球直走
|
小幅扭動
低 ω
緩慢旋轉
淡色尾跡
軌跡微彎
|
大幅扭動
高 ω
高速旋轉
明顯尾跡
軌跡明顯彎曲
💡 視覺連續性
旋轉視覺隨 angularVelocity 線性過渡,不是離散的 3 級。旋轉方向(左 / 右)由角加速度正負決定,尾跡顏色可作為左右區分(可選)。

5機關視覺 美術

三機關(風 / 黑洞 / 地雷)位置固定。視覺需讓玩家一眼看出威脅類型 + 影響範圍。

💨 Stage 3 風吹

⟿⟿⟿
  • 球道側向風場(位置固定)
  • 風線 + 風向指示 + 影響範圍可視化
  • 球被吹偏的軌跡修正視覺
  • 不做飄落葉
📎 風場 ref(待美術上傳)

🕳️ Stage 4 黑洞

  • 球道上的吸引點(位置固定)
  • 旋渦動畫 + 邊緣扭曲
  • 影響半徑可視化
  • 球被吸入時的扭曲特效
  • 不影響球瓶(瓶子不會被吸)
📎 黑洞 ref(待美術上傳)

💣 Stage 5 地雷

  • 球道埋設視覺(位置固定)
  • 地雷外殼 + 警示燈閃爍
  • 引爆瞬間爆炸光圈
  • 瓶子被彈飛尾跡
  • 一次性消耗(觸發後該關不再生效)
📎 地雷 ref(待美術上傳)

6VFX 特效綠豆

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

📇 戰鬥字卡(UIJSG11_Battle_Cards · 2×4 grid)

共用容器 Card_HUD_StatusHint 承載 6 種狀態(READY / FINISH / STRIKE! / NewStage / GUTTER! / SUCKED!),Card_ChallengeClear 獨立結算 VFX。

READY
Card_Ready
BW-111 · ⭐⭐⭐
進關後直接出現
LevelSelect 點關 → Loading → READY(無倒數 3·2·1)
深色卡片 + 「READY」單字置中
FINISH
Card_Finish
BW-112 · ⭐⭐⭐
第 10 球結束 → 球停下 → 結算頁前
取代過關 PASS 音 / 光效
深色卡片 + 「FINISH」置中
New Stage
Card_NewStage
BW-113 · ⭐⭐⭐
解鎖下一關時 / 5 關各自進場識別
主標「New Stage」/ 副標「Stage X — 關名 解鎖」
橘色 banner + 白字 + 上下白色裝飾線
★ STRIKE!
Card_Strike
BW-119 · ⭐⭐⭐
1 球倒完正規瓶(球停止判定瞬間)
+15 加乘要視覺強烈(彩帶 + 閃光)
深棕底金字 + 副標「+15(10+5)」
GUTTER!
Card_Gutter
BW-124 · ⭐⭐
Stage 3 球進溝瞬間
觸發即時挑戰失敗(剩餘球不再判定)
紅色警示閃光 + 「GUTTER!」字
SUCKED!
Card_Sucked
BW-128 · ⭐⭐
Stage 4 球被吸入黑洞瞬間
觸發即時挑戰失敗(該球 0 分)
紫色警示 + 球被吸入扭曲
✦ +10
Card_ChallengeClear
BW-132 · ⭐
挑戰任務完成判定
Stage 1(結算統計達 3 strike)/ Stage 2~5(10 球結束未觸發失敗條件)
金色徽章彈出 + 副標「+10」
[共用容器]
Card_HUD_StatusHint
容器本體 · HUD 內
承載 6 種狀態:READY / FINISH / STRIKE! / NewStage / GUTTER! / SUCKED!
由程式(兔子)按時機切狀態
統一 visual rect,全部字卡內容置中
📌 已刪除字卡(SSoT v0.8 精簡)
  • Card_Stage_Intro — LevelSelect 已顯示 Stage 號 + 關名,進關不重複介紹
  • Card_Mechanism_Intro — 機關 icon 在 LevelSelect 已顯示
  • Card_Challenge_Intro — 改由 Battle_HUD 右上角「挑戰任務面板」常駐顯示
  • Card_Open — 改為分數直接更新到 HUD 數字 + 短閃光(不需字卡)

🎱 球與球路 VFX

球旋轉視覺
BW-115 · ⭐⭐⭐
球出手後到球停止
依手環角加速度連續變化(轉速越快尾跡越明顯)
球體旋轉貼圖 + 尾跡濃淡連續映射
球路軌跡光帶
BW-116 · ⭐⭐⭐
球滾動中
依旋轉量彎曲(直 → 彎連續)
光帶順著球體 forward 軸延伸
投擲方向箭頭
BW-114 · ⭐⭐⭐
階段 2 瞄準時自動擺動 → OnPush 瞬間定格
球道上方俯視,DOTween 連續擺動
變色指示節奏(提示揮臂時機)

🌀 機關環境 VFX(非字卡)

障礙瓶倒下警示
BW-121 · ⭐⭐
Stage 2 擊倒障礙瓶瞬間
觸發即時挑戰失敗
紅色閃光(HUD 變灰已足夠,不需字卡)
💨
風場 VFX
BW-122 · ⭐⭐
Stage 3 球進入風場區域時
風場本身可常駐顯示
風線 + 風向指示 + 範圍可視化 + 球被吹偏軌跡修正
🕳️
黑洞 VFX(環境)
BW-126 / 127 · ⭐⭐
Stage 4 黑洞常駐 + 球被吸入時扭曲
字卡 SUCKED! 另外觸發(見上)
旋渦動畫 + 邊緣扭曲 + 半徑可視化
💥
地雷 VFX
BW-129~131 · ⭐⭐
Stage 5 地雷常駐閃爍 + 引爆瞬間爆炸
警示燈閃爍 + 引爆光圈 + 瓶子被彈飛尾跡

7SFX 音效(16 項)

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

8BGM

🎵 大廳 BGM

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

🎵 遊戲 BGM(5 關共用)

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

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

🖼️ UI 規格

8 畫面 · 命名規範 · Figma 設計稿 · UX 流程
視覺 亞哈(row 132,5/15~5/22)
Lobby 程式 Jason(row 133)
戰鬥程式 兔子(row 134)
Figma 解析度 1920×1080 橫向

1Figma 設計稿 亞哈

亞哈設計稿主頁面。Wireframe v0.11 已落地(10 個 frame,Bluetooth 含雙態),等亞哈 5/15 起接視覺設計。

JSG11_保齡球(主設計頁)
file: Kra16tMbARMXT2mp5QVPDc · page nodeId: 15099:3041
✅ Wireframe v0.11 已落地 — 等亞哈 5/15 接視覺設計
開啟 Figma →

📐 Frame 規格

  • 解析度:1920×1080 landscape(保齡球場景偏寬橫向)
  • 排列:2 cols × 5 rows(10 個 frame,廢案 Clearance 已刪)
  • Bluetooth 含雙態 wireframe(未連線 + 已連線,視為同一 frame 兩種狀態)
  • Page 名稱:JSG11_保齡球

🔗 其他資源

📌 v0.11 重點變更(2026-05-14 反向同步)
Bluetooth 雙態 wireframe(未連線紅字 + 已連線含手環插圖 placeholder + cyan highlight,視為同一 frame 兩狀態)
Ranking → 紀錄 / Record 改名(命名 UIJSG11_Lobby_Record
模式選擇補雙人模式 lock 按鈕(UI v1.0 上線、RD 功能延後 v1.x,lock hint 統一涵蓋單人/雙人兩模式)
關卡選擇右上「下一關解鎖分數 96 分」標籤
設計稿節點 ID 同步回 references/figma-map.md

2UX 流程圖 UI開發

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

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

關鍵 UX 決議

🔒 教學關卡強制進入

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

👥 雙人模式 UI 上線

JSG11 v1.0 雙人模式 UI 已上線(ModeSelect 含按鈕、Record 含 2P tab),但 RD 功能延後 v1.x 才實裝。現階段 lock 樣式表達「教學關卡尚未完成」。

⚙️ 無設定入口

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

🔁 沒過關回大廳

沒過 → 回大廳重新選關(不顯示 Try Again 字眼),玩家自行決定是否重打。

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

依交付優先序排列。命名鎖結構:亞哈設計時用同樣命名、RD 實裝時用同樣命名 → 零翻譯成本。v0.11 已含 Bluetooth(雙態)+ Record。

1UIJSG11_Battle_HUD
範圍戰鬥
視覺亞哈
程式兔子
內容當前分數 / 過關門檻 / 球數 / Stage 標記 / 挑戰任務面板
2UIJSG11_Battle_ResultScreen
範圍戰鬥
視覺亞哈
程式兔子
內容PASS 狀態 / 總分 / Strike Open 統計 / 挑戰徽章 / 歷史最高分 / 返回大廳
3UIJSG11_Battle_Pause
範圍戰鬥
視覺亞哈
程式兔子
內容確認對話框(標題 + 警示文字 + 取消 / 確定回大廳)
4UIJSG11_Battle_Cards
範圍戰鬥
視覺亞哈(文字)+ 綠豆(動態)
程式兔子
內容8 張字卡 2×4 grid:R1 Ready/Finish/NewStage/Strike、R2 Gutter/Sucked/ChallengeClear/HUD_StatusHint;NewStage 橘色 banner + 上下白線(v0.8 取代舊版 Clearance)
5UIJSG11_Lobby_MainMenu
範圍Lobby
視覺亞哈
程式Jason
內容對齊 JSG10 網球:左上多國語系 logo / 右上 Btn_BackToJacfitness home icon / 中央偏下「點擊開始遊戲」綠字 CTA / 右下 教學 + 紀錄 膠囊堆疊
6UIJSG11_Lobby_ModeSelect
範圍Lobby
視覺亞哈
程式Jason
內容Modal 上下列表:教學關卡 / 單人模式 lock / 雙人模式 lock(v0.11 補;UI 上、RD v1.x);統一 lock hint「(首次須先完成教學關卡才能解鎖)」
7UIJSG11_Lobby_LevelSelect
範圍Lobby
視覺亞哈
程式Jason
內容5 卡片橫排 + 狀態(已挑戰 / 當前可玩 / 鎖定)+ 機關 icon + 右上「下一關解鎖分數 96 分」標籤(v0.11 新增)
8UIJSG11_Lobby_Tutorial
範圍Lobby
視覺亞哈
程式Jason
內容2 頁動作教學(兩階段投擲 + 旋轉曲球)+ 上下頁按鈕 + 返回鍵 (40, 40)
9UIJSG11_Lobby_Bluetooth ⭐ v0.11
範圍Lobby
視覺亞哈
程式Jason
內容對齊 JSG10:左 1P 連線狀態 + 右裝置列表 5 項 + 繼續按鈕;含雙態 wireframe(未連線紅字 / 已連線含手環插圖 placeholder + cyan highlight + 連線成功文字)— 同一 frame 兩種狀態
10UIJSG11_Lobby_Record ⭐ v0.11
範圍Lobby(紀錄 / 排行榜)
視覺亞哈
程式Jason
內容對齊 JSG10 Leaderboard:1P/2P tab + 7 行排行榜 + 自己 cyan highlight + 我的最高分;v0.11 frame 由「Ranking → Record(紀錄)」改名

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
單球結算
Open / Strike 字卡 + 分數
🎬 鏡頭流程
球出手 → traceCamera 追球 → 過截止線切到 PinAreaCamera(瓶區近景) → 倒瓶結束拉回投擲視角,準備下一球。

5命名規範 亞哈Jason/兔子

與舊 JSG 不同:JSG09 冰壺用 Curling_B 等單字 key 易撞名,JSG11 一律加 Bowling_JSG11_ 前綴

前綴與命名空間

命名空間用途範例
UIJSG11_UI 畫面 / panelUIJSG11_Battle_HUD
Bowling_美術 / 音效 / VFX 資源 keyBowling_VFX_Strike
JSG11_程式 Component / ControllerJSG11_AimingArrowController
bowling.多語系 key(lowercase dot notation)bowling.battle.hud.score

元件類型前綴

Frm_TopBar // Frame / Section(區塊容器) Pnl_Pause // Panel / Window(彈出視窗) Btn_Play // Button(按鈕) Lbl_Score_Current // Label / Text(文字) Img_Pin_Regular // Image(素材圖) Ico_Wind // Icon(小圖示) Bdg_ChallengeAchieved // Badge / Tag(徽章) Bar_AimArrow // Bar(進度條 / 力道條 / 箭頭) Card_Stage_01_Standard // Card(卡片) Cnt_Ball // Counter(計數器)

狀態後綴與多實例編號

Btn_Play_State_Default // 預設 Btn_NextStage_State_Disabled // 禁用 Card_Stage_03_Wind_State_Locked // 鎖定(多實例編號 + 狀態) Card_Stage_04_BlackHole_State_Current Bdg_Challenge_State_Achieved // 挑戰達成 Bdg_Challenge_State_Failed // 挑戰失敗

6戰鬥 HUD 佈局 亞哈兔子

遊戲中常駐 HUD(亞哈視覺、兔子實裝)。實際視覺設計待亞哈 5/15~5/22 交付。

UIJSG11_Battle_HUD — wireframe 骨架(v0.7+)
136 / 過 96
3 / 10
Stage 3
暫停 II
(球道 / 球 / 瓶 — 3D 場景)
本關挑戰:不洗溝
即時失敗變灰 + X
← ← ← Bar_AimArrow(自動擺動) ← ← ←

HUD 元素清單(v0.7+,對齊 Figma frame UIJSG11_Battle_HUD)

  • 當前分數(左上 `Lbl_Score_Current`)— 絕對數字(例:136)
  • 過關門檻(左上分數旁 `Lbl_Score_Threshold`)— 「過 96」
  • 球數計數(右上 `Cnt_Ball`)— 「3 / 10」
  • Stage 標記(右上球數旁 `Lbl_StageId`)— 「Stage 3」純文字
  • 挑戰任務面板(右上 `Pnl_ChallengeTask` 常駐)— 「本關挑戰:不洗溝」+ 即時失敗變灰 + X 標記(v0.8 起改 HUD 常駐,不再用進關字卡)
  • 暫停按鈕(右上角 `Btn_Pause`)— 觸發暫停確認對話框
  • 瞄準箭頭(球道上方 `Bar_AimArrow`)— 階段 2 自動擺動,揮臂瞬間定格
  • 狀態提示文字(球道下方 `Lbl_StatusHint`)— Ready/Finish/Strike/NewStage/Gutter/Sucked 共用容器(詳 §字卡)
⚠️ 不做的項目
~~力道條 / 蓄力 UI~~(無蓄力條設計)/ ~~Spare 字卡~~(無 Spare)/ ~~「已達標」HUD 提示~~(強制 10 球)/ ~~分頁指示器~~(教學頁簡化)

7結算頁佈局 亞哈兔子

UIJSG11_Battle_ResultScreen — wireframe 骨架(v0.8)
Result
本關詳情
Strike 數量× 4
Open 數量× 6
挑戰達成Clear +10
總分136 / 96
繼續

結算頁元素清單(v0.8 簡化)

  • Header「Result」金色大字(取代 v0.7 「PASS」狀態文字 — 不論過關 / 沒過都顯示 Result)
  • 單一中央 `Pnl_ResultDetail` 圓角面板含 4 行:Strike × N / Open × N / 挑戰達成(Clear +10 或 Failed)/ 總分(N / 96)
  • 「繼續」按鈕(右下,金底紅邊 `Btn_Continue`)— 取代 v0.7「返回大廳」
  • 過 96 → 點繼續回大廳(解鎖下一關);沒過 → 點繼續回大廳(玩家自選重打或換關,v0.14 無 Try Again)
❌ 不做以下按鈕(v0.8 拍板)
~~下一關~~ / ~~重玩~~ / ~~Try Again~~ / ~~返回大廳(改為「繼續」)~~ — 過關或沒過都只有「繼續」按鈕回大廳重新選關,玩家自行決定是否重打。

8關卡選擇佈局 亞哈Jason

UIJSG11_Lobby_LevelSelect — 5 卡片橫排(v0.11)
[<] 關卡選擇
下一關解鎖分數 96
Stage 1 標準
機關 icon: —
🏆 挑戰達成
Stage 2 變陣
機關 icon: 障礙瓶
🏆 挑戰達成
Stage 3 風吹
機關 icon: 風
▶ 當前可玩
Stage 4 黑洞
機關 icon: 黑洞
🔒 鎖定
Stage 5 地雷
機關 icon: 地雷
🔒 鎖定
確認

3 種卡片狀態

已挑戰達成

  • 右下角金星徽章 `Bdg_Card_ChallengeAchieved`
  • 顯示機關 icon(左上小框)
  • 可重玩拿挑戰加分

當前可玩

  • 黃色背景 + 橘色邊框視覺強調
  • 顯示機關 icon
  • 頂部「下一關解鎖分數 96 分」標籤常駐(v0.11 新增 → 取代舊版卡片內提示)

鎖定

  • 灰階 + 鎖頭 icon `Ico_Card_Lock`
  • 無法點擊
  • 需先過前一關 96 分

⚙️ 開發規格

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

1程式重做範圍兔子/Jason

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

🚨 範圍說明
冰壺 JSG09 前端僅作玩法靈感參考、不沿用任何 code 或規則 module。連遊戲規則邏輯(計分判定 / 機關互動 / 闖關解鎖 / 挑戰追蹤)都重新撰寫

時程風險:兔子 / Jason 工時翻倍以上,一次 CP 驗收可能撐不住,建議延 1~2 個月或拆 CP(待 CP0 時程評估)。

保留 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鏡頭流程兔子

JSG11_CameraManager 全部重寫(不沿用冰壺 CameraManager)。鏡頭切換邏輯可參考冰壺 TraceCameraChangeOverHeadCamera 設計思路,但目標相機改為新增的 _pinAreaCamera,並移除冰壺結算頂視角流程。

球出手到下一球的鏡頭切換
OnPush 觸發
球出手
_traceCamera
追球視角(自寫)
過截止線?
_pinAreaCamera
瓶區近景(新增)
倒瓶過程
跟瓶陣中心微擺動
拉回投擲視角
準備下一球
📐 截止線位置
球道 z 軸距離,由兔子在 Unity 場景配。預設約在球道 60~70% 處(讓玩家有時間看完曲球軌跡 + 進入近瓶聚焦)。
⚠️ 不沿用冰壺結算頂視角
保齡球單關 10 球連續,不需要每球切結算頂視角。冰壺 _overHeadCamera 流程整段移除。

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計入過關門檻
⚠️ 重要判定細節
  • Strike 判定只看正規瓶:障礙瓶 / 地雷彈飛瓶倒下不影響邏輯
  • Stage 5 地雷彈飛瓶算倒下:仍可 Strike,但挑戰失敗(限制違規 → 失去 +10)
  • 無 Spare
  • 無連擊獎勵(連續 Strike 各自 +5,不額外加碼)
  • 強制 10 球(提前達標也要打完)
全關計分流程(10 球 + 挑戰加分)
第 10 球結束
所有球停止
累加 10 球分數
Open + Strike
挑戰達成?
+10 加分
binary
≥ 96?
PASS
解鎖下一關
📐 滿分 / 門檻計算
基礎滿分 = 10 球 × (正規瓶 + 5) = 150 · 含挑戰滿分 = 160 · 門檻 = 160 × 60% = 96

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
LevelVideoAmount: int

📊 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 內調)

📋 完整功能表

170 項 BW-001 ~ BW-170 · 11 模組 · 同步 Google Sheet
同步目標 1STspfoH-...QXY-kSU
Tab JSG11-保齡球
狀態圖示 ⬜ 未開始 / 🟡 開發中 / 🟢 已完成 / 🔵 測試中 / ✅ 驗收通過 / ❌ 阻塞
170
總項目
11
模組
170
⬜ 未開始
0
🟡 開發中
0
✅ 驗收通過
📌 拆行原則
每項只記 1 個原子功能。狀態欄由 RD / QC 填,TM 同步至 Google Sheet。
1. 投擲系統(24 項)— Andros 動作演算法 + 兔子 功能製作
#模組功能負責備註
BW-001投擲基礎階段 1 — 手腕 Roll 偵測 → 球道 X 站位映射Andros演算法沿用 Andros DetectRotate + OnRotate;站位 UI 自寫
BW-002投擲基礎階段 1→2 — 手放下確認(OnConfirm 鎖定站位)Andros演算法沿用 OnConfirm(Pitch<0 + Gyro.z<-50000)
BW-003投擲基礎階段 2 — 瞄準箭頭自動擺動(DOTween)兔子取代冰壺 SetObjectRotation 設計
BW-004投擲基礎階段 2 — 揮臂力道計算Andros演算法沿用 Andros PushCurling
BW-005投擲基礎階段 2 — 推出瞬間擷取箭頭角度為球初始 forward 向量兔子OnPush 觸發時鎖定 AimingArrow 當下角度
BW-006投擲基礎重選 — 手往上抬觸發 OnReadjust 回到階段 1(可選)Andros依 UX 決定是否開放
BW-007旋轉球路手環角加速度讀取Androsinput source 已確認 5/11
BW-008旋轉球路接收手環旋轉輸入Andros白話:手腕扭動偵測
BW-009旋轉球路手腕轉動量 → 球旋轉量(對應曲線)Andros線性 / 分段待 Andros 收斂
BW-010旋轉球路手腕未扭 → 球走直線(不靈敏區)AndrosQC 必測
BW-011旋轉球路球旋轉速度上限(避免暴衝)Andros
BW-012投擲功能球瓶倒下判定 — 角度閾值兔子
BW-013投擲功能球瓶倒下判定 — 旋轉速度閾值兔子
BW-014投擲功能球旋轉控制元件實裝兔子5/18 接 Andros v1
BW-015投擲功能球的直線基礎軌跡兔子
BW-016投擲功能球速強制覆寫(防止橫向位移殘留)兔子
BW-017投擲功能球的旋轉量影響球路彎曲程度兔子
BW-018投擲功能球出手特效 trigger兔子對接綠豆 VFX
BW-019投擲功能強制 10 球流程兔子提前達標也要打完
BW-020投擲功能球的回吐機制(重置板上下移動)兔子不抓球,內部重置
BW-021鏡頭球出手 → 追球視角(traceCamera 跟球前進)兔子JSG11_CameraManager 自寫(參考冰壺 TraceCameraMove 思路)
BW-022鏡頭過截止線 → 切換到瓶區近景(PinAreaCamera)兔子新增
BW-023鏡頭瓶區近景倒瓶過程聚焦兔子鏡頭跟瓶陣中心微擺動
BW-024鏡頭倒瓶結束 → 拉回投擲視角兔子取代冰壺 OverHeadCamera 結算流程
2. 計分系統(14 項)— Jason
#模組功能備註
BW-025基礎計分Open 計分(倒幾瓶 = 幾分)
BW-026基礎計分Strike 計分(15 分 = 10 + 5)
BW-027基礎計分Strike 判定 — 僅以正規瓶為準
BW-028基礎計分Strike 判定 — 排除障礙瓶Stage 2 障礙瓶倒下不影響
BW-029基礎計分Strike 判定 — 排除地雷彈飛瓶Stage 5 仍算 Strike 但挑戰失敗
BW-030基礎計分UI 顯示絕對分數(不顯示百分比)
BW-031挑戰任務Stage 1 — 至少 3 次 Strike(結算統計)
BW-032挑戰任務Stage 2 — 不擊倒障礙瓶(即時失敗)
BW-033挑戰任務Stage 3 — 不洗溝(即時失敗)
BW-034挑戰任務Stage 4 — 不要碰到黑洞(即時失敗)
BW-035挑戰任務Stage 5 — 不要碰到地雷(即時失敗)
BW-036挑戰任務ChallengeTracker — 即時失敗 API
BW-037挑戰任務ChallengeTracker — 結算判定 API
BW-038失敗處理限制違規 → 改加分制(失去 +10)
3. 5 關設計(13 項)— Jason + 兔子
#模組功能負責
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闖關系統關卡解鎖機制(過 96 → 下一關開放)兔子
4. 三機關(1 項,RD 待討論)
#功能備註
BW-052三機關(風場 / 黑洞 / 地雷)詳細規格與實作 — RD 待討論原 22 條細項整併,CP0 後再展開
5. UI - Lobby(20 項)— 亞哈視覺 + Jason 程式
#模組功能
BW-053主選單點擊開始按鈕
BW-054主選單教學按鈕
BW-055主選單紀錄按鈕(原排行,v0.11 改名)
BW-056主選單主視覺背景(環型 / 弧型)
BW-057模式選擇單人模式按鈕
BW-058模式選擇教學關卡按鈕 + 首次強制 / 解鎖邏輯
BW-059關卡選擇5 卡片橫排佈局
BW-060關卡選擇卡片狀態 — 已過關
BW-061關卡選擇卡片狀態 — 當前可玩
BW-062關卡選擇卡片狀態 — 鎖定
BW-063關卡選擇卡片內容 — 機關 icon
BW-064關卡選擇卡片內容 — 歷史最高分
BW-065關卡選擇卡片內容 — 挑戰達成標記
BW-066關卡選擇卡片內容 — 解鎖門檻分數提示
BW-067關卡選擇「開始」按鈕
BW-068教學頁動作教學頁 1 — 兩階段投擲
BW-069教學頁動作教學頁 2 — 手腕扭動控制曲球
BW-070教學頁上一頁按鈕
BW-071教學頁下一頁按鈕
BW-072紀錄頁 (Record)紀錄結構(CP0 待決:各關獨立 vs 統一)+ 1P/2P tab(v0.11;2P 內容 RD v1.x)+ 我的最高分
6. UI - 戰鬥(25 項)— 亞哈視覺 + 兔子 程式
#模組功能
BW-073進場Stage 編號 + 名稱字卡
BW-074進場機關介紹字卡(Stage 3/4/5)
BW-075進場挑戰任務字卡
BW-076進場Ready 倒數
BW-077HUD當前分數(左上)
BW-078HUD過關門檻顯示
BW-079HUD球數計數(右上)
BW-080HUDStage 標記
BW-081挑戰面板面板視覺
BW-082挑戰面板即時失敗 → 變灰 + X 標記
BW-083投擲 UI瞄準箭頭自走擺動視覺
BW-084單球字卡Open 字卡
BW-085單球字卡Strike 字卡
BW-086暫停確認確認對話框視覺
BW-087暫停確認取消 / 繼續遊戲
BW-088暫停確認確定 / 回大廳(當局放棄)
BW-089結算頁PASS 狀態顯示
BW-090結算頁該關總分
BW-091結算頁門檻達成狀況(未過顯示「未達 96 分」)
BW-092結算頁Strike 統計
BW-093結算頁Open 統計
BW-094結算頁挑戰達成徽章
BW-095結算頁挑戰失敗顯示
BW-096結算頁歷史最高分
BW-097結算頁「返回大廳」按鈕(唯一按鈕)
7. 美術素材(13 項)— 美術組三階段
#階段功能負責
BW-098階段 1 場景保齡球館場景 — 環型 / 弧型主視覺Jason
BW-099階段 2 球瓶球道模型Jason
BW-100階段 2 球瓶球道支援彎曲軌跡渲染Jason
BW-101階段 2 球瓶正規球瓶模型Jason
BW-102階段 2 球瓶一般球模型兔子
BW-103階段 2 球瓶球體旋轉視覺 — 連續映射尾跡兔子
BW-104階段 2 球瓶球體旋轉視覺 — 旋轉貼圖兔子
BW-105階段 3 障礙物障礙瓶 — 模型(視覺明顯區分正規瓶)Jason
BW-106階段 3 障礙物風場視覺(風線 + 風向 + 範圍可視化)兔子
BW-107階段 3 障礙物黑洞視覺(旋渦 + 邊緣扭曲 + 半徑)Jason
BW-108階段 3 障礙物地雷視覺 — 外殼Jason
BW-109階段 3 障礙物地雷視覺 — 警示燈Jason
BW-110階段 3 障礙物地雷視覺 — 引爆 VFX 介接Jason
8. 特效 VFX(22 項)— 綠豆
#模組功能負責
BW-111通用Ready 字卡兔子 / 亞哈 / 綠豆
BW-112通用Finish 字卡兔子 / 亞哈 / 綠豆
BW-113通用New Stage 進場字卡兔子 / 亞哈 / 綠豆
BW-114通用投擲方向箭頭 VFX兔子 / 綠豆
BW-115球與球路球旋轉視覺 VFX(連續變化尾跡)兔子 / 綠豆
BW-116球與球路球路軌跡光帶(依旋轉量彎曲)兔子 / 綠豆
BW-117結算字卡Strike VFX — 彩帶兔子 / 綠豆
BW-118結算字卡Strike VFX — 閃光兔子 / 綠豆
BW-119結算字卡Strike VFX — 字卡兔子 / 亞哈 / 綠豆
BW-120結算字卡Open VFX — 字卡 + 分數彈出兔子 / 亞哈 / 綠豆
BW-121機關障礙瓶倒下警示 VFX — 紅色閃光Jason / 綠豆
BW-122機關風場 VFX兔子 / 綠豆
BW-123機關球被吹偏軌跡修正視覺兔子 / 綠豆
BW-124機關洗溝 VFX — 「Gutter!」字卡兔子 / 亞哈 / 綠豆
BW-125機關洗溝 VFX — 警示閃光Jason / 綠豆
BW-126機關黑洞 VFX — 旋渦動畫Jason / 綠豆
BW-127機關黑洞 VFX — 球被吸入扭曲Jason / 綠豆
BW-128機關黑洞 VFX — 「Sucked!」字卡兔子 / 亞哈 / 綠豆
BW-129機關地雷 VFX — 警示燈閃爍Jason / 綠豆
BW-130機關地雷 VFX — 引爆爆炸光圈Jason / 綠豆
BW-131機關地雷 VFX — 瓶子被彈飛尾跡Jason / 綠豆
BW-132結算挑戰達成 +10 VFX(金色徽章 + 字卡)兔子 / 亞哈 / 綠豆
9. 音效 SFX(16 項)— 鏡
#模組功能備註
BW-133通用Ready 提示音
BW-134通用Finish 提示音取代過關 PASS 音
BW-135通用New Stage 進場字卡音對應 BW-113 字卡 + 解鎖回饋音
BW-136通用球出手音
BW-137通用球滾動音
BW-138撞瓶撞瓶聲(單一音檔)大 / 小力合 1
BW-139撞瓶球瓶倒下音
BW-140StrikeStrike 音效(單一音檔)
BW-141機關倒入溝 gutter 音Stage 3 挑戰失敗
BW-142機關障礙瓶倒下警示音Stage 2
BW-143機關風場 — 風吹聲Stage 3
BW-144機關風場 — 球偏移聲
BW-145機關黑洞 — 吸力聲Stage 4
BW-146機關黑洞 — 吸入音效
BW-147機關地雷 — 引爆聲Stage 5
BW-148結算挑戰達成 +10 音(金幣 / 成就)
10. BGM(2 項)— 鏡
#功能備註
BW-149大廳 BGM
BW-150遊戲 BGM(5 關共用)
11. 整合 / QC(20 項)— 素材實裝 + Excel 表 + 中斷 + 多語系 + QC
#類別功能負責
BW-151素材實裝美術場景素材實裝Jason / 兔子
BW-152素材實裝音效素材實裝Jason / 兔子
BW-153素材實裝特效素材實裝Jason / 兔子
BW-154素材實裝UI 素材實裝Jason / 兔子
BW-155Excel 表JSG11Bowling_LevelSetting待 RD
BW-156Excel 表JSG11Bowling_PinSetting待 RD
BW-157Excel 表JSG11Bowling_MechanismSetting待 RD
BW-158中斷恢復藍牙斷線偵測(沿用 shared/bluetooth)待 RD
BW-159中斷恢復藍牙斷線 — 重投當球 vs 整關重來判定待 RD
BW-160多語系多語系 key — 5 關名稱Jason
BW-161多語系多語系 key — 挑戰任務描述Jason
BW-162多語系多語系 key — UI 文字Jason
BW-163QC 必測靜止手腕投擲走直線兔子
BW-164QC 必測5 關門檻平衡兔子 / Jason
BW-165QC 必測挑戰任務即時失敗判定Jason
BW-166QC 必測障礙瓶倒下不重置邏輯QC
BW-167QC 必測地雷彈飛 Strike 判定QC
BW-168QC 必測5 關全通關流程兔子 / Jason
BW-169QC 必測各 Stage 重玩流程兔子 / Jason
BW-170CPCP 一次驗收 @ 7/7(row 136)小曹
🔗 Google Sheet 同步
同步腳本scripts/sync-jsg11-bowling-v5.py(雙向同步:sheet 拉回 D/E/F/G/H,markdown 主導 A/B/C/I;非破壞性,可重複跑)
欄位:A 編號 / B 模組 / C 功能 / D 狀態 / E 負責 RD / F 美術負責 / G 預計階段 / H 完成日期 / I 備註
JSG11 保齡球 — 完整企劃書
製作:TM 小曹 · 受眾:美術(場景 / VFX / SFX)/ UI / 開發組
SSoT 原始碼:games/JSG11-bowling/ · 視圖由 Agent 自動編譯