憤怒豬 Angry Pig

第一人稱 3D 投擲破壞遊戲:瞄準、蓄力、丟球砸垮木箱磚牆堡壘、把動物撞落地——像站進彈弓裡玩憤怒鳥。

6.5/10
加權總分
技術深度
7
遊戲設計
8
後端與安全
6.5
程式品質
6.5
測試
1
完成度
8
原創性
6
逐面向拆解

七大面向

memory技術深度 7/10

紮實的物理整合:SAPBroadphase、body sleep、四組 ContactMaterial、正確的固定步進 accumulator 迴圈(1/60、最多 5 子步)。最亮眼是 measureAnimatedBounds()——因為 Box3.setFromObject 抓不到骨骼變形,沿 idle 動畫採樣 6 個時刻、逐頂點套骨骼變換取包圍盒聯集(高面數模型還做 stride 抽樣)。這是許多 three.js 老手都會踩的坑,被正確解掉。動態物無 InstancedMesh、無 LOD。

stadia_controller遊戲設計 8/10

爽感工程是系列最佳:隨連擊加長的 hit-stop(封頂 0.11 秒)、每連擊升半音的 combo 音階、飛行中即時計數器+彗星拖尾+里程碑爆字、空中狙擊賞金(需離地 2.5m 且每隻限一次防 farm)。經濟刻意把金幣與分數脫鉤「避免通膨」;15 個手工關卡用爆裂物地基教連鎖倒塌。弱點:第一人稱固定站位限制縱深,後期特殊彈性價比失衡。

security後端與安全 6.5/10

用心的成本工程——參數化查詢、雙層 XSS 防禦、IP 限流、邊緣快取(30–300 秒)、_headers 完整 CSP,以及線上人數從「每分頁每天 ~1900 請求」的心跳制演進到進場制+13% 機率性維護,每步 commit 都附量化數據。然後是失誤:README 直接把 ADMIN_KEY 0501 明碼寫進部署指令、留言 DELETE 無限流(4 位數密碼可暴力破解)、分數可偽造(報 wave=60 可灌 1800 萬分)、name 即身分可冒名霸榜。

code程式品質 6.5/10

註解品質極高(幾乎每區塊解釋「為什麼」,例如排行榜 key 為何避用 emoji 變體選擇字),關卡建造 DSLstacktowerplankTower 組合子)讓 15 關各只需幾行定義。但 fps.js 是 2,612 行單檔,渲染、物理、UI、網路、關卡、商店全混一起——且放棄 TypeScript 的代價明顯:game 物件 20+ 個動態欄位、entity 靠 e.boss 之類隨貼標籤區分。

experiment測試 1/10

全零:無測試檔、無 test script、無 CI,且不同於 TS 兄弟作——連型別檢查這道替代防線都沒有。高回歸風險的物理參數與計分公式全靠手動驗證。

verified完成度 8/10

九天做到驚人交付量:4 種模式、15 關、8 種特殊彈、Boss、4 種 biome、手機觸控含 iOS 準星修正、設定選單、開場運鏡、一次性新手教學、離線 fallback、含部署步驟的詳盡 README、介紹頁、截圖與 YouTube 影片。

emoji_objects原創性 6/10

公開致敬憤怒鳥——但視角轉換是實質玩法變化:2D 側視拋物線變成第一人稱蓄力+拋物線預測點,瞄準體驗完全不同。再加「飛最高」獨立排行榜、空中狙擊二段擊、召喚豬/黑洞/龍捲等物理玩具特殊彈:衍生題材、原創執行。

trending_up亮點

  • 蒙皮動畫包圍盒採樣——沿 idle 動畫 6 個時刻逐頂點套骨骼變換取聯集,解決動物腳浮空(fps.js:402-432
  • 免費額度驅動的後端演進——心跳→條件式 upsert→進場制,每步 commit 附量化數據(~1900 req/天 → 每場 1-2 req)
  • 關卡建造 DSL——tower()plankTower() 組合子讓「摩天要塞」只需 8 行,同套 helper 直接複用到死鬥程序生成(fps.js:1289-1329
  • 打擊感堆疊——hit-stop+combo 音階+里程碑爆字+畫面震動,全手寫且互相配合
  • 雙層降級策略——每個 API 呼叫都有 localStorage fallback,完全沒有後端也能完整遊玩(fps.js:1770-1792

trending_down弱點

  • ADMIN_KEY 明碼寫進 READMEprintf 0501 | npx wrangler …)且留言 DELETE 無限流——4 位數密碼可暴力破解(README.md:112
  • 分數可完全偽造——自報 wave=60 可灌 1800 萬分;排名以 name 聚合可冒名(score.js
  • 2,612 行單檔無模組邊界;無 TS 使 game 物件 20+ 個動態欄位毫無防護(fps.js
  • 零測試、零 CI、零型別檢查
  • 限流競態——SELECT 與 INSERT 非原子,並發請求可同時通過(_lib.js:46-57

smart_toyAI 輔助開發跡象

47 個 commit 中 46 個由 Claude Opus 4.8 共同署名,所有訊息帶自動化工具的 @ 前綴包裝。爆量節奏(7/5 一天 11 個、7/11 一天 15 個)、量化的 commit message,且人明顯在迴圈中處理真實世界問題——Cloudflare 額度、iOS viewport、emoji 變體選擇字。

summarize統計

技術棧three.js r160 · cannon-es · JavaScript · Vite 5 · CF Pages Functions · D1
類型物理破壞投擲
開發期間2026-07-04 → 2026-07-12
實際開發天數7 天
Commit 數47
程式碼行數~3,987
作者craig7351(Book AI)

總評

系列中手感最好的一作+一顆真正的物理工程寶石,卻配上系列最差的安全故事:無測試、無型別、管理密鑰直接印在說明書裡。