深夜的動畫師書桌上,畫作不肯安分:一位戴著紅手套的落魄拳手,在畫在紙上的擂台中,與一位重量級壯漢拳手對峙。讀懂他的預備動作——從高鉤拳後仰、蹲下躲過腹部撞擊——並在破綻中反擊。三次乾淨的反擊便能將他擊倒;三次擊倒,橡皮擦便會終結這場爭論。每次擊中都會濺出墨水,桌燈是真實的動態光源,灑落在紙頁上,整組角色皆由 Blender 的 Line Art 修改器繪製——程序化墨線,無需手繪。
←/A 側閃・↓/S 蹲下・空白鍵/E 出拳・P 暫停・M 減少動態・行動裝置提供觸控按鈕・點一下開啟音效・遊戲資料 4.7 MB(另加引擎 wasm,首次載入後快取)
由 AI 製作,並由真實 Godot 4 引擎匯出——同時也是實驗室的 Grease Pencil Line-Art 實驗。這場對決先有概念設計;每一輪審核都是拿實際運作版本與原畫進行比對。

夜晚一張動畫師的木製繪圖桌:奶油色紙張上以墨水繪製的拳擊場,兩位活潑的 1930 年代橡皮管風格卡通拳手在畫出的擂台中對打,周圍是鉛筆素描的觀眾,一盞黃銅桌燈在紙上灑落溫暖光池,復古賽璐珞動畫風格,線條大膽俐落。

兩位拳手皆為 3D 橡皮管模型,其墨水描邊由 Blender 的 Line Art 修改器程序化生成——輪廓、折痕與材質邊界線條在每一幀重新運算,完全沒有手繪。他們的出拳皆來自真實動作捕捉:從 CMU 片段 14_01(47 秒的拳擊動作)中擷取的片段重新定位至模型上,並輔以手動關鍵幀的卡通誇張化,用於踉蹌、擊倒與最終融化成一灘墨水的動畫。
每一幀都渲染兩次——平面賽璐珞填色加上同一幾何體的相機空間法線貼圖——因此卡通精靈圖仍能對桌燈作出反應,這是一盞真正的 PointLight2D,拳手會以真實遮蔽器投射陰影於其光池之中。
預備動作以形狀與顏色雙重編碼(無障礙原則:絕不單靠顏色區分),完整的打擊感清單皆已實作(60 毫秒擊中停格、衰減式震動、墨水濺射粒子、半色調閃光、緩動的回合卡片),遙測資料串流至主控台以供審核的死鎖偵測使用,且所有文字皆存放於本地化表中。氛圍音效與音效樣本皆取自平台音效庫。
實驗室在此主機的軟體渲染器上(無 GPU)以 Playwright 進行審核,因此下方的幀率數據為最差情況——實際硬體以相容渲染器運作會快上許多。需牢記的一個數字:線稿在此主機的 CPU 上每幀渲染成本約為 2–4 秒。
| 量測方式 | 值 | 測試條件 |
|---|---|---|
| 遊戲資料 (.pck) | 4.73 MB | 發布版匯出——圖片來源負載 5.76 MB,共 11 個取樣音效檔案 |
| 引擎負載檔 (.wasm) | 35.4 MB | Godot 4.3 網頁執行環境,固定成本,首次載入後由瀏覽器快取 |
| 已驗證完整賽事 | 在約 3580 遊戲單位處獲勝,共 3 次擊倒 | 訊號驅動的自動運行,於確認回合中表現一致(3580/3570/3580) |
| 線稿渲染成本 | 約 2–4 秒/幀 | Line Art 修改器 + 賽璐珞 + 法線貼圖版本,於此主機以 CPU 版 Eevee 運算——此技術的真實成本 |
| 審核回合 | 初版 2 · 美術 5 | 第一輪審核發現輪詢式自動運行陷入 1 fps 的活鎖狀態——已替換為訊號驅動版本 |
| 審核影格率 | 約 1–2 fps | SwiftShader 軟體 GL——最差情況;透過物理步驟追趕,遊戲時間仍保持真實 |
本實驗的展示重點:程序化墨水精靈圖搭配幾何真實的法線貼圖版本,由桌燈 PointLight2D 即時上色。
每位拳手皆帶有 LightOccluder2D,隨移動在手繪擂台上拖曳出柔和陰影。
從 CMU 14_01 中以數值方式擷取的出拳窗口——待機、一二連擊、撲擊、鉤拳——重新定位至橡皮管模型上。
GPUParticles2D 在每次擊中時濺出墨水;半色調閃光與白色彈出標記代表乾淨的反擊。
三種攻擊各有獨特的形狀、顏色與位置預備動作,隨三個回合逐漸收緊;反擊會開啟限時窗口。
Camera2D 隨著戰鬥起伏呼吸,受到衝擊時會震動並逐漸衰減,並在橡皮擦收尾時推近鏡頭。