憤怒棒球 Angry Baseball
第一人稱 3D 棒球打擊:投手是一隻豬,滑鼠準星+時機點擊揮棒,外野擺滿可破壞目標——動物觀眾塔、連環爆桶、橫越天際的 JACKPOT 金豬。
七大面向
memory技術深度 7/10
該用數學的地方是真數學:投球依球種目標點解析反解初速,同時補償重力與變化球恆定加速度,曲球下墜後仍準確進壘(game.js:229-239)。打擊不做球棒剛體碰撞,改用可調校的雙軸模型——時機軸(早揮拉打/晚揮推打)× 準星軸(壓球心下緣打高飛)——混合成衝量交給 cannon-es。每 tick 施加簡化 Magnus 力;全部貼圖為程序 canvas 生成(草皮條紋、棒球縫線、天空)。無 shader/後處理,物理難點被刻意繞開。
stadia_controller遊戲設計 7.5/10
「每球必有回饋」的 juice 哲學被徹底執行:貼合好球帶瞬間變綠的時機縮圈、依品質連續變化的 PERFECT 金屬鏗聲、combo 音階、隨距離漸強的群眾歡呼、破紀錄全螢幕大字。有意識的間歇性強化設計(第 5、9 球必出黃金球、「忍住不揮 +100」的炸彈球、4% 投手丟雞、橫越外野的 JACKPOT 金豬)——PLAN.md 明寫這是上癮機制。9 支球棒有真實手感差異。扣分:多數系統 90-100% 繼承自 angry-pig。
security後端與安全 6.5/10
五作中防禦意識最高的後端:per-mode 合理性上限(最遠榜 400m;生存榜依 note 欄位估算且 note 本身也封頂防繞過)、audit 記錄、遊戲內建唯讀管理面板——限流表 hits 欄位兼作攻擊訊號。「結算送分錯開限流」修復(兩榜撞同 IP 3 秒限流→前端把第二筆延後 3.5 秒)顯示自我除錯能力,雖然本質是用 client hack 補後端設計。家族通病依舊:'0501' 管理密碼躺在測試檔裡、name 即身分。
code程式品質 7/10
該切的地方切了:batting.js 是零依賴純函式(檔頭自述「純數學,無相依」)、fx.js 用依賴注入解循環引用、dispose 紀律完整。但 game.js 是 1,781 行大雜燴——狀態機、UI 佈線、商店、排行榜 client、管理面板、觸控搖桿全塞一檔,與 PLAN.md 自己規劃的拆分背道而馳。
experiment測試 3/10
系列唯一有測試的專案:8 個 puppeteer-core E2E 腳本,包括一個真的會打棒球的 bot——輪詢 debug 鉤子讀球的 z 座標、在正確時機點擊揮棒,能打完整場 10 球。但全部沒有斷言(console.log 目視判讀)、無 CI、Chrome 路徑寫死 Windows,且最可測的 batting.js 純函式零單元測試。是 AI 工作流的驗證腳本,不是回歸測試套件。
verified完成度 8/10
約一週的專業級交付:4 種模式、12 關挑戰、9 支球棒商店、4 個排行榜、分層留言板、管理面板、7 天尖峰折線圖、手機搖桿、設定、新手引導、開場運鏡——已部署+行銷頁+YouTube 嵌入、離線完整可玩。扣分:文件漂移——README 仍宣稱已被 commit 明確移除的慢動作追球。
emoji_objects原創性 6.5/10
全壘打大賽遊戲很多;把可破壞物理目標搬進外野的不多。獎勵忍住不揮的炸彈球、丟雞的投手、鹹魚棒的搞笑組合建立了個性。但它仍是自家宇宙的第五作、跑在前作引擎上、核心是節奏遊戲的時機判定:聰明的重組而非發明。
trending_up亮點
- 投球解析解——反解初速同時補償重力與變化球加速度,一行註解講明白數學(
game.js:229-239) - 時機+準星雙軸打擊模型——純函式、參數集中、可調校(
batting.js:45-86) - 成本工程級後端——進場制、邊緣快取、
Math.random()<0.13機會性清表(online.js、_lib.js) - 遊戲內建攻擊分析儀表板——限流 hits 兼作攻擊訊號、audit 事件分類、灌水偵測(
admin.js) - 會打棒球的測試 bot——透過 debug 鉤子讀
window.__dbgBallZ,無頭環境打完整場(test/smoke.mjs)
trending_down弱點
- 管理密碼
'0501'進了公開 repo(test/admin.mjs:23)——即使是 dev key 也暗示密碼強度習慣 - 排行榜以玩家名字為身分——冒名頂替、合併他人分數零成本(
leaderboard.js:16-26) - 測試無斷言、無 CI、不可移植——Chrome 路徑寫死 Windows;
batting.js純函式零單元測試 - game.js 1,781 行單體——與自家 PLAN.md 規劃的拆分背道而馳
- 文件漂移——README 宣稱已移除的功能;自承是死代碼的
hitStop變數仍殘留(README.md:20)
smart_toyAI 輔助開發跡象
全部 16 個 commit 由 Claude Fable 5 共同署名——作者在系列中途升級了模型(前四作是 Opus 4.8)。首 commit 一次落地約 3,600 行可玩遊戲,含後端、測試與企劃書。repo 內附自製 Claude Code skill(.claude/skills/ui-assets)教 AI 用 PIL flood-fill 切素材,遊戲並暴露專為無頭 AI 自我驗證設計的 window.__DBG 鉤子。文檔驅動開發:PLAN.md 先於程式碼,附對 angry-pig 的複用比例表。
summarize統計
| 技術棧 | three.js r160 · cannon-es · JavaScript · Vite 5 · puppeteer E2E · CF Pages Functions · D1 |
|---|---|
| 類型 | 棒球打擊 × 物理破壞 |
| 開發期間 | 2026-07-11 → 2026-07-18 |
| 實際開發天數 | 8 天 |
| Commit 數 | 16 |
| 程式碼行數 | ~4,300 |
| 作者 | craig7351(Book AI) |
總評
系列最成熟的一作:物理裡有真數學、測試首次登場(雖然沒有斷言)、後端防禦最鋒利——但單體檔案的習慣與弱密碼的簽名又一次被帶了過來。