Windfall

今年最後幾顆蘋果躺在結霜的露台上,霜鐘正在倒數計時。輕推一顆,它便沿直線滾動,直到被一塊放置好的木板轉向、被石頭或你的靴子擋下,或是被推車接住——這是一款完全由 AI 智慧代理端到端於真實 Defold 引擎中製作的回合制路線解謎遊戲,在手機連線下數秒內即可開始遊玩。

立即遊玩

方向鍵 / WASD / 點擊行走 · SPACE 輕推 · F 放置木板 · Z 復原 · 網路傳輸 2.12 MB · 數秒內即可開始

▶ 開始遊玩

合約,與露台

本週期開始時,圖像概念產生器已無額度可用,因此這件作品的合約是「書面」而非繪製而成——而書面合約是比繪畫更嚴謹的色彩規範:以下每種顏色皆以精確的十六進位碼確立,最終審查會依此清單抽樣比對出貨畫面。左側的合約板亦於同一階段製作完成:調色盤色票、果園工人的比例規則、9×7 的格數預算,以及每個道具在畫面上的像素尺寸。

Windfall 美術指導合約板
書面合約的視覺部分——調色盤、比例、格數預算、道具尺寸
Windfall 引擎內即時畫面
同一座露台,在引擎中即時呈現

灰盒原型,與一個證明謎題可解的求解器

整款遊戲在任何美術素材完成之前,就已能以灰盒形式運作。回合規則存在兩份:一份以 Python 撰寫,用於構建六個露台、驗證每個已建立的解法,並以廣度優先搜尋證明最佳解步數;另一份以 Lua 撰寫,於執行階段運作。已記錄的解法會透過真實輸入路徑於遊戲內重放,因此兩套實作間若有任何偏差,將導致建置失敗而非直接出貨。另一個獨立的機器人會從即時狀態鏡像中重新推導出獲勝路線,並於鍵盤上操作——在每一輪審查中,皆能破解全部六個露台。

Windfall 灰盒原型
區塊示意圖:整個謎題以灰色方塊呈現
證明每個露台皆可解的求解器輸出
離線求解器:每層階地皆經驗證,標準解法以 BFS 證明

Blender 流程,渲染為精靈圖

果園工人是以 Blender 建模的角色,其行走動作來自重新對應的 CMU 動作捕捉資料,由一台高處正射攝影機依角色朝向逐幀渲染成精靈圖列。他的表情會演戲:眼睛、眉毛與嘴巴是頭部樞紐下各自獨立的部件,搭配隨機眨眼與三種可依玩家已見狀態切換的表情。蘋果、木板、推車、樹木、荊棘、石塊、鈴鐺與地面磚塊全都是打包進單一 Defold 圖集的 Blender 渲染成果。

果園工人精靈動畫序列
已上線的精靈圖列:三個朝向的動作捕捉行走動畫、待機、眨眼、按壓植物動作

即刻載入特徵

這座實驗室的存在意義,是證明在手機使用者失去耐心之前,一款真實引擎製作的遊戲就能開始遊玩。每個封裝檔皆預先壓縮,並於瀏覽器中解壓,因此任何靜態主機都能以最佳方式提供服務。以下為 Playwright CDP 網路節流測得的首次可玩時間:

連線設定檔傳輸量 / 延遲首次可玩畫面
Wi-Fi / 4G10 Mbps · 60 ms2.6–2.7 s
快速 3G(HSPA+ 等級)6 Mbps · 150 ms4.2–4.3 s
Chrome 開發者工具「快速 3G」預設值1.44 Mbps · 562 ms15.4 s

此處的不足之處:本實驗室要求自身在該快速 3G 條件下,於 4 秒內達到首個可玩畫面,而上方測得結果約超出 0.3 秒。此封裝檔已是本實驗室送出過最小的版本;剩下的瓶頸在於 Defold 的圖集打包器,無論內容多寡,其頁面一律以 2048 px 寬產出,導致材質等級高於美術素材實際所需——分拆圖集的作法已嘗試兩次,結果兩次都更差。

總傳輸量為 3.83 MB 封裝檔中的 2.12 MB(gzip + RDO-basis 材質壓縮)——這是本實驗室送出過最小的封裝檔。以軟體渲染方式無節流測得:此主機的開機基準時間為 0.88–1.09 秒,因此上述每個數字中約有一秒是 SwiftShader 的啟動時間,真實 GPU 不需承擔此成本。在這些條件下,快速 3G 數值未達本實驗室自訂的 4 秒門檻,差距約 0.3 秒,並如實回報為實測結果。

真實的引擎功能,靠實測換來

精靈圖集

動作捕捉行走圖列、眨眼與表情組、每一項道具——皆以 Blender 渲染進單一經 basis 壓縮的圖集。

山坡地圖磚

單一生成式地圖磚承載全部六層階地;攝影機在各層之間滑動下移。

工廠模式

蘋果、木板與階地家具全部由關卡資料工廠式生成——沒有任何手動擺放的物件。

粒子特效

飄落的葉片隨攝影機移動;每當木板翻轉蘋果時便會噴出一陣塵霧。

GUI 場景

以實體像素呈現、解析度無關的介面——桌面到手機直向皆為同一版面配置,並附觸控方向鍵。

訊息傳遞

回合引擎掌控規則並發布事件;任何物件都不會直接介入另一物件的狀態。

步伐 0.135 秒滾動 0.072 秒/格 種植 0.22 秒按鍵重複 0.30 秒 / 0.085 秒 攝影機滑動 1.1 秒視差 0.35 / 0.6 / 1.15 復原堆疊 64 層方向鍵 + WASD + 點擊行走 暫停支援在地化字串