建筑架构

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

以模块化的方式构建车站使我们能够顺利更新和传播内容更新,并且这是确保我们不会花费数小时更新单个网格、纹理、部件等的关键。

Roblox 包允许我们通过将一组 Meshparts 打包在一起实现这种模块化设计,这些网格可以轻松拼接在一起,修剪表集,以及 SurfaceAppearance 节点,这些节点可以被 MeshParts 共享。这使我们能够在早期的游戏测试中适应布局和大小的变化,并加快了填充车站的过程。

建筑概述

灵活的设计到最终艺术

当我们最初开始时,我们对车站想要的内容或其需要多大以容纳 50 名玩家并没有完全的理解。

为了弄清楚这一点,我们首先使用 Parts 构建环境,并引入一些网格,例如来自我们外部 DCC 应用程序(如 Maya 或 Blender)的圆形大厅形状。通过这些简单的形状,我们调整了地图的比例、房间的排列和通道,以找到最有趣的布局。无论是用于游戏还是社交体验,这个早期阶段往往是最具动态性的。

在构建车站的布局时,推动探索的最重要因素是给用户一个目标。在这种情况下,最明显的目标是更近距离地观察黑洞。接下来,我们知道给他们一条直通黑洞的路径会很无聊,因为玩家可以直接从出生点走到地图的尽头。我们打破了这条路径,使玩家在到达黑洞之前必须绕行并看到其他可能吸引他们的事物。

模块化设计使我们能够对环境进行这样的更改,而无需对整体设计进行灾难性的重构。我们可以移动整个车站的部分,以尝试不同的游戏玩法想法。最终,这些相同的模块化组件可以通过包进行更新,因此我们不必重建多个版本的相同资产。

建筑示例 1 建筑示例 2 建筑示例 3 建筑示例 4

Kerr-Newman DSR-14 的模块化设计

空间站仅使用少数模块化调色板组件。模块化调色板组件是可重用的资产,这意味着我们不必为每面墙单独创建,而是可以组合几面较小的墙。这在构建时提供了布局的灵活性。

以下是一些帮助我们创建模块化设计的提示:

  • 确定统一的网格大小 — 对于车站,我们确定了 16 个 Stud 的网格大小来创建大部分模块化组件。您使用的网格大小是任意的,但在整个项目中以及所有参与该项目的艺术家之间应该保持一致。在项目开始时确定网格大小可以确保每个组件与相邻组件完美契合。它还允许您轻松交换组件,例如将墙段替换为门段。

  • 所有单位都以 Stud 导入 — 在其他 DCC 应用程序(如 Maya 或 Blender)中创建网格时,Studio 不会转换米、厘米、英尺或英寸 — 它只是将传入的单位替换为相同单位的 Stud。例如,如果您将单位设置为米,Studio 会将 2 米转换为 2 Stud。最好将您选择的应用程序中的单位比例视为 Roblox 中的 Stud 比例。Roblox 中单个 Stud 的最接近现实世界的比例是 28 厘米。

  • 保持组件简单 — 不要试图构建您认为将来会需要的每个组件。这个想法是拥有几个非常通用的组件,而不是很多一次性的组件。组件越多,创建每个组件所需的时间就越长,并且越会影响您的整体内存和性能预算。如果绝对需要,您可以随时向您的工具包中添加另一个组件。

  • 使用包 — 将每个模块化组件转换为包,并在开始将其填充到游戏中之前将材料放入包中。这使您可以轻松地将更新推送到所有实例。稍后我们将深入探讨包。

以下屏幕截图展示了我们使用模块化设计构建车站部分的各种方式。

建筑示例 5 建筑示例 6 建筑示例 7 建筑示例 8

创建修剪表

1:1 的纹理是未来的趋势,但在内存预算和创建时间方面会变得昂贵。对于空间站,90% 的建筑元素使用了一小部分可互换的修剪表集,这是一组以垂直或水平方式排列的纹理图。每一行或列的外观都是独特的,在展开模型时为您提供了多种不同的表面处理选择,同时使用一张图像表。

以下是制作修剪表的一些提示:

  • 从您需要的对象和材料类型的清单开始 — 修剪表可以包含各种材料类型的变化,例如木材、金属、橡胶等。在开始建模第一个对象之前,创建一个修剪表模板。这是您所有其他修剪表集的起点,并为展开模型提供了一个快速的起点。这些修剪表位于 SurfaceAppearance 节点中,我们稍后会介绍。

  • 在一张表中包含多种表面处理 — 这让您可以将更多的网格保持在一起,因此您可以应用新的处理,而无需将网格拆分为多个网格。这通过减少对象和材料的绘制调用来提高运行时性能。

  • 制作修剪表模板 — 模板确保您可以将任何图集替换为另一个。例如,您可以将干净的金属集替换为生锈的金属集。

以下是我们为车站创建修剪表的过程:

我们创建了修剪表的粗略轮廓:

修剪表示例

在 Photoshop 中,我们创建了一个模型,以快速了解修剪表的每个部分的外观。

修剪部分示例

我们使用 Substance,但您可以使用任何适合您的应用程序来创建最终的图。以下是使用 Substance 生成的修剪表图的最终集。所有四个图在 SurfaceAppearance 节点中协同工作,以生成物理基础渲染(PBR)材料。

以下是修剪表在 Substance Designer 中的最终渲染:

以下是同一修剪表在大量对象上使用的示例:

模块化修剪表

如果您想了解更多关于修剪表 UV 映射的信息,只需在网上搜索该主题;有很多很棒的教程。

应用表面外观

SurfaceAppearance 让您为我们的物理基础渲染系统指定新的纹理输入,用于 MeshParts,并让您使用高级图形选项覆盖网格的外观,包括 ColorMap、MetalnessMap、RoughnessMap 和 NormalMap。它还利用了 Roblox 用于材料反射的新动态立方体贴图系统,例如铬。以下是应用了 SurfaceAppearance 的网格与未应用的网格的并排图像:

表面外观示例

使用表面外观时,请记住以下提示:

  • 如果您的修剪图包含透明度的 alpha 信息,请将 AlphaMode 从 Overlay 更改为 Transparency。
  • 表面外观不适用于 Parts,因为它们没有应用图所需的 UV 信息。Parts 使用世界对齐投影来代替 UV 信息。MeshParts 通常在其他应用程序(如 Maya、3ds Max 或 Blender)中创建,并包含 UV 展开信息。

要应用 SurfaceAppearance

  1. Explorer 中单击 MeshPart 或文件夹名称末尾的图标,并搜索 SurfaceAppearance。添加一个将覆盖您可能已经应用的任何 BrickColor、Color、Material 和 TextureID。

  2. SurfaceAppearance 节点重命名为唯一的名称,并添加后缀 _SA 以便于搜索。在这个例子中,我们使用了 Metal_Trim_A_SA

  3. 导入修剪表图,从 Asset Manager 窗口复制 ID,并将其粘贴到 Properties 窗口中的相应插槽。以下是 Metal_Trim_A_SA 节点的外观,所有图 ID 都已插入并应用于门。

表面外观示例 2

通过包提高效率

包让您在 Roblox 游戏中创建对象实例,因此您对包所做的更新会发布到该包的所有实例中。我们几乎对放入车站的每个对象都使用了包,因此如果我们需要进行调整,就不必逐个查找每个放置。例如,我们使用了超过 1,000 个墙面面板实例的包,并能够通过修改包立即发布更新。

使用包时请遵循以下提示:

PackageLink 中启用自动更新功能。当启用此功能时,所有修改都会应用于包的所有用法,从而节省您使用“更新所有”功能的步骤。

包示例

您可以将包用于 SurfaceAppearance 对象,以创建“材料库”。这让您可以修改 SurfaceAppearance 对象中的位图,并将其发布到每个使用它的对象。以下屏幕截图显示了在演示中使用的主材料。如果我们需要修改图,我们只需更新主材料并重新发布包。

包示例 2
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。