L4D关卡制作/对抗地图

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)Deutsch (de)Русский (ru)中文 (zh)Translate (Translate)

译者:joyo_a(百度ID)最后更新者:大康(2021年10月6日)

与求生之路一起发行的对抗或者“VS”地图是合作战役地图的修改版本。

基础

你需要修改一些东西使地图更适合VS游戏。

  • 感染者阵营的玩家可以在幸存者无法到达的地方出生。你需要阻挡感染者阵营或者掩盖他们不应该看到的东西。
  • 需要添加针对感染者阵营阻塞的路线的“可见提示”。
  • 感染者阵营的玩家应该能看到感染者专用的梯子。
  • 易碎墙需要为感染者阵营提供可见提示。
  • 所有复活房间应该被移除。在对抗里面你不可能从复活房间中营救幸存者。
  • 在终点安全室的急救包应该被移除。生命值在对抗中是作为计分项的,因此我们会删除在终点安全室里的所有急救包。
  • 在救援关里,实体env_outtro_stats(en)应该被移除。
  • 只能由幸存者触发的触发器都应该有一个“过滤器”,使得感染者玩家不能触发它们。

你可以打开“tutorial_standards_vs.vmf”地图以查看这些示例。

阻挡感染者阵营

求生之路1

使用“Player Clip”纹理的笔刷意味者它们会阻止幸存者玩家。使用“Clip”纹理的笔刷意味者它们会阻止所有人。而你需要使用一个名为“func_playerinfected_clip(en)”的笔刷实体来阻挡感染者玩家。

要创建一个func_playerinfected_clip,先使用Block Tool创建一个笔刷。

将“tools/toolsnodraw”纹理应用到整个笔刷。

tools/toolsnodraw纹理。

选择笔刷,然后按Ctrl+T将其变成笔刷实体。

更改Class为“func_playerinfected_clip”。

func_playerinfected_clip属性。

点击Apply

通常,这些实体被放置在地图上是为了防止hunter跳出地图。我们还可以添加一些栅栏或墙壁来保证感染者玩家在里面。

如果有一些阻挡感染者玩家的地方,但是他们实质上跑进了一个看不见的墙壁,那么你需要放置一些可见提示,让玩家不要再试图过去。

使用Block Tool创建另一个笔刷。

应用“tools/tools_nodraw”纹理。

进入Texture application mode

选择笔刷的正面。

点击Face Edit Sheet对话框中的Browse按钮。

选择“tools/wrongway”纹理。

tools/wrongway纹理。

双击它使其成为当前纹理。

Face Edit Sheet中点击Apply将纹理应用到笔刷正面。

笔刷上的错误道路纹理。

转到Selection Mode并选择整个笔刷。

Ctrl+T将其成为笔刷实体。

更改Class为“func_illusionary(en)”。

func_illusionary属性。

当玩家走到错误道路时将显示“错误道路”纹理。

Note.png注意:func_illusionary笔刷实体在低端电脑上可能是昂贵的。谨慎使用它,而不是覆盖地图的每个阻挡感染者玩家的部分。

求生之路2

在求生之路2中,“NPC Clip”纹理会阻止感染者玩家,因此不需要实体。

求生之路2还包含“Wrong way”标志的替代方案。
如果你更喜欢使用工具纹理,请在 func_brush(en) 上使用,因为func_illusionary在较新的引擎中已弃用。

使用模型"models\props_placeable\wrong_way.mdl"代替工具纹理。或者使用"models\props_misc\wrongway_sign01.mdl"作为一个单一的告示牌。 "models\props_misc\wrongway_sign01.mdl"甚至还有一个只有生还者玩家才能看到的第二层皮肤,如果你需要的话

让感染者梯子可见

求生之路中的对抗地图都有一个动画纹理,其可以显示感染者玩家可以攀爬的某些区域。

纹理应用(Texture application)模式中选择func_ladder(en)的正面,然后点击Browse按钮。

选择纹理“tools/climb_versus”。

tools/climb_versus纹理。

双击它使其成为当前纹理。

点击Face Edit Sheet中的Apply将其应用到func_ladder的正面。

将climb_versus纹理应用到感染者专用梯子。
Note.png注意:我们改变了纹理尺寸(Texture scale),使得梯子能在func_ladder面里面整齐地显示攀爬动画。该示例已缩放为0.35 x 0.35。它还使用了Justify L按钮用来对齐面的左边上的纹理。
Tip.png提示:可以使用“Fit”按钮来获得X尺寸。然后只需手动将Y尺寸编辑为相同的值。

为易碎墙提供可见提示

感染者有时会在易碎墙后面出生,或许他们想要找到另一种途径来到幸存者身边。我们将一个func_illusionary笔刷实体放在任何易碎墙的地方,这样感染者玩家就能知道他们能够以幽灵模式穿过那里或者可以在那里打破墙壁。

Block Tool创建一个笔刷。

成形并定位使其比易碎墙笔刷实体稍厚。

应用“tools/tools_nodraw”纹理到整个笔刷。

进入纹理应用模式(Texture application mode)并选择笔刷的正面和背面。(你可以在左键单击时按住Ctrl键选择多个面。)

点击Face Edit Sheet中的Browse按钮。

选择纹理“effects/tankwall”。

effects/tankwall纹理。

双击它使其成为当前纹理。

点击Face Edit Sheet中的Apply按钮将其应用到笔刷的正面和背面。

在面上应用tank wall纹理。

进入Selection模式并选择整个笔刷。

Ctrl+T将笔刷转换成笔刷实体。

更改Class为“func_illusionary”并点击Apply

func_illusionary属性。

更改Name为“breakwall_illusionary”。

点击Apply并关闭属性窗口。

转到易碎墙,然后双击它以打开其属性。

切换到Outputs选项卡。

func_breakable的Outputs选项卡。

添加以下输出:

  • My output named:“OnBreak”
  • Targets entities named:“breakwall_illusionary”
  • Via this input:“Kill”

一旦墙被破坏将清除墙壁的可见提示。

将过滤器添加到触发笔刷

如果你的地图中有任何触发笔刷,如trigger_once笔刷,并且在flag里勾选了“Clients”,则需要添加一个过滤器使得只有幸存者才能触发它们。

梯子触发的Flags选项卡。

如果你在触发笔刷上打开属性并切换到Flags选项卡,请检查它是否已经勾选了Clients复选框。

如果你只想幸存者能够触发这个笔刷,那么你需要按照这些步骤。

转到Entity Tool并从Objects列表中选择“filter_activator_team(en)”。

从对象(Objects)列表中选择filter_activator_team。

filter_activator_team放在触发笔刷附近。

打开其属性。

切换Filter Team Number为Survivor。

更改Name为“survivor_filter”。

更改Filter Team Number为“Survivor”。

打开触发笔刷的属性。

指定survivor_filter到该触发。

更改Filter Name为“survivor_filter”。

删除非对抗实体

在Hammer中找到实体的简单方法是使用Entity Report工具。

Map菜单下,选择Entity Report...

Map菜单中选择Entity Report

你可以搜索特定类别的实体。

从By class列表中选择env_outtro_stats。

点击“By class:”旁边的复选框。

从列表中选择“env_outtro_stats”

这将创建一个匹配该类别的实体列表。然后,你可以在列表中的实体上进行选择并转到其位置,或将其删除,或打开其属性。

删除env_outtro_stats实体。

在地图中查找并删除所有“info_survivor_rescue(en)”实体。在对抗地图里是没有幸存者复活点的。

Note.png注意:如果你删除了复活房间,请不要忘记进行导航编辑。如果你删除了info_survivor_rescue实体,则将需要执行nav_analyze以便删除“RESCUE_CLOSET”这个导航网格属性。