求生之路2关卡设计/VMF 实例

From Valve Developer Community
Jump to: navigation, search
English 简体中文

本简体中文界面由大康翻译。最后更新于2021年8月27日。本页面部分内容由机器翻译。


VMF 地图实例是用于地图编辑的简单但功能强大的新工具。基本上,它们使你可以将一个 .VMF 引用到另一个。对文件的任何更改都将反映在所有实例中。

好处

预制的 .VMF 文件

需要重复放置的地图数据可以方便地作为实例保存和编辑。这与预制文件的工作原理类似。基本上,你要一起工作的实体收集至一个文件中,然后将该文件引用到地图中的任意多个位置。每个实例都有自己的“name fixup”(名称修正),因此当文件被引用到另一个映射中时,所有的逻辑仍然有效。《教区》战役中的警报车停车场就是这样做的。另外,《暴风骤雨》 中的城镇也被引用到地图的前后版本版本中,从而使单个更改都可以反映在这两个版本中。

分割

实例还可以用于将大型笨拙的地图分为几个较小的、更易于管理的 VMF 文件。当多个地图作者同时在一张地图上工作时,这也简化了工作流程。

脱离网格工作

如果地图的一部分需要成非正交的角度,你可以将其保留在的单独文件的网格上。如果随后你将文件实例化至主地图中,然后旋转该实例 Then rotate the instance,则可以继续享受在网格上为每个文件进行编辑的好处。

将一个地图升级至《求生之路2》

如果你要升级一个《求生之路》地图以便与《求生之路2》一起运行,并且同时与《求生之路》保持兼容,则实例是最好的选择。你可以保持一个新版本,但是由于需要在两个地方进行常见的修复或更改,因此该“分支”可能会变得难以支持。或者,你可以简单地将新内容添加到“L4D2”可见组中,但是这种方法的可伸缩性不是很高。这很容易出错,丝毫的复杂性会使它变得笨拙。
相反,你现在可以将公共资产保留在一个与 L4D1 兼容的文件中,将 L4D2 的“增量”保留在另一个文件中。要进行设置,你将需要创建一个新的 L4D2 VMF 文件映射,然后将一个实例实体引用其中的现有 L4D1 映射,从而在每次编译之前自动导入旧映射的内容。只需将新的仅L4D2实体添加到L4D2 的VMF文件,就可以从一组非重复的源数据中为两个游戏提供一个地图版本。这样做的好处是,你在较旧的 L4D1 映射中进行的任何更新都会自动反映在新的 L4D2 VMF 版本中。
让我们使用入门教程之一的实例进行操作。

添加一个新实例

首先,从 Hammer 中创建一个新地图:

  1. 从菜单上点击选项卡 File
  2. 点击 New

另存为:

sdk_content\mapsrc\Your_First_L4D_Level_Tutorial\tutorial07.vmf

我们将引用同一文件夹中的另一个文件,因此将其保存在正确的位置很重要。
接下来,我们需要放置一个称为“func_instance”的实体,该实体将表示你希望引用的地图数据。
点击实体工具Entity tool Mt-entities.png,然后从 Hammer 窗口右侧的“对象”下拉菜单中选择“func_instance”。

将 func_instance 放在世界中心点

L4D2 instance 1place3.png


左键单击在顶部(右上)视口中深青色线相交的位置,将其放置在世界中心点(坐标0、0、0)。你可以从状态栏的右侧验证其位置。

由于它是一个点实体,因此你可以将 func_instance 放置在任何位置,但是将其放置在世界中心点且没有旋转的情况下,你可以非常精确地在基础地图和实例之间剪切然后粘贴特殊对象。在地图之间进行紧密协调时,这非常方便,你会发现自己在做很多事情。

接下来,使用箭头选择工具选择 func_instance 并通过按 Alt + Enter 打开其属性。


单击 VMF Filename 字段,然后单击 Browse... 按钮。继续并在同一文件夹中选择完成的教程文件之一:

sdk_content\mapsrc\Your_First_L4D_Level_Tutorial\tutorial05_complete.vmf


L4D2 instance 2properties.png

如果没有出现该名称,请确保你正在编辑的 VMF 文件保存到同一文件夹中。你也可以尝试手动输入文件名。

Note.png 注意: 实例必须引用与主文件位于同一文件夹或子文件夹中的VMF文件。路径总是相对的。
Note.png 注意: 多个文件使用的实例通常放置在名为“instance”的子文件夹中,以避免混淆。
加载了 VMF 内容的实例

现在,“tutorial05”的内容已在新地图中引用,并用淡黄色橙色表示以将引用的内容与当前打开的 VMF 文件中的其他内容区分开。

即使当前打开的 VMF 文件从技术上讲仅包含一个 func_instance 实体,当你编译地图时,所有实例都会被暂时“展平”并包含在地图中。它们出现在最终的 BSP 文件中,就像它们已经在地图本身中一样。

尽管现在你需要两个 VMF 源文件来创建关卡,但是你可以为自己提供更大的编辑灵活性,因为你可以将内容保存在单独的存储桶(separate buckets)中。正如我们将在接下来的几篇教程中看到的那样,当你添加对多种游戏模式的支持或执行其他使你的地图更加复杂的事情时,这将变得非常方便。

修正名称和查看选项

再次查看属性对话框。

将文本放在 Fix Up Name(修复名称)字段中,可以为可命名实体指定前缀或后缀。如果你要让多个 func_instances 在分别定位实体的同时引用同一文件,这将非常方便。实际上,如果你未指定修正名称,则会自动提供一个修正名称,从而使你可以放置​​多个实例,同时仍然能够单独触发内部实体。

在本教程中,让我们将修复程序保留为空白,但是在 Deadline2 附加组件的警报车示例中可以找到一个很好的示例。

Tip.png 小技巧: 你可以从 Hammer 的 Instancing 菜单中切换实例的色调和整体可见性。现在将其保留为默认设置,因为我们很快将混合实例对象和非实例对象。

编辑

编辑实例

继续并选择实例化的几何图形,然后再次打开属性窗口。

在底部,你会注意到一个名为 Edit Instance(编辑实例)的按钮。

这将打开实例 VMF 文件进行编辑(如果尚未编辑),同时在两个文件之间保持完全相同的相对摄像机坐标。你进行的任何更改都会在你在新地图中切换时反映出来。

但是,出于我们的目的,我们希望“升级”旧版地图,并希望保留新文件中的更改,同时避免尽可能多地编辑实例。我们稍后会再次谈到这一点,尤其是在遍历多个游戏模式支持实体 info_gamemode 时。让我们继续进行 L4D2 特有的武器生成实体。