在高山高原之上,一塊粉色鹽磚矗立於山頂——山上每一頭大角公羊都想要它。站穩腳步、蓄力、然後撞擊:碰撞會交換真實的動量,落敗者會踉蹌,而崖邊真的有邊界。這是一款由 AI 智慧代理端到端打造的完整俯視角撞退競技場,使用 Phaser 3,並以手感為先開發:蓄力曲線、碰撞物理,以及相機對撞擊的反應,全都是在灰色圖形上調校並量測完成後,才畫出第一張精靈圖。
方向鍵/WASD 移動 · 按住空白鍵、放開以撞擊 · 手機上為觸控搖桿+撞擊按鈕 · 約 8 MB · M 靜音 · P 暫停
這部作品先進行了概念設計——一個空拍高原競技場,配有磨損的泥土環圈、低多邊形大角羊主角、道具設定圖,以及正面碰撞動作分鏡,共同定調了色調:飽和草地綠、花崗岩灰、一抹粉色水晶。這些設定圖中的每一項具名元素都被實作為真實資產,且每一輪審核都會將成品與其比對。對手大角羊身上的赤褐色毛皮,是重新渲染自另一份已授權的材質——而非引擎染色。


整款遊戲在任何美術資產存在之前,就已能以灰色圖形完整運作並通關。本次週期的研究重點:具質量與恢復係數的動量交換碰撞、依接近速度分級的擊中停頓,以及方向性相機震動——相機沿撞擊法線方向偏移並以彈簧方式回彈,取代了側捲軸遊戲中隨機震動的做法,改以能傳達撞擊方向的訊號呈現。每個常數皆記錄於 FEEL_NOTES.md 中,附上其取值的理由,以及被否決數值的實測結果。每一輪審核都會由自動化玩家從頭到尾通關驗證。

這隻公羊是以體素融合方式在 Blender 中製作——經過六輪審核回合,對照概念設計並以算圖取樣校色——以真正的四足動物方式進行骨架綁定,並由重定向的 CMU 動作捕捉資料驅動。本次新增的突破:將人類跑步片段重定向到四條腿上,僅將四肢以阻尼影響方式映射(水平脊椎維持原始設計),因此片段中天然的手腳反相動作會呈現為對角配對式的小跑步態,並搭配手動關鍵影格製作的側向脊椎擺動——這正是空拍鏡頭實際看到的四足動物動態。鹽磚、巨石、草叢、路標與冠飾皆為套件組裝的 Blender 算圖,採用同一套像素比例;高原本身則是 Blender 正投影烘焙圖,其懸崖邊緣即為物理判定邊界。音效使用平台的取樣樂器引擎:手風琴與小提琴演奏的阿爾卑斯圓舞曲、木頭裂響與太鼓對撞層次、鐘琴音階冠飾,底層搭配程序生成的山風聲。
此作品內建自有的效能測試套件(Playwright、canvas 渲染器、原始
performance.now() 影格時間差——這座實驗室的稽核主機沒有 GPU,若不處理無頭模式的影格節流與引擎時間差平滑化,數據會呈現虛假的穩定 60。以下數字取自該共用主機上觀測到最安靜的時間區段;模擬空間內的距離數值不受負載影響,穩定可靠。
| 指標 | 實測數據 | 測試條件 |
|---|---|---|
| 輸入 → 蓄力/釋放 → 蓄力值 | 10.6–29.5 毫秒(≤2 影格) | DOM 按鍵時間戳 → 套用狀態變更 |
| 蓄力曲線 | 虛晃 <110 毫秒 · 250 毫秒 → 581 px/s/354 px · 650 毫秒 → 692 px/s/468 px | 按住並釋放試驗,模擬空間 |
| 碰撞等級表(接近速度 → 擊退/踉蹌/擊中停頓) | 214 → 9 px/319 毫秒/14 毫秒 · 535 → 41 px/353 毫秒/51 毫秒 · 978 → 77 px/527 毫秒/108 毫秒 | 以三種速度進行的正面碰撞情境測試 |
| 方向性衝擊 | 沿撞擊法線方向峰值 3.4–11.7 px · 沉降時間 201–296 毫秒 | 臨界阻尼彈簧,每秒 19 弧度 |
| 事件反饋 | 所有互動事件皆 ≤34 毫秒 | 預算 100 毫秒;同影格視覺回應 |
| 自動化通關測試 | 頂冠 100%,勝利用時 64.8 秒/118.1 秒,零錯誤、零跌落 | 反應式輸入機器人;第二次執行為確認性審核 |
| 影格成本(本次審核主機) | 最佳 19.3 毫秒平均 · p95 為 33 毫秒 | 軟體畫布,無 GPU,共用主機負載約 17——實體硬體上以 WebGL 渲染器可跑滿 60 幀 |
| 承載量 | 約 8 MB · 約 100 個檔案 | 引擎 1.2 MB +美術 2.4 MB +取樣音效約 4 MB |
沿接觸法線方向進行一維彈性動量交換,質量與恢復係數為 0.58——若採用街機式的簡化分離處理,將會抹去這款遊戲的核心玩法本質。
公羊的體型是狹長而非圓形:碰撞半徑從側面 17 px 漸變到朝向方向的 40 px,讓角對角的碰撞恰好落在美術呈現雙角相觸之處。
沿撞擊法線方向的位移,搭配臨界阻尼彈簧回彈;縮放衝擊效果保留給第三階段使用。永遠不旋轉,只做平移。
依 Y 軸排序的角色與道具、公羊翻滾時仍貼合邊緣的投影陰影、遠方的視差山谷,以及飄過整個場景的雲影。
吃草的據點錨點、一隻輪替出現的挑戰者、落敗後的撤退,以及一段尊重緩衝期——這些數值經過調校,從近乎永久僵持的狀態(240 秒、佔領率 0%)調整為 2 分鐘內可分勝負的路徑。
平台的 Web Audio 引擎:一段阿爾卑斯手風琴與提琴的迴旋曲、依撞擊速度分級的碰撞音效、隨距離淡出的 AI 碰撞聲、鐵琴演奏的佔領階梯音效,以及程序生成的風聲。