创建自定义地图
如何在虚幻引擎中创建地图并将其导出到 nanos world
地图和关卡是你能够创建和导入的最直观的资产。 在虚幻引擎中,地图被称为 Levels(关卡),这些关卡通常填充了用于制作地形的 Landscape(地景)组件、一些光源以及一些静态网格体(如树木、房屋等)。
请参考 虚幻引擎官方教程 - 使用关卡。
注意! 此页面内容较旧,本教程可能已经过时! 这里的图片引用的是虚幻引擎 4,现在可能已经发生变化。 新的更新教程即将推出™!
创建地图/关卡的规则
- 不要生成/放置动态网格体(带物理效果),因为它们在游戏中不会被同步。 你需要通过脚本将其作为道具来生成。
- 为所有与照明/天空/太阳相关的 Actor(DirectionalLight、SkyLight、DomeMesh、SkyAtmosphere 或 SunSky)添加一个“Sun”的 actor-tag,如果需要的话,这将允许脚本创作者覆盖你的光源,转而通过
World.SpawnDefaultSun()使用官方的 nanos world 太阳,从而实现游戏内的照明/太阳自定义。 - 如果你正在创建一张地图,请记得在 World Settings 中,将所有对虚幻引擎 GameModes 重写的引用归空(设为 None):

开始
在继续操作之前,请务必阅读创建与导入资产指南。
第一步是在 Content/ 文件夹内部创建一个文件夹,这一步非常重要。 根据你的喜好为这个文件夹命名。
- 展开标签页。
- 右键单击 Content。
- 新建一个文件夹。

现在让我们来创建地图本身,在虚幻引擎中地图被称为关卡,方法如下:
- 右键点击 Content 空间。
- 创建一个新关卡。

用你想要的地图名称重命名它,保存并打开。 你会注意到视口变成了全黑,这是因为你刚刚打开的地图里什么都没有,让我们往里面添加一些东西:

添加对象
首先,让我们添加一个地板,为此只需将 Place Actors → Basic 窗口中的 Plane(平面)拖放到视口中即可:


选中平面后,你会注意到它是一个简单的静态网格体,这个静态网格体是引擎中已经包含的模型,因此非常重要的一点是,你需要将这个网格体复制到你的 Content/YourAssetPack/ 文件夹中,以避免后续出现任何导出问题:

要找到你的网格体所在的位置,请点击屏幕右侧静态网格体项目右侧的放大镜图标:
这将打开引擎的文件夹,其中包含一些引擎自带的基础网格体:

让我们复制一些基础网格体到我们的 AssetsPack 文件夹中以便稍后使用,包括这个平面:

使用 CTRL+C 与 CTRL+V 将资产复制到你的文件夹中:

现在,让我们把正在使用的平面网格体替换为我们复制的网格体,为此,只需
- 选择复制好的平面网格体。
- 点击你平面 Actor 上的箭头来替换它的静态网格体(或者你也可以直接删除生成的平面,然后从你的资产包文件夹中重新拖放新的平面):

之后,在选中平面(地板)的情况下,让我们将其缩放改为 X = 10, Y = 10, Z = 10 并将其中心位置对齐到 X = 0, X = 0, X = 0:

我们还可以添加一些光源,为此,只需将一个定向光源(太阳光/阴影)和一个天空光源(阴影颜色)拖放到你的关卡中(你可以通过右键单击 + WASD 在视口中四处飞行,或者如果选中了平面,按 F 键可以使其居中显示):

添加材质
干得好,现在我们能看到东西了! 接下来让我们为它添加一些颜色,在虚幻引擎中应用颜色和纹理是通过材质来实现的,为此,让我们创建一个材质
- 右键单击。
- 创建新材质。

将其重命名为 M_Plane 并打开它:

在本教程中我们不会涉及材质的所有方面,现在我们只需将一个带有颜色的 Vector3 节点连接到 Base Color 输入端,为此,在屏幕上右键单击并搜索 Constant3Vector:

之后,将其连接到 Base Color 输入端:

选择该 Vector3 节点并为其选择一种颜色:

现在保存并关闭这个材质窗口,你就可以将你的材质拖放到你想要的网格体上了,让我们对平面进行此操作:

瞧,它变绿了(或者变为了你在平面材质屏幕中选择的颜色)!

现在让我们将其他网格体也拖放到我们的关卡中,就像这样:

此外,ADK 项目还提供了一个内置的 Sun & SkyBox Actor(用颜色和云填满天空),要添加它,只需在 NanosWorld/Blueprints/World/ 中找到 BP_SunSky 并将其拖到视口中。
你也可以创建一个新材质并用它来为这些网格体上色:

如果你 (1.) 选中了 Directional Light(定向光源),你可以更改它的 (2.) Rotation(旋转),同时,记得将其设为 (3.) Movable(可移动),这样它的阴影就能实时工作,你可以根据需要随意调整光照,包括它的颜色和强度:

当你觉得满意时,移动你的摄像机以查看整个地图并截一张图,我们稍后会用它来做缩略图(将其以与你地图相同的名称保存为 .webp 格式到任意位置,在我们的示例中为:MyAwesomeMap.webp):

大功告成! 保存所有内容,然后来导出它!
导出地图
完成所有步骤后,你就可以将它们导出到 nanos world 中了! 在继续操作之前,请先参阅 导出与烘焙你的资产 文档页面。
配置资产包
当你烘焙好资产并将生成的文件夹复制到服务器的 Assets/ 目录下后。 就是时候配置资产包了! 在继续操作之前,请先参阅 配置你的 Assets.toml 文档页面。
现在你已经创建了 Assets.toml 并配置了虚幻引擎的相关设置,请确保你在 [assets.maps] 类别中正确设置了你的静态网格体,就像这样:
# maps
[assets.maps]
MyAwesomeMap = "MyAwesomeMap"
通过这种方式,我们就可以通过 Config.toml 来加载它了!
添加缩略图
要为你的地图添加缩略图,请将 .webp 图片复制到与你的地图 .umap 文件相同的文件夹中。
在我们的示例中,我们的 .umap 位于根目录下,所以我们直接把它拖到那里:

现在你只需在勾选了 Sandbox 包的情况下启动新游戏,然后——瞧! 你从零开始制作的、可游玩的新地图诞生了!

配置你的地图
此外,你还可以为你的地图添加一个配置文件、自定义数据、甚至是专属的包(脚本)! 请参考地图脚本与配置进一步了解!