快轉到主要內容

Boss Rush Prototype — 開發計劃書

·930 字·5 分鐘
作者
Mao
GDD v0.2 2026-04-08 可玩 Prototype

Phase 0 — Project Foundation
#

驗證目標: URP 專案可編譯、Git 可推送、資料夾結構與基礎框架就位

  • 0-1 Unity 專案建立 — Unity 2022 LTS + URP template,確認 URP Renderer Asset 正確配置
  • 0-2 Git 初始化.gitignore(Unity 專用)、.gitattributes(Git LFS tracking:.fbx, .png, .wav, .asset)、首次 push 到 GitHub
  • 0-3 資料夾結構建立 — 按 GDD 9.3 建立完整目錄樹(_Project/Scripts/AnimationsPrefabsScenesConfig 等)
  • 0-4 Test Scene 建立 — 空白 Scene(DevArena):Directional Light + 簡易地面 Plane
  • 0-5 JSON Config 框架JsonConfigLoader 基礎類別 + 第一份 PlayerConfig.json,定義載入、反序列化、錯誤處理 pattern
  • 0-6 Input System 配置 — Unity New Input System,建立 InputActionAsset,定義 GDD 第 8 章全部 action mapping,支援 KB+Mouse 與 Xbox Gamepad
  • 0-7 Event System 基礎架構 — 全域事件匯流排(輕量 pub/sub),供後續系統間解耦通訊

✅ 完成狀態: 專案可編譯、可推送 Git、Input Action 可在 Editor 中驗證按鍵映射、JSON config 可載入並反序列化。

Phase 1 — Character Controller + Camera
#

驗證目標: 角色可在場景中自由移動,攝影機跟隨手感達標

  • 1-1 玩家 Prefab 搭建 — 匯入 placeholder 角色模型(Asset Store Humanoid),配置 CharacterController,調整 capsule 高度/半徑/step offset
  • 1-2 PlayerController 核心腳本 — 讀取 Input System 移動輸入,CharacterController.Move() 驅動,處理重力(isGrounded + 持續向下速度)
  • 1-3 移動方向計算 — 移動方向相對於攝影機 forward/right 投影到 XZ 平面,確保方向與視覺預期一致
  • 1-4 角色轉向 — 移動方向的平滑轉向(Quaternion.Slerp / RotateTowards),轉向速度從 JSON config 讀取
  • 1-5 Cinemachine 攝影機設定 — Body = 3rdPersonFollow,Aim = Composer,低 damping 設定(Shoulder Offset / Camera Distance)
  • 1-6 CinemachineCollider — 掛載 collider extension,處理攝影機穿透牆壁/地面
  • 1-7 Lock-on 系統 — Lock-on toggle:偵測 Boss Transform、切換 LookAt target。Lock-on 下自動 face target,移動改為 strafe 模式
  • 1-8 移動速度 ConfigPlayerConfig.json 加入 moveSpeedturnSpeedlockOnStrafeSpeed,Phase 1 先用單一速度

✅ 完成狀態: 角色可在 DevArena 中 8 方向移動,Lock-on 假目標後可 strafe,攝影機跟隨無穿透。

Phase 2 — Hierarchical State Machine
#

驗證目標: 狀態切換邏輯正確、動作取消優先級按 GDD 2.3 實現

  • 2-1 HSM 基礎框架State base class(Enter/Exit/Update/FixedUpdate)、StateMachineHierarchicalStateMachine(parent/child 層級)
  • 2-2 玩家頂層狀態定義 — Idle、Move、Attack(Light/Heavy)、Dodge、Guard、Parry、CombatArt、Stagger、Dead
  • 2-3 狀態轉換規則 — 按 GDD 2.3 動作取消優先級表:輕/重攻擊 → 可閃避取消;閃避 recovery → 不可取消;破防硬直 → 不可取消
  • 2-4 Animator 播放整合 — 每個 state 的 Enter 呼叫 Animator.CrossFade() 播放動畫。建立 AnimationHash 靜態類別統一管理 hash 映射
  • 2-5 Animation Event 回調機制 — 統一回調入口,用於 hitbox 啟用/關閉、combo window 開啟等時機通知
  • 2-6 Input Buffer 系統 — recovery 動畫期間接受的輸入暫存 N 幀,確保略早按下的指令能被執行(直接影響操作手感黏性)
  • 2-7 Debug Overlay — Editor 中顯示當前 state name + state stack,方便後續所有 Phase 除錯

✅ 完成狀態: 角色可在各狀態間切換(placeholder 動畫),狀態取消規則正確執行,Debug Overlay 可見當前狀態。

Phase 3 — Combat Core
#

驗證目標: 完整的玩家攻防動作可運作,對假 Boss(站樁不動)可進行完整攻擊循環

⚠️ 此 Phase 工作量最大,拆為 3a / 3b / 3c 三個 sub-phase 逐步推進。

Phase 3a — Combo + 閃避
#

  • 3a-1 輕攻擊 Combo Chain — 4 段 combo(L1→L2→L3→L4),每段之間 combo window(時長 from config),超時回 Idle
  • 3a-2 重攻擊 — 單段獨立攻擊 state,前搖較長,可被閃避取消
  • 3a-3 閃避化解 — 3 方向(後撤/左閃/右閃),閃避啟動後前 N 幀為 deflect window,被 Boss 攻擊命中 → 化解成功 → 發送氣力事件

Phase 3b — 防禦 + 彈刀 + 輸入解析
#

  • 3b-1 防禦系統 — 按住防禦鍵進入 Guard state;普通攻擊 → 消耗氣力擋格;紅光攻擊 → 無法擋格,直接受傷
  • 3b-2 彈刀系統 — 記錄按鍵「剛按下」時間戳,紅光攻擊命中判定窗口內 → 觸發彈刀。第一幀判定彈刀,後續幀判定為防禦
  • 3b-3 Shift/LB 多義性處理 — Context-aware 輸入解析:Shift held = Guard;Shift just pressed in parry window = Parry;Shift + Attack = Combat Art。優先級:Combat Art > Parry > Guard

Phase 3c — 武技 + 氣力系統
#

  • 3c-1 武技 A / B — 兩個獨立 state,Shift+攻擊鍵觸發,消耗 10 氣力,可被閃避取消
  • 3c-2 強化武技 — 獨立 state,雙攻擊鍵同時按觸發(容許誤差幀數 from config),消耗 50 氣力,需氣力全滿
  • 3c-3 氣力系統(Spirit Gauge)SpiritGauge 類別:上限 100、獲取(化解回氣力)、消耗(防禦受擊/武技)、歸零懲罰(破防硬直 state)。全數值 JSON 驅動
  • 3c-4 HP 系統HealthSystem 類別:受傷扣血、歸零觸發 Dead state。玩家與 Boss 共用同一 component

✅ 完成狀態: 角色可完成完整攻防流程(combo → 閃避 → 防禦 → 彈刀 → 武技),氣力獲取/消耗正常運作,對 placeholder 敵人可打出完整循環。

Phase 4 — Damage + Feedback System
#

驗證目標: 攻擊命中有打擊感,hitstop / screen shake / VFX / SFX 全部到位

  • 4-1 Hitbox / Hurtbox 系統 — Hitbox 掛載於武器骨骼(trigger collider),Animation Event 控制啟用/關閉。Hurtbox 掛載於身體。OnTriggerEnter + HashSet<int> dedup
  • 4-2 Damage PipelineDamageInfo(攻擊者、基礎傷害、招式倍率、攻擊類型 enum)→ DamageCalculator → damage event → 受擊方扣血 + 削減氣力
  • 4-3 Hitstop — 命中瞬間凍結(Time.timeScale 或 per-object animation speed),持續 N 幀,時長依攻擊類型(輕攻擊短、武技長、強化武技最長)
  • 4-4 Screen Shake — Cinemachine Impulse Source,命中時發送 impulse,震動強度/衰減曲線按攻擊類型配置
  • 4-5 擊退位移 — 受擊方 hit react 期間被推移(方向 = 攻擊者 forward,距離 from config),CharacterController.Move()
  • 4-6 受擊動畫(Hit React) — 受擊 state 播放 hit react 動畫,結束回 Idle。不同攻擊強度對應不同 react(輕 flinch / 重 stagger)
  • 4-7 Hit VFX — 命中點生成粒子特效(斬擊火花),Object Pool 管理避免 GC
  • 4-8 Hit SFX — 命中播放打擊音效,按攻擊類型區分音效資源
  • 4-9 時間縮放(Nice-to-have) — 強化武技命中短暫 slow-motion(Time.timeScale 緩慢恢復),需同步調整 Time.fixedDeltaTime

✅ 完成狀態: 攻擊命中有完整視覺/聽覺/手感回饋,打 placeholder 敵人時打擊感到位。

Phase 5 — Boss AI
#

驗證目標: Boss 可自主行動、執行 combo(含紅光攻擊),對玩家形成有效攻防壓力

  • 5-1 Boss Prefab 搭建 — 匯入人形模型,放大至 1.2x~1.5x,配置 CharacterControllerHealthSystemSpiritGauge
  • 5-2 Behavior Tree 框架 — BT 基礎節點:SelectorSequenceConditionActionDecorator(Repeat / Cooldown / RandomSelector)。或整合現有 BT library
  • 5-3 Boss 狀態定義 — Idle、Approach、Attack(combo 中)、RedGlow Attack、Stagger(氣力歸零硬直)、Recover、Dead
  • 5-4 距離感知與行為切換 — BT 根節點依據與玩家距離:近距離 → combo;中距離 → 突進 gap closer;遠距離 → 快速接近。閾值 from config
  • 5-5 Combo Pattern 資料驅動 — JSON 定義 combo pattern(例:[L, L, Red, L]),每段的 timing / hitbox / damage 各自配置。Boss 從 pattern pool 隨機選擇
  • 5-6 紅光攻擊實作 — 攻擊前 N 幀啟動紅光 VFX(材質 emission / overlay particle),DamageInfo.attackType = RedGlow,不可防禦
  • 5-7 Boss 氣力機制 — 獨立 SpiritGauge,被攻擊/武技命中時削減,歸零 → Stagger state,硬直結束後氣力重置
  • 5-8 攻擊節奏控制 — Combo 之間加入 idle/觀望時間(可配置範圍隨機),避免無間斷攻擊
  • 5-9 Boss 受擊反應 — 被攻擊命中的 hit react(super armor 可配置)、被彈刀成功時短暫硬直 state
  • 5-10 紅光位置分佈配置 — Combo pattern JSON 中標記紅光段,支援固定配置,後續可在 BT 層加入 randomizer

✅ 完成狀態: Boss 可自主接近玩家、發動 combo(含紅光),被打會受擊/削氣力/硬直,形成完整攻防互動。

Phase 6 — Arena + Game Loop
#

驗證目標: 完整可玩的 Prototype — 從戰鬥開始到勝/敗判定,封閉的遊戲循環

  • 6-1 競技場場景搭建 — 正式競技場 geometry(圓形/方形),尺寸容納 Boss 最大攻擊範圍 + 3 次閃避邊距,邊界碰撞牆(不遮擋攝影機)
  • 6-2 地面參考線 — 格線紋理或 decal,幫助判斷距離
  • 6-3 光照配置 — 主光 + 補光,確保 Boss 動作可讀性,避免強烈陰影遮擋 silhouette
  • 6-4 HUD 實作 — 玩家 HP 條(左下)、玩家氣力條(HP 下方,滿時發光)、Boss HP 條(上方中央)、Boss 氣力條、Lock-on 標記(world space UI)
  • 6-5 氣力滿視覺提示 — 氣力條滿時 glow shader / 顏色漸變 / pulse 動畫,提示可施放強化武技
  • 6-6 Game Flow Manager — 戰鬥流程 state machine:Start → Fighting → Win(Boss HP 歸零)→ Lose(玩家 HP 歸零),控制 UI 與輸入啟用/禁用
  • 6-7 勝利/失敗畫面 — 結果 UI(Win / Lose + Restart 按鈕),Restart 重載場景
  • 6-8 戰鬥開始初始化 — 重置雙方 HP / 氣力、設定初始位置、啟動 Boss AI
  • 6-9 完整流程整合測試 — 正向:場景載入 → 戰鬥 → 全套動作 → Boss 硬直 → Boss 死亡 → Win → Restart。反向:玩家死亡 → Lose → Restart
  • 6-10 數值初調 — HP 讓戰鬥持續 23 分鐘、氣力讓每 combo 可施放 12 次武技、化解窗口讓中等反應速度約 60% 成功率

✅ 完成狀態: 完整可玩的 Prototype,從開場到勝敗判定的封閉遊戲循環。

結構性風險備註
#

Phase 2 → 3 耦合最重 — HSM 設計品質直接決定 Phase 3 所有戰鬥動作的實作難度。如果 Phase 2 的 state transition 規則不夠靈活(例如沒考慮到 input buffer),Phase 3 會需要大量 hack 來繞過限制。建議 Phase 2 結束前用 Shift/LB 多義性場景做壓力測試。

Phase 3 是最大的單一 Phase — 包含 combo、閃避、防禦、彈刀、武技、氣力六大子系統。已拆為 3a / 3b / 3c 三個 sub-phase,逐步推進降低風險。

Phase 5 的 BT 框架可能是技術陷阱 — 從零實作 BT 的工作量容易低估。建議先評估現成 BT library(如 Behavior Designer),或用 decision tree + coroutine 先跑通 Prototype,完整 BT 留給正式開發。