[匯出工具] World to Beyond
請注意,FPP 並不是為 BAR 設計的——這條流水線能夠奏效完全是巧合!

World to Beyond 是一個免費的獨立工具,用於構建可遊玩的 Beyond All Reason 地圖——既可以基於 Fantasy Planet Painter 世界,也可以基於自訂地圖或程序化生成的地圖。
它會編譯出完整的地圖,沒有任何外部依賴(例如不需要地圖範本,不需要 pymapconv,也不借用現有地圖中的任何內容)。它寫出的 .sd7 只包含你自己製作的內容,因此你可以自由釋出。這與網上其他可用於編輯 BAR 地圖的工具截然不同。
安裝
為了讓基礎下載包保持小巧,W2B 單獨提供。
- 安裝標準的 FPP 發行版——如果你希望自動更新,請使用 Steam。
- 新增 World to Beyond:
- Steam:啟用 Fantasy Planet Painter — World to Beyond DLC。
- Itch.io 及其他渠道:使用 Resources 壓縮包為你的安裝打補丁。
這就是全部步驟。本頁面上的資訊可能領先或落後於實際可用的版本。早期版本需要你提供一個從遊戲自帶地圖中提取的 GeneratorTemplate.zip,這個檔案不太容易獲得,而且使生成結果在再分發時存在法律上的模糊地帶。這一步驟已成為過去——最新的工具會從頭寫出 .smf、.smt 和 mapinfo.lua。
啟動
- Steam:使用啟動選項 World to Beyond。
- 從 FPP 內部啟動:File → Advanced Exports → BAR Spring Map。
你也可以直接用一個星球檔案開啟它,它會以該世界啟動。
七個階段
左側的索引標籤是整個流程的各個階段。它列出了一張地圖由哪些部分組成,你可以按順序逐個完成,也可以隨意跳轉。勾號表示該階段已經為地圖提供了內容。
| 階段 | 它決定什麼 |
|---|---|
| Source | 地形來自何處,以及地圖有多大 |
| Terrain | 地貌——風格、起伏、海平面、對稱性、玩家數量 |
| Metal | 採集點位於何處 |
| Grass | 植被生長在哪裡 |
| Water | 海洋的顏色和表現,即引擎將如何渲染它 |
| Features | 岩石、樹木和匯入的模型,以及它們散佈在哪裡 |
| Output | 地圖的名稱、寫出位置以及構建本身 |
Source(來源)

選擇一個 .planet 檔案和一種生成方案:
- Tetrahedral (legacy)——原始的 FPP 生成器。與 v1.4 之前製作的地圖一致。
- Tetrahedral——目前的細分生成器。細節更高,投影相同。(目前這兩種方案渲染結果完全相同——參見“侷限”。)
- 2D height field——直接從繪製生成地形,不使用球面投影。適用於 FPP 的平面世界。
- Procedural——完全沒有來源世界。由工具自行創造地形,你在 Terrain 階段對其進行塑造。
地圖尺寸以 Spring 地圖單位計量,一個單位為 512 elmo。實用範圍為 2 到 64;BAR 自帶的地圖通常為 8×8 到 32×32。讀數會顯示以 elmo 為單位的尺寸,以及成品壓縮包的大致大小,在你要求生成 48×48 的地圖之前值得看一眼。
Terrain(地形)

對於星球來源,此階段只設定高度範圍。對於 Procedural 來源,它就是整個生成器。
Style(風格)是第一個控制元件,它會帶動其他控制元件。選擇一種風格會自動填入海平面、起伏、粗糙度、扭曲、侵蝕、高度範圍、連通性設定和主題——因為風格是對這張地圖屬於哪種型別的一種宣告,而沒有與之相配的設定,這種宣告就不成立。在大陸的海平面上做群島,得到的只是零星散佈的小山丘。
| 風格 | 生成效果 |
|---|---|
| Continental | 一塊帶有山脊、可登陸海岸和內陸海的陸地 |
| Islands | 深海中彼此分離的島嶼。不會開鑿陸橋 |
| Highlands | 分為四個明顯層級的高地,被溝壑網路切割 |
| Plains | 開闊的可建造地面:平緩的起伏、沙丘地帶和積水 |
| Canyons | 被相互連通的峽谷切割的臺地,谷底有一條河流 |
| Mesa | 乾燥沙漠地面上的平頂孤丘。沒有海 |
| Volcanic | 山頂有火山口的錐形山體,矗立在熔岩盆地中 |
Theme(主題)位於其旁邊,決定地面顏色、植被、光照和水體。每種風格一開始都使用為其編寫的主題,但兩者是可分離的——冰原和草原是同一種地貌——因此你可以將任意主題與任意風格搭配。
| 主題 | 外觀 |
|---|---|
| Temperate | 綠色和灰色;普通日光 |
| Desert | 沙地和紅巖;強烈的高角度陽光 |
| Arctic | 冰雪和藍色陰影;低角度的淡光 |
| Alien | 紫羅蘭色岩石和青色植物;奇異的光線 |
| Volcanic | 黑色玄武岩和火山灰;由熔岩照亮 |
| Lush | 深綠色和青綠色水體;溫暖的光線 |
Playability(可玩性)部分決定這張地圖是否值得一玩:對稱性、玩家數量、是否保證每個出生點都能到達其他所有出生點,以及每個出生點下方的地面是否被壓平為建造平臺。
按 Preview 進行渲染。旁邊的四個索引標籤——Terrain、Height、Slope、Reachability——是針對同一地貌的不同問題,下方的讀數會告訴你地圖中有多少是水域、有多少可建造、有多少金屬,以及出生點落在了哪裡。
你也可以匯入在其他地方製作的高度圖或地面紋理。高度圖以 16 位從 PNG 中讀取,這是唯一不會讓星球的起伏出現明顯階梯狀的位深。
Metal(金屬)

採集點決定了地圖究竟能否遊玩,因此這個階段會開啟獨立的視窗,以全尺寸顯示畫布。
Auto-place 會做出合理的安排——按每位玩家分配採集點,按對稱性分佈,並避開懸崖。在此基礎上,你可以繪製、擦除、填充、將金屬圖作為影像載入,以及復原。讀數會顯示採集點的數量以及每位玩家分到多少,並在有人出生時一個都沒有的情況下發出警告。
在你按下 Apply 之前,任何內容都不會寫入地圖,因此隨時可以無代價地退出。
Grass(草地)

草地先根據地形生成,再在其上繪製。規則——覆蓋率、斑塊大小、坡度限制、高度區間——會讓草生長在適合的地面上,而畫筆則用於修正規則出錯的地方。
請注意,草地是分級的斑塊大小,而不是簡單的有或無:每個儲存格都儲存一個值,決定該處草叢長多高。BAR 通過其自帶的草地元件以這種方式讀取它。
在畫布上滾動滑鼠滾輪可以調整畫筆大小,這裡的三個繪製介面都是如此。
Water(水體)

這裡的所有內容都會寫入 mapinfo.lua,並在地圖載入的那一刻在遊戲中可見。各控制元件以其設定的引擎鍵命名,即時樣例使用引擎自帶的水體著色器渲染,並從遊戲視角觀察——五個表面控制元件中有四個取決於觀察水面的角度,因此俯視的樣例什麼也顯示不出來。
值得了解的是:邊緣反射是疊加到反射上的,而不是反射上升到的目標值。從側面平視時,水面會同時反射兩者。
Features(地物)

岩石、樹木以及地圖上矗立的其他任何東西。
- Import mesh 接受
.obj、.gltf和.glb,並將其轉換為.s3o,同時提供一份轉換報告,說明它做了什麼。 - Generate 以程序化方式構建岩石和樹木——這些在列表中標記為 GEN。
- 無論哪種方式,模型都會嵌入壓縮包中,因此地圖自帶其景物,不需要另外安裝任何東西。
每個模型都有自己的散佈規則(密度、坡度限制、高度區間、被摧毀時掉落什麼)和自己的放置圖——一張可繪製的遮罩,標明該模型可以出現在哪裡。一張共享遮罩只能表達“這裡有景物,那裡沒有”;而每個模型一張遮罩,就能讓你把松樹放在山脊上,把巨石放在海岸邊。
Populate 會在真實地形上執行真實的放置器,並繪製出所有東西落在何處。它只需不到一秒,因此你可以通過觀察而不是構建地圖來回答“樹是不是太多了”這樣的問題。
Output(輸出)

地圖的名稱、描述、作者和版本;壓縮包的寫出位置;以及將會生成哪些內容——在你確認之前就會列出。
當 W2B 能找到 BAR 安裝時,目標位置預設為遊戲自身的地圖資料夾,因此完成的地圖無需四處尋找即可遊玩。如果找不到安裝,它會給出提示,並使用自己的資料夾。
Generate map 會構建真正的地圖,並顯示每個階段的即時進度和構建日誌。再次按下它會取消——而且取消會真正停止構建,而不僅僅是改變按鈕標籤。
Save configuration 會寫出一個 .w2b 檔案:包含所有設定和每個已繪製的通道,因此一張地圖不必一次完成。模型以引用方式儲存而不是複製,因此編輯某個模型後重新開啟專案即可獲得更改。
3D 預覽

版本號旁邊的閃電圖示會在全屏即時檢視器中開啟地圖,使用與 Beyond All Reason 開局時相同的俯視攝像機——地面、水體、草地、景物和陰影,都與遊戲中的繪製效果一致。
在尚未渲染地形之前,它顯示為灰色不可用;在 Terrain 階段渲染一次預覽後它就會亮起。這一過程不會生成任何內容,也不會寫出壓縮包,因此開啟它所需的時間大約只相當於上傳一個高度場的時間。
| 控制 | 作用 |
|---|---|
滑鼠移至螢幕邊緣,或 W A S D |
平移 |
| 滾輪 | 朝游標方向縮放 |
Ctrl + 滾輪 |
傾斜 |
| 按住任一滑鼠鍵拖動 | 移動地圖 |
Shift |
加速 |
F |
顯示整張地圖 |
Tab |
隱藏面板 |
Esc |
關閉 |
每個採集點和出生位置都會用一個半透明方框標出,這是檢視金屬是否按你的意圖分佈的最快方式。
Sea level 面板會移動水平面,並報告地圖有多大比例最終位於水下。這個數值就是 Terrain 階段的 Sea level 滑塊:拖動直到海岸線看起來合適,讀出該數值,然後填入。它不會改變地圖——引擎中的水面始終位於零點——因此檢視器不會帶回任何東西,也不需要帶回。
檢視器需要 OpenGL 4.3。在驅動程式不支援它的電腦上,Studio 會在狀態列中給出提示,並繼續正常工作。
教程
快速入門
基於 FPP 世界:
- 像平常一樣製作你的世界,並儲存
.planet檔案。 - 開啟 W2B,在 Source 中瀏覽到該星球檔案,選擇與你製作方式相匹配的方案。
- 在 Terrain 中設定高度範圍,然後按 Preview。
- 在 Metal 中按一下 Auto-place,然後按一下 Apply。
- 在 Output 中為地圖命名,然後按 Generate map。
不使用 FPP 世界:
- 在 Source 中選擇 Procedural,並選擇尺寸。
- 在 Terrain 中選擇一種 Style,設定玩家數量和對稱性,然後按 Preview。多試幾個種子,直到找到滿意的為止。
- 依次完成其餘階段,或直接跳到 Output。你沒有動過的設定,都由生成器決定。
在此過程中,版本號旁邊的閃電圖示隨時可以在 3D 中開啟你目前的成果。
侷限
FPP 是地圖繪製工具,而不是關卡編輯器。一個作為奇幻地圖看起來很漂亮的世界,並不自動就是一張好的 RTS 地圖,這裡的任何功能都改變不了這一點。你需要在 Terrain 和 Metal 階段花些時間,讓結果變得可玩,而不僅僅是好看。
星球使用墨卡託投影,並且只使用墨卡託投影。將球面展開到正方形上會拉伸兩極附近的地面,因此世界的極地區域會出現變形。請將你關心的星球區域放在赤道附近,或者使用 2D height field 方案,它直接繪製到地形,完全不使用投影。
目前兩種 Tetrahedral 方案渲染出的地形相同。它們的區別在於 FPP 如何細分球面,而渲染器尚未開放這一選項——因此該設定會記錄在專案中,但不會改變輸出。目前選擇其中任何一種都沒有區別。
投影得到的星球是不對稱的。生成的地圖的地形是對稱的,因此其金屬和草地會相應地摺疊對稱;星球的地形則不是,如果按從中推導的規則摺疊,就會把草放到本不長草的地面上。畫筆不受此限制——在不對稱的世界上對稱地繪製金屬,是你有權做出的選擇。
大地圖會消耗相當多的時間和記憶體。紋理每個方格 8 個紋素,因此 32×32 的地圖在壓縮前橫向有 16,384 個紋素。Source 階段會顯示估計的壓縮包大小;請認真對待。
地圖只是地形,而不是場景劇本。W2B 寫出地面、水體、金屬、草地、景物、出生位置和 mapinfo.lua。它不負責編寫單位放置、殘骸、自訂 Lua 元件或遊戲玩法指令碼。
3D 預覽需要 OpenGL 4.3。Studio 本身並不需要——只有檢視器需要。
故障排除
構建日誌以錯誤結束。日誌會指明失敗的階段。最常見的原因是地圖尺寸超出了電腦的承受能力——32×32 的地圖在壓縮前就是一張 16,384 紋素的紋理。
未找到 BAR 安裝。W2B 會寫入自己的資料夾,並告訴你位置。將 .sd7 複製到 BAR 的 maps 資料夾中即可遊玩。
3D 預覽按鈕顯示為灰色。尚未渲染地形。轉到 Terrain 並按 Preview;工具提示中也有說明。
3D 預覽無法開啟。它需要 OpenGL 4.3。狀態列會報告驅動程式所支援的版本。
資源
- Resources 壓縮包——為 FPP 安裝打上 World to Beyond 補丁。如果你擁有 Steam DLC,則不需要。
- BAR 地圖技術規範——逐位元組說明
.smf和.smt格式、mapinfo.lua及其背後的約定。適合想了解地圖究竟是什麼,或想自己構建工具的人。它只描述格式,與本工具無關。
讓地圖真正歸你釋出
壓縮包中的所有內容都由工具生成或由你提供——地形、紋理、金屬、草地、水體設定、模型。沒有任何內容是從現有地圖中複製的。早期版本並非如此,它們會解包從 BAR 自帶地圖中提取的範本;如果你有以那種方式構建的地圖並打算分發,請使用目前工具重新構建。