AI 體素遊戲製作器 — 在瀏覽器中打造方塊世界
打造你自己的 AI 體素遊戲製作器
描述一個體素世界,立刻在瀏覽器中遊玩 — 放置與破壞方塊、走訪地形。無需安裝、無需匯出、無需程式碼。免費。
AI 體素遊戲製作器會把一段文字描述變成一座方塊世界,讓你能在瀏覽器分頁中漫步其中。你輸入地點 — 黃昏時的玄武岩高原、通往黑沙的兩格方塊小徑、一片淺礁 — 組合器便會將其解析為地形高度、逐層的方塊調色盤、出生點與太陽角度。同一個頁面會加以渲染、讓你遊玩,並允許你編輯。無需安裝、沒有匯出步驟、無需程式碼。
本頁會逐一說明體素流程實際做的事:組合器如何把一句話變成方塊網格、有哪些編輯操作、為何面剔除是可遊玩世界與幻燈片之間的差別、為何緊鄰硬邊方塊的平滑著色角色看起來不對勁,以及這個格式能從第一人稱沙盒延伸到多小的等角微縮模型。文中也會介紹已發布於 Neta Studio 的可遊玩世界,以及你最先會遇到的幾種失敗情況。
用一句話打造體素世界
組合器是第一個畫面,只需要一句話。你描述地點,它會回傳地形高度、依深度分配的材質組、水位、出生點與光照方向。結果是一個體素網格,而你可以直接在輸入的那個頁面上站上去。沒有佇列、沒有需要輪詢的生成任務,也沒有檔案要下載。
這句話會決定四件事:地形形狀(平坦、起伏、懸崖、開鑿的洞穴)、依深度與坡度指派的方塊、水位高低,以及一天中的時刻。其餘一切之後都能手動編輯。重新執行描述會重新擲出生成的地形;你親手放置的方塊會留在原處,除非你先將它們清除。
組合器寫入的體素網格,和筆刷工具寫入的是同一個。生成層並不會疊在被編輯的圖層之上,因此沒有合併步驟、沒有差異檢視,也沒有匯入。這就是整個產品所依賴的機制:生成與編輯是同一個結構上的兩個寫入者 — 一個以整數座標定址、並切成區塊的三維方塊編號陣列。
這句話實際上設定了什麼
地形是從一個高度函式取樣而來,帶有幾個具名參數:基準海拔、振幅、山脊銳利度與洞穴閾值。材質依深度與坡度指派,因此最上層的方塊在平地上是草,而在坡度約超過 45 度處則是石頭。正是這條坡度規則,讓懸崖不再看起來像綠色山丘。水會填滿你所設定水位以下的每個格位,而出生點會落在世界中心附近、上方留有兩格方塊淨空的第一個實心表面上。
如果你想要的是特定建築而非特定地景,請說明它的占地範圍與材質。「一座砂岩主堡,每邊 16 格方塊、高 6 格方塊、南牆上有一道門」會產出一個你能走進去的東西。「一座城堡」則會產出一個帶幾座塔的方盒,因為模型沒有理由偏好某一種配置勝過另一種。
初稿哪裡會出錯
有兩種失敗情況會不斷出現。第一種是尺度漂移:把一片大陸和一座庭院放進同一句話的描述,會給你大陸尺度的地形,以及一座你看不見的庭院。請以單一尺度描述單一地點。第二種是出生點卡在幾何體內。如果上方的表面是洞穴頂部,出生點會落在它上面,你就會掉進內部。點擊一個方塊來移動出生點,或提高洞穴閾值,讓表面保持實心。
在瀏覽器中建造與破壞地形
編輯器在同一個網格上提供四種操作:放置方塊、移除方塊、在保留相鄰方塊的情況下替換方塊,以及堆疊 — 沿著一個面拖曳,以一次操作擠出一整排方塊。筆刷是投射進網格的射線,而不是投射進渲染網格。它會以逐格步進的迴圈向前推進,直到觸及距離上限,因此無論表面如何生成,命中偵測都精確無誤,且從不取決於三角形數量。
放置會寫入命中面相鄰的格位。移除則把空氣寫入命中的格位。兩者都會經過一個復原堆疊,儲存座標與先前編號的差異,這表示一筆 200 格方塊的操作是一筆復原項目,而不是 200 筆。重做會重播相同的差異。沒有網格層級的復原,也沒有需要與網格保持同步的場景圖。
面剔除是讓這一切得以順暢運作的關鍵。一個實心的 16×16×16 區塊容納 4096 個方塊。以直覺方式繪製,那是 4096 個立方體,或 24,576 個四邊形。以逐面剔除繪製時,只會輸出與空氣相鄰的面:該區塊的外殼是 1536 個四邊形,在任何合併之前就減少為十六分之一。貪婪網格化會把同一種方塊類型的共面合併成更大的四邊形,這在平地上能再次減少數量,在雜亂地形上則幾乎毫無作用。這就是為何重建預算比網格化器更重要。
AI 體素遊戲製作器如何維持影格率
一次編輯會把它所在的區塊標記為待重建,網格化器便會重建該區塊,以及任何邊界面已改變的相鄰區塊。重建會依每影格預算進行,而不是一次全部完成。如果你用方框填滿一個 32×32×32 的區域,你會得到幾格過時的幾何,而不是一次卡頓。可見的瑕疵很短暫 — 一個即將出現牆面的洞 — 而在每秒 60 個影格下,這是正確的取捨。
- 受觸及範圍限制的筆刷放置與移除只在距離相機一小段觸及範圍內生效,並以方塊為單位計算。短觸及範圍可避免你編輯看不見的地形,也讓射線投射保持低成本。
- 線與方盒填滿拖曳一條線以擠出一排方塊,或拖曳一個方盒以填滿一個體積。兩者都會收束為單一復原項目。
- 區塊化儲存世界以 16×16×16 的區塊儲存方塊編號。空區塊不占成本,只有非空區塊才會取得網格。
- 碰撞取自網格玩家碰撞直接讀取體素網格,而不是渲染網格,因此你不可能穿過一個仍在等待重建的方塊而掉落。
與方塊相襯的體素角色與道具
緊鄰硬邊方塊的平滑著色模型,看起來像被貼上去的,而原因就在法線。體素的一個面在每一側只有一條平坦的法線。圓潤的角色會在每個三角形之間插值法線,因此即使顏色相符,這兩種表面接收同一束陽光的方式也不同。輪廓也彼此矛盾:方塊幾何會量化成筆直的邊,而曲面模型拒絕這麼做。
解法是以體素尺度來製作道具。用與地形相同的單位方塊、相同的調色盤,來建構角色、樹木、木箱與梯子。Agent Sprite Forge 產生的角色會對齊格線、共用世界的方塊尺度,因此站在方塊邊緣的角色會站上去,而不是懸在半個單位之上。
要讓一個體素場景維持整體感,有三件事必須保持一致。方塊尺度:一個方塊是世界的 1 個單位,因此一張椅子是 1×1×2,一棵樹高 5 到 7 格方塊,一道門寬 2 格、高 3 格。調色盤:地形與道具共用 12 到 16 種顏色,而不是各自 16 種。材質濾鏡:使用最鄰近,讓相機靠近時邊緣依然銳利。如果某個道具非圓不可 — 例如木桶、輪子 — 就用階梯狀的輪廓來假裝,而不是做成圓柱。
- 對齊格線的角色由 Agent Sprite Forge 產生的角色會落在方塊邊界上,因此落腳位置與門口都能對齊,無需手動偏移。
- 共用調色盤道具取自與地形相同的方塊調色盤。一個引入五種新顏色的道具,是讓場景看起來像由零件拼裝而成的最快方法。
- 平坦法線讓地形與道具的逐面著色都保持平坦。在同一光源下混用平坦地形與平滑道具,是體素場景看起來不對勁最常見的原因。
從麥塊式沙盒到等角微縮模型
體素是一種資料格式,不是一種遊戲類型。同一個網格可以支援第一人稱沙盒、第三人稱冒險、俯視城市,以及小到能放在底座上的微縮模型。它們之間改變的是相機、尺度,以及玩家被允許觸及世界多少部分。
這是清晰易讀與沉浸感之間的取捨。貼近地面的第一人稱會隱藏網格 — 你看到的是牆,而不是一堆立方體。拉遠的等角視角則會顯露網格,整個世界讀起來就像一個每個邊都可見的物體。先選擇相機,再選擇相對於主體的方塊大小。微縮模型通常想要相對於地形更大的方塊,因此一座 20 格方塊寬的島嶼讀起來像模型,而不是縮小的關卡。
相機的選擇也決定了你會花時間處理哪些錯誤。貼近地面的相機會與地形幾何和自動上階規則搏鬥。架高的相機則要對抗平地上的深度衝突,並失去所有高度線索,讓堆疊方塊變成憑空猜測。
| 體素模式 | 相機與尺度 | 何處會失靈 |
|---|---|---|
| 第一人稱沙盒 | 視線高度約 1.6 格方塊、滑鼠視角、短觸及範圍 | 垂直地形:沒有自動上階,你會卡在單格方塊的凸緣上 |
| 第三人稱冒險 | 跟隨相機位於後方 6 到 10 格方塊、俯仰角受限 | 除非以射線測試把它推開,否則相機會穿入地形 |
| 等角微縮模型 | 固定 45 度偏航角、正交或長焦鏡頭 | 除非方塊逐面受光,否則共面會在平地上產生深度衝突 |
| 俯視建構器 | 垂直向下、無俯仰角 | 你無法判斷高度,因此堆疊變成憑空猜測 |
立即遊玩 — 無需匯出、無需安裝
這一節正是本頁存在的理由。你所描述的世界已經可以遊玩,因為編輯器與執行環境是同一個頁面。沒有匯出按鈕、沒有下載、沒有建置步驟,也沒有第二個應用程式要開啟。你從編輯切換到遊玩,相機便降到視線高度。
操作方式一如預期:以 WASD 或方向鍵移動、在指標鎖定下用滑鼠環視、以空白鍵跳躍,並把相同的放置與移除筆刷綁定到滑鼠按鍵,讓你不用離開遊玩模式就能繼續建造。在觸控裝置上沒有指標鎖定,因此拖曳是環視、輕觸是放置。
三個已發布的世界展示了這個範圍。Mini World 是一座使用固定調色盤的小型沙盒,適合用來檢視一個場景在極少方塊類型下能發揮到什麼程度。獨眼巨人之島是較大塊的地形作品,地標是在生成後親手放置的,這也是正常的工作流程。3D 遊戲建構器則是一般情況:描述、編輯、加入來自 Agent Sprite Forge 的道具,然後遊玩。
AI 體素遊戲製作器在遊玩時交到你手上的東西
世界會在同一個分頁中直接可供遊玩。走動時地形網格會串流載入,空區塊不占成本,而影格預算是約 16.6 毫秒的 60 Hz 週期,在網格重建與渲染之間分配。剛生成的大型世界在最初幾格影格最為沉重,因為你出生的位置正是網格最密集之處。
- Mini World一座使用精簡方塊調色盤的小型沙盒。適合用來參考:當你限制材質時,場景能保持多麼清晰易讀。
- 獨眼巨人之島一塊較大的生成地形,帶有親手放置的地標。展示了正常的工作流程:先生成土地,再編輯玩家實際會走到的地方。
- 3D 遊戲建構器一般路徑:描述一個世界、編輯方塊、加入體素道具,並且不用離開瀏覽器就能遊玩。
- Agent Sprite Forge產生符合世界方塊尺度的角色,因此可以放進場景而無需重新縮放。
體素沙盒點子
這四個起點各自考驗工具的不同部分:水與地形、平面建造、垂直輪廓,以及封閉空間中的光照。每一個都能從單一描述加上少量編輯達成。
這四者中真正重要的模式都一樣。先生成,再檢查出生點,然後編輯玩家最先看到的那兩、三個地方。大多數生成的世界都能用,而幾乎全都需要親手修正出生點與一個地標。
01
生存島 — 描述一塊 64 格方塊寬的陸地,帶一圈沙灘、一座中央山丘,四面環水。檢查出生點是否在沙上,而不是在山丘的半山腰。放置一座 5×5 的庇護所,帶一道 2×3 的門口,以及一個你能站上去的平坦屋頂。在岸邊附近挖一個 3 格方塊深的坑,並把最底層填滿石頭,以測試一次操作完成移除與堆疊。
02
創作地塊 — 從平坦開始:固定的基準海拔、振幅接近零。以單一材質塗出一塊 32×32 的地面,讓這塊地讀起來就是一塊地。只蓋一個地標,而不是填滿整塊地:一座塔、一道門,或一座橋。實際遊玩,並從出生點觀看那個地標;如果在該距離下輪廓讀不出來,這個地標就太小了。
03
城市街區 — 描述一個平坦的網格,有兩條街道交叉。放置四棟高 4、6、8 與 12 格方塊的建築,讓天際線有層次,而不是平坦的頂部。把每棟建築的底層挖空,並朝街道敞開;實心的方盒讀起來像一道牆,而不是一棟建築。在交叉口,移除兩條街交會處的轉角方塊,否則你會得到一道玩家得跳過去的單格方塊凸緣。
04
地下礦坑 — 把洞穴閾值設得夠高,讓地表之下存在一套洞穴系統。垂直向下挖一條 12 格方塊深的豎井,並留下一道階梯狀的方塊牆以便爬出來。在底部岔出兩條隧道,高 3 格方塊、寬 2 格。淨空高度維持在 3;若只有 2 格方塊,相機會穿入天花板,隧道在第一人稱下會變得無法辨識。
走進它所屬的世界
精靈圖是一個無處可站的角色。最後一步是其他人都沒提供的那一步:把你剛做好的圖集放進一個有人能四處走動的世界 — 一座小島、一顆行星、一個下雨的街角。這個網站上的每個世界,都是由一段文字描述製作而成,並發布為一個你能遊玩的頁面。
FAQ
AI 體素遊戲製作器是免費的嗎? +
是。描述世界、編輯它的方塊,以及在瀏覽器中遊玩都是免費的。從生成世界到走訪其中,沒有任何匯出關卡,也沒有任何付費步驟。
我需要寫程式碼嗎? +
不用。地形來自一句話,之後的一切都是用放置與移除筆刷直接操作。如果你之後想要規則 — 勝利條件、物品欄、計時器 — 那些都是透過建構器設定,而不是親手撰寫。
我可以親手建造與破壞方塊嗎? +
可以。放置、移除、替換、線填與方盒填滿全都作用於體素網格。每一筆操作都是單一復原項目,因此一次失準的方盒填滿只需一次復原,而不是五十次。
有多人模式嗎? +
世界在瀏覽器分頁中以單人工作階段執行。目前的版本沒有共享工作階段伺服器,因此兩位玩家之間不會同步任何東西,遊玩也不需要帳號。
我可以把世界匯出到 Unity 嗎? +
沒有所謂一鍵匯出到 Unity 的功能。一個世界是由方塊編號與整數座標構成的網格,這是可攜的資料,但要把那轉換成 Unity 的預製物件與網格,是你得自行負責的轉換步驟。
一個方塊有多大? +
一個方塊等於世界的一個單位。玩家的視線高度約在 1.6 個單位,碰撞使用約 1.8 個單位高的膠囊體,而自動上階可跨越約 0.6 個單位,這就是為何單一格抬高的方塊可以走上去,兩格則不行。
它在行動裝置上能用嗎? +
建構器可在行動瀏覽器中執行。觸控沒有指標鎖定,因此相機控制變成拖曳環視與輕觸放置。生成與編輯完全相同,但長時間遊玩大型世界時,手機會比筆記型電腦更早觸發過熱降頻。
返回 3D 遊戲建構器
全部 31 個完成的 3D 世界、遊戲和場景都在同一頁面上——每一個都能實際遊玩。