[导出工具] 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 自带地图中提取的模板;如果你有以那种方式构建的地图并打算分发,请使用当前工具重新构建。