Waystone

在暮色山口,你堆疊一座足以標示路徑的高聳堆石標。整個堆疊沒有一絲造假:每塊石頭都是 Blender 雕刻的網格,其自身的凸包就是碰撞體,堆石標的站立或倒塌完全取決於接觸摩擦力、質量與慣性。每堆到第三塊,風就會起——寬而扁的石板能輕鬆抵擋,但高瘦的石柱就不行。

立即遊玩

方向鍵 / WASD 在堆石標上滑動石頭 · Q / E 旋轉 · SPACE 放下 · P 暫停 · M 減少動態效果。八塊石頭站穩即勝利;失去三塊、光線熄滅即失敗。

▶ 開始遊玩

概念即契約

此作品建構當天,平台的概念圖服務額度已用盡,因此概念素材包改由實驗室親自製作:作品所承諾的每個輪廓皆先製成黏土模型並渲染,早於任何最終美術成品之前完成,並附上含十六進位色碼的調色盤,以及美術階段必須遵守的材質與光照規則。這仍是一份契約——完成後的石頭正是逐輪廓地依此稽核。

路標石概念畫板
手繪概念畫板:黏土模型、調色盤十六進位色碼、材質與光照規則
路標石在引擎中即時運作
同一座堆石標在引擎中即時呈現,套用真實花崗岩材質與真實陰影貼圖

上美術前的灰色方塊

整個遊戲迴圈最初以基本圖形進行測試:吊具、放下動作、穩定判定測試、風力、遺失石頭規則、重新開始機制。第二輪測試抓出了一個截圖無法發現的真實錯誤——陣風在 placed % 3 測試中觸發,而由於陣風不會放置石頭,回合迴圈便無限重複觸發同一次陣風。這一輪也顯示出吊具懸停位置超出畫面頂端、且攝影機位置過低。這三個問題都在任何石頭建模之前就已修正。

雛型基本圖形
雛型:底座與石頭以方塊和圓柱表示——物理效果已是最終真實物理
同一座堆石標套上美術後的樣貌
同一座堆石標套上 Blender 花崗岩材質後的樣貌

雕刻、鑿刻、烘焙

每塊路標石都由重疊的基本圖形融合而成,經體素重建網格,再疊加兩層雜訊置換,並經平面簡化處理,使表面呈現鑿刻般的稜面,而非融合成一團模糊塊狀。這個高面數雕刻模型會被烘焙為低面數外殼——含法線、環境光遮蔽與基礎色——而地衣則由依表面法線閘控的雜訊遮罩驅動,因此鼠尾草綠與鏽色只會長在朝上的面,絕不會出現在石頭承重的接觸面上。

路標石旋轉展示,每個各四個角度
六塊路標石,每個四個角度,直接取自烘焙成果

碰撞體即是石頭本身

使用方塊碰撞體搭配精雕石頭是一種缺陷類型,而非捷徑:如此一來,堆疊將依賴玩家看不見的幾何形狀來保持平衡。此處每顆石頭的 ConvexPolygonShape3D 皆於載入時由其自身的烘焙網格生成,而遊戲引擎的堆疊運算——高度讀取、吊具的懸停點、重心傾斜度——全都使用 實測數據 由 Blender 建模流程輸出的半邊長數值,而非直接寫入遊戲中的數字。

一座傾斜的堆石標
第六塊石頭放上後傾斜——鉛垂儀讀出的正是接觸點的實際狀態
強風陣風
強風陣風:對每塊石頭施加真實衝量,依質量與所處高度縮放

一款講風的遊戲,卻沒有一絲風聲音效

此作品建構當天,平台禁止使用循環播放的環境噪音底層音軌——對一款以天氣為主要對抗要素的遊戲來說,這是個相當棘手的規定。因此這裡的風聲從不使用錄音:每次陣風都是作曲而成——顫音弦樂漸強後收束於定音鼓與法國號的重擊——並以視覺方式呈現:草地與碎屑被吹向一側,HUD 上顯示風向箭頭。暮色氛圍則是低音提琴與中提琴的緩慢持續音下疊加豎琴音型。其餘每個音效都是玩家親自觸發的事件。

誠實的實測數據

使用 Playwright 在本主機的軟體渲染器上稽核——沒有 GPU,且測試當下該機器同時在跑另外四個實驗室的 Blender 作業。以下影格率數字為最低值。

量測方式
匯出負載(pck)6.41 MB
引擎執行環境(wasm,固定)33.7 MB
負載中的原創美術素材11.48 MB
音訊音軌檔0.45 MB
雛型測試回合6 次——第二回合遇到一陣永久重複觸發的強風;第五回合在 50 分鐘內完整跑完 104 個夜晚,且每次都在第五塊石頭時倒塌
美術稽核回合9 次——第八回合乾淨過關,第九回合為確認測試
已雕刻並烘焙完成的路標石6個,每個高模對應一個低模外殼(201-443 三角面)
碰撞體來源每個石堆外殼皆於載入時,由其自身的烘焙網格生成
自動測試流程8/8 石頭達標,遺失 2 顆,1.44 公尺,於 t=408 秒獲勝
審核中的遊戲時間與真實時鐘對比~85% - 此部分從未受限於渲染效能
使用的動作捕捉片段無 - 此作品沒有角色(P5 不適用)

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

RigidBody3D 堆疊

六種石頭,具有真實質量、摩擦力 0.92 及連續碰撞偵測。石堆是靠接觸力維持穩定,而非透過腳本。

由美術資產生成的凸包外殼

每個碰撞體皆於載入時由石頭自身的烘焙網格生成——你看到的形狀,就是決定平衡的形狀。

即時陰影貼圖

一盞來自西方的冷色調 DirectionalLight3D,將石堆的陰影投射於岩石上:陰影正是你判讀傾斜角度的依據。

以物理系統作為對抗機制

陣風是對每顆石頭施加的質量縮放衝量加上扭矩,並依高度加權——你最引以為傲的高聳石柱,正是最先倒下的那個。

三角網格場景佈景

石架與底座以各自的 Blender 網格進行碰撞,因此滑落的石頭會落在它所依附的岩石上。

GPUParticles3D

每次落地都會揚起塵土,乾草與碎屑隨陣風橫向飄散。

調校後的參數常數

吊具懸停於堆疊上方 0.52 公尺處 重力縮放 0.55 ——「放下」而非「丟下」 摩擦力 0.98,彈跳 0,角阻尼 0.75 瞄準偏移中心限制在 0.46 公尺內 偏移超過 1.42 公尺或低於底座頂部即判定遺失 穩定判定:線速度 0.13 公尺/秒與角速度 0.42 弧度/秒,維持 0.38 秒 穩定判定逾時 5 秒——抖動不會卡住回合 每第 3 顆石頭觸發陣風,1.2 秒預告 陣風衝量 = 質量 × 0.62 × 高度係數 傾斜度 = 重心偏移 / 0.55 公尺 8 顆石頭獲勝,遺失 3 顆判定失敗 陰影最大距離 16 公尺,偏移值 0.04 主光源 0.85 + 環境光 0.38——超過此比例約 1.4 倍,花崗岩會呈現粉筆般的泛白 每幀最大物理步數 30