Track 2: Antigravity IDE & 全端開發 🖥️🕹️

標準方案 (2,999 NTD) — 專為 10 到 13 歲兒童與家長設計,在 Antigravity IDE 中直接編寫與測試全端程式碼。

開始指南

🏛️ 三個好朋友的木偶戲比喻 (架構解析)

在編輯程式碼之前,讓我們來了解這個遊戲在底層是如何運作的。它就像三個好朋友一起合作表演一場木偶戲:

+-------------------------------------------------------------+
|                     1. 導演 (THE DIRECTOR)                   |
|                         (Angular)                           |
|  * 渲染選單、愛心(生命值)、記分板與設定面板。                   |
|  * 顯示動物拼圖遊戲的 Emoji。                                |
+------------------------------+------------------------------+
                               | (發送指令 / 事件)
                               v
+-------------------------------------------------------------+
|                    2. 操偶師 (THE PUPPETEER)                 |
|                         (Phaser)                            |
|  * 渲染街機畫面 (太空船、雷射光、方塊)。                       |
|  * 監聽鍵盤/滑鼠操作,並處理畫面震動特效。                      |
+------------------------------+------------------------------+
                               | (回報計算結果)
                               v
+-------------------------------------------------------------+
|                     3. 裁判 (THE REFEREE)                    |
|                     (Domain Logic)                          |
|  * 檢查數學規則 (接到的答案對不對?)。                         |
|  * 套用物理步進,並檢查動態難度 (DDA) 參數。                   |
+-------------------------------------------------------------+

🧠 案例研究:動態難度調整 (DDA)

遊戲的難度不是隨機的。它會即時監控你的遊玩狀態。讓我們看看實際寫在 packages/shared/src/domain/dda.ts 的 DDA 程式碼邏輯:

心率與測速器比喻:

  1. 滾動視窗 (Rolling Memory):
    遊戲會儲存你最後 10 次的作答紀錄,藉此計算你的精準率 (Accuracy Rate)
    精準率 = (過去 10 次中答對的次數) / 10
  2. 疲勞偵測 (Fatigue Detection):
    遊戲會觀察你最後 4 次的作答。如果你答錯,或者你的平均反應時間慢於 3.5 秒 (slowReactionThresholdMs),裁判就會標記你「已疲勞」(fatigueDetected = true)。
  3. 調整速度:
    • 如果你被標記為已疲勞,或你的精準率低於 75%,遊戲會變慢:
      新等級 = 目前難度等級 - 1
    • 如果你表現極佳 (精準率高於 80%) 且沒有疲勞,遊戲會變快:
      新等級 = 目前難度等級 + 1
  4. 對遊戲的影響:
    難度等級會直接影響三件事:
    • speedMultiplier:方塊掉落的速度。
    • decoyCount:正確方塊旁邊會伴隨掉落多少個錯誤方塊。
    • academicTier:產生的問題的複雜度。

🔄 IDE 工作流程步驟

  1. 開啟 Antigravity IDE:在工作區中開啟專案資料夾。
  2. 聊天室語音提示:開啟 Antigravity Chat 面板,並點擊麥克風。
  3. 使用 "/grill-me" 開發前對齊協議:
    對 Agent 說:
    "我想要自訂 Phaser 遊戲裡的玩家太空船,讓它看起來像一隻綠色的恐龍。但在你修改任何檔案之前,請先問我 3 個問題 (grill me),讓我們在設計上達成共識。"
  4. 讓 Agent 運作:對齊完畢後,點擊 Approve (核准) 接受 Agent 提議的計畫。看著 Agent 自動修改檔案 (例如 play-scene.ts)。
  5. 執行遊戲:開啟整合終端機,執行 pnpm dev。在預覽視窗中遊玩遊戲!

📝 家庭作業與練習

家庭作業 1:調整疲勞敏感度

開啟 dda.ts。請 Agent 將 slowReactionThresholdMs3500 (3.5秒) 修改為 2000 (2秒)。

目標:遊玩測試遊戲。如果你只猶豫了 2 秒鐘會發生什麼事?遊戲是不是降速得更快了?向父母解釋你的發現。

家庭作業 2:連線記分板樣式

在 IDE 中請 Agent 修改 Angular 的儀表板記分板樣式(位於 game-host.css)。將背景改為半透明黑色,並帶有霓虹發光效果(毛玻璃 Glassmorphism 風格)。

驗證:在 IDE 中執行 pnpm build,確保沒有觸發 CSS 容量預算警告或編譯錯誤。