繁體中文
English 简体中文 繁體中文
Methodox 首頁

[匯出工具] World to Beyond

請注意,FPP 並不是為 BAR 設計的——這條流水線能夠奏效完全是巧合!

結果

World to Beyond 是一個免費的獨立工具,用於構建可遊玩的 Beyond All Reason 地圖——既可以基於 Fantasy Planet Painter 世界,也可以基於自訂地圖或程序化生成的地圖。

它會編譯出完整的地圖,沒有任何外部依賴(例如不需要地圖範本,不需要 pymapconv,也不借用現有地圖中的任何內容)。它寫出的 .sd7 只包含你自己製作的內容,因此你可以自由釋出。這與網上其他可用於編輯 BAR 地圖的工具截然不同。

安裝

為了讓基礎下載包保持小巧,W2B 單獨提供。

  1. 安裝標準的 FPP 發行版——如果你希望自動更新,請使用 Steam。
  2. 新增 World to Beyond:

這就是全部步驟。本頁面上的資訊可能領先或落後於實際可用的版本。早期版本需要你提供一個從遊戲自帶地圖中提取的 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(來源)

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(地形)

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(金屬)

Metal

採集點決定了地圖究竟能否遊玩,因此這個階段會開啟獨立的視窗,以全尺寸顯示畫布。

Auto-place 會做出合理的安排——按每位玩家分配採集點,按對稱性分佈,並避開懸崖。在此基礎上,你可以繪製、擦除、填充、將金屬圖作為影像載入,以及復原。讀數會顯示採集點的數量以及每位玩家分到多少,並在有人出生時一個都沒有的情況下發出警告。

在你按下 Apply 之前,任何內容都不會寫入地圖,因此隨時可以無代價地退出。

Grass(草地)

Grass

草地先根據地形生成,再在其上繪製。規則——覆蓋率、斑塊大小、坡度限制、高度區間——會讓草生長在適合的地面上,而畫筆則用於修正規則出錯的地方。

請注意,草地是分級的斑塊大小,而不是簡單的有或無:每個儲存格都儲存一個值,決定該處草叢長多高。BAR 通過其自帶的草地元件以這種方式讀取它。

在畫布上滾動滑鼠滾輪可以調整畫筆大小,這裡的三個繪製介面都是如此。

Water(水體)

Water

這裡的所有內容都會寫入 mapinfo.lua,並在地圖載入的那一刻在遊戲中可見。各控制元件以其設定的引擎鍵命名,即時樣例使用引擎自帶的水體著色器渲染,並從遊戲視角觀察——五個表面控制元件中有四個取決於觀察水面的角度,因此俯視的樣例什麼也顯示不出來。

值得了解的是:邊緣反射是疊加到反射上的,而不是反射上升到的目標值。從側面平視時,水面會同時反射兩者。

Features(地物)

Features

岩石、樹木以及地圖上矗立的其他任何東西。

  • Import mesh 接受 .obj、.gltf 和 .glb,並將其轉換為 .s3o,同時提供一份轉換報告,說明它做了什麼。
  • Generate 以程序化方式構建岩石和樹木——這些在列表中標記為 GEN。
  • 無論哪種方式,模型都會嵌入壓縮包中,因此地圖自帶其景物,不需要另外安裝任何東西。

每個模型都有自己的散佈規則(密度、坡度限制、高度區間、被摧毀時掉落什麼)和自己的放置圖——一張可繪製的遮罩,標明該模型可以出現在哪裡。一張共享遮罩只能表達“這裡有景物,那裡沒有”;而每個模型一張遮罩,就能讓你把松樹放在山脊上,把巨石放在海岸邊。

Populate 會在真實地形上執行真實的放置器,並繪製出所有東西落在何處。它只需不到一秒,因此你可以通過觀察而不是構建地圖來回答“樹是不是太多了”這樣的問題。

Output(輸出)

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 世界:

  1. 像平常一樣製作你的世界,並儲存 .planet 檔案。
  2. 開啟 W2B,在 Source 中瀏覽到該星球檔案,選擇與你製作方式相匹配的方案。
  3. 在 Terrain 中設定高度範圍,然後按 Preview。
  4. 在 Metal 中按一下 Auto-place,然後按一下 Apply。
  5. 在 Output 中為地圖命名,然後按 Generate map。

不使用 FPP 世界:

  1. 在 Source 中選擇 Procedural,並選擇尺寸。
  2. 在 Terrain 中選擇一種 Style,設定玩家數量和對稱性,然後按 Preview。多試幾個種子,直到找到滿意的為止。
  3. 依次完成其餘階段,或直接跳到 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 自帶地圖中提取的範本;如果你有以那種方式構建的地圖並打算分發,請使用目前工具重新構建。