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