L4D Level Design/Your First L4D Level/zh

From Valve Developer Community
Jump to: navigation, search

译者:joyo_a(百度ID)

笔刷是使用Hammer的“固体工具”创建的简单3D造型。笔刷用于在地图里创建大多数大型表面,例如天花板和地板。现在我们将使用笔刷来创建一个简单的房间。

创建一个地板笔刷

绘画一个笔刷。
  1. 在左侧工具栏选择“固体工具”。
  2. 现在,在2D俯视图里左键点击并拖动至右下方(如下图所示)。
  3. 当你拖动时你应该看到一个长方形或正方形的虚线框。
  4. 创建一个512x512个单位的正方形并放开鼠标左键。
  5. 在你的键盘上按 Enter以创建你刚才画的笔刷。

要返回选择模式,在工具栏里点击“选择”图标或者按Esc键。

在选择了笔刷的选择模式下,你可以通过左键点击出现在笔刷的边界上的任何框,并将它们拖出或拖进来改变笔刷的大小。

让我们将笔刷的厚度由默认的64个单位减少至16个单位(我们将作为一个地板来使用)。要做到这个,我们需要改变网格的大小。

网格

网格被显示在所有2D视图里面。默认情况下,所有对象都会对齐到网格。尽管你可以关闭它,但是保留它却被认为是很好的行为习惯,因为它防止在你的地图上出现泄漏或者其它错误。

默认网格大小为64个单位,这意味着每个网格线相隔64个单位。当前网格的大小显示在Hammer窗口的底部的状态栏上。

  • 点击缩小网格图标Hammer SmallerGrid.png将使网格调整为一半大小。你也可以按[键来缩小网格大小。
  • 点击增大网格图标Hammer LargerGrid.png将使网格调整为两倍大小。你也可以按]键来增大网格大小。

要使网格大小降至16个单位,按[键两次。看下Hammer窗口右下角的状态栏并确认那里显示Grid: 16。如果没有显示的话,按[]直到显示为止。

调整地板

在侧视图中降低笔刷高度。

现在网格应该足够小了。

切换到右下方的视图。当你的鼠标在它上方时他应该标记为侧面。拖动笔刷的顶部边框并向下使它有16个单位厚。

移动笔刷

在任何2D视图里点击并拖动以移动笔刷。

一旦笔刷被创建你可以移动它们。选择Selection tool Hammer select.png并且鼠标在一个2d视图里的笔刷之上,保持清晰的处理。指针将变成四个箭头指向所有四个方向 FourArrows.png,表明移动对象的选项。

单击并拖动移动笔刷以便在任何2d视图里移动笔刷。释放后,笔刷将移动到那个位置。

在Hammer里配置选项。

你也可以用箭头(光标)键移动对象。要做到这一点,我们需要在Hammer设置里更改一项设置以便能允许使用方向键:

  1. 工具菜单并点击选项以打开配置Hammer对话框。
  2. 点击2D视图选项卡。
  3. 这里有其他设置,不过现在,我们只需要标记复选框Arrow keys nudge selected object/vertex
  4. OK确认更改并关闭选项。

现在让我们通过放置鼠标光标到侧面视图并按下一次下箭头以移动地面笔刷16个单位。

在侧视图里移动一个笔刷。
Note.png注意:你需要将你的地平面放在原点行的同一水平以便包含导航文件在内的东西能够工作。

在2D视图里导航

  • 您可以使用滚动条来获得视图。
  • 更快的方法,按住空格键然后左键点击并拖动以获得。
  • 使用鼠标滑轮来放大或缩小。

纹理

要在3D镜头视图中查看纹理,在3D镜头视图中的镜头文本上右键点击并选择3D纹理

在镜头视图中选择3D纹理模式。

在3D镜头视图中导航

在3D中移动有点不同于2D视图:

  • 按住空格和鼠标左键并拖动以便旋转镜头。
  • 按住空格和鼠标右键并拖动以便上/下左/右移动。
  • 按住空格和鼠标左右两个键并拖动以便向前向后移动。
  • 你也可以用WASD来分别向前移动向后移动向左平移向右平移
  • Z键切换“鼠标观察”模式的开关。移动你的鼠标光标到3D镜头视图的上方并按Z键。你现在可以移动你的鼠标了,就好像在游戏里面那样。
Note.png注意:W A S D这四个键可以与空格组合使用

3D相机视口中向上移动并向下看你刚刚创建的地板。

纹理栏里面的浏览按钮。

你会注意到有一个默认的纹理在你的地板上。你可能想更换它。要更换当前纹理,在纹理栏里面点击浏览按钮。

它会弹出纹理浏览器窗口。

通用的灰色开发者纹理。

在浏览器的底部的过滤的下拉列表框里,您可以根据名称过滤显示的纹理。在这个教程里,在下拉列表框里输入字词"dev_measure"(带下划线)。它将显示一个“开发者”纹理的列表,这使得更容易快速创建一些东西。

现在,找到名叫dev/dev_measuregeneric01b的纹理并双击它。


应用当前纹理到选择的笔刷。

它应该返回到编辑器的四个视图并将通用开发者纹理作为当前的纹理放置在纹理栏中。

在镜头视图里点击地板笔刷以选择之如果还没有被选择。它应该变成红色。

选择了这个笔刷后,在工具栏里点击Hammer ApplyCurrentTexture.png应用当前纹理图标以应用当前纹理到选择的笔刷。灰色开发者纹理应该显示在地板上,如图所示。

创建墙壁和天花板

现在让我们来看看如何创建房间的墙壁和天花板。最简单的方法就是“复制”地板笔刷。

复制

你也可以选择一个已存在的笔刷并复制来创建它们。

Note.png注意:复制前,你需要设置Arrow keys nudge selected object/vertex这个选项如果你在之前的教程没有这样做。你可以到Tools > Options > 2D Tab那里找到它。
复制笔刷以制作一间室。

要复制:

  1. 选择你已经创建的地板笔刷。
  2. 将你的光标移到侧面视图。
  3. 按住 Shift键并按下Up_arrow键以创建一个复制并向上移动一个单元格。

这将创建一个完全像现有地板上的地板刷。

您现在可以更改这个新画笔的大小和尺寸,以创建一个墙,抓住画笔上的角落手柄,并将其拖动到所需的大小。让我们来制作128个单位高和16个单位厚的墙壁吧。

Tip.png提示:要移动你所创建的笔刷,使用方向键或者单击并拖动笔刷的正中间来拖动到另外一个位置。

现在复制墙壁3次,以勾勒出地板。

复制地板以创建一个天花板。

复制地板笔刷1次并提高它成为天花板。

Tip.png提示:保持你的关卡清洁将变得非常重要,当你开始在游戏中运行它。不要有重叠的画笔(相互交叉的画笔)是一个好主意。这可能使得多个面相互绘制而在游戏里出现“深度冲突”。

删除笔刷

要删除一个笔刷,通过Selection tool Hammer select.png来选择它并按Delete键。

多重选择

将通用橙色开发者纹理应用到墙壁上。

你会注意到,在镜头视图中,如果你在房间内导航,很难知道发生了什么,因为所有的墙壁、地板和天花板都是使用相同的纹理。接下来我们将墙改变为不同的纹理。

你可以按住Ctrl键并在镜头视图中依次点击每一个墙壁来选择所有的墙壁。你必须使用Spacebar镜头控制(或者使用Z打开鼠标观察模式)来旋转镜头,这样你就能选择每一个墙壁。

选择了所有的墙壁后,点击纹理栏里的浏览按钮。这一次,选择当前纹理旁边的一个名叫dev/dev_measuregeneric01的橙色纹理。双击它以选择它并关闭浏览器窗口。

使用工具栏里的Hammer ApplyCurrentTexture.png工具来应用这个橙色纹理到墙壁上。

保存文件

要保存一个关卡,你可以使用Ctrl+S或者文件菜单下的保存

你需要为地图取一个文件名称,并选择要放置它的目录。

对于本教程,命名该地图为"tutorial01"并保存它到mapsrc目录,该目录默认在:

C:\Program Files\Steam\steamapps\common\left 4 dead\sdk_content\mapsrc\

你的目录可能会略有不同,这取决于你在哪里安装Steam。

包含的示例地图

当你去保存你的地图,你可能已经注意到mapsrc路径下的其他目录。Left 4 Dead Authoring Tools自带了一些示例地图来帮助你。(译注:内容已经过期,请无视。)

目录 内容
mapsrc\No Mercy Apartments 包含来自求生之路的“毫不留情”战役的示例地图。
mapsrc\standards 包含许多关于合作和对抗模式地图的标准内容的示例地图。
mapsrc\Your_First_L4D_Level_Tutorial 包含该教程的所有部分的完整版本。
mapsrc\zoo “风格向导”地图为农村和城市类型的求生之路地图。

有些时候,本教程将引导您到这些目录中的不同地图。

Tip.png提示:在这些当中,“Your_First_L4D_Level_Tutorial”可能是最直接有用的。如果你很难完成本教程的其中一个部分,你可以参考此目录中的文件以了解该部分的完成地图应该是什么样子的。

放置实体

选择实体。
放置一个info_survivor_position实体。

接下来我们将放置一个实体在我们的关卡中:

  1. 工具栏上选择Entity tool Mt-entities.png
  2. 一旦Entity tool Mt-entities.png被启用,在对象栏上的实体选择列表变为激活。
  3. 保持类别条目为实体
  4. 单击对象下拉列表上的箭头并选择info_survivor_position
  5. 现在,在镜头视图里导航到房间里面的中间。
  6. 左键点击地板以放置该实体。

这会在房间的中间放置一个info_survivor_position实体。

这个info_survivor_position实体的模型是弗朗西斯。他在求生之路里是最高的角色,所以这是用来放置以检查你的规模的一个好的实体。

放置灯光实体

现在我们将在地图里放置照明源:

  1. 再次选择实体工具
  2. 对象栏上的对象下拉列表里选择light
  3. 这一次,把灯放在天花板上(在弗朗西斯头上)。
  4. 点击在工具栏里的Selection tool Hammer select.png或者按Esc键来返回到选择模式。
灯光的对象属性。

接下来我们将改变灯光的一些设置。通过在镜头视图中双击以打开灯光的属性,或着选择它(左键单击它)然后按Alt+ Enter键。这将打开对象属性对话框。

对象属性里,你可以改变该实体的属性值。例如,你可以改变该灯光的亮度。点击Keyvalues下的亮度那行,然后你会见到在右边下拉菜单里的一个设置数据。这个灯光的亮度的默认设置为255 255 255 200。头三个数字代表RGB值(颜色),而最后一个数字代表光的强度。

你可以点击Pick Color按钮来选择一种颜色而不是输入数值。

拾取一种灯光颜色。

简单点击你想要的灯光颜色然后点击OK

这会返回灯光的对象属性对话框。如果选择了亮度行,你应该看到对亮度行的亮度和右侧的下拉字段所做的任何更改。

点击应用按钮以保存你对实体的更改,然后点击窗口右上方的“X”。

放置静态实体

一个静态实体的对象属性。

实体也包括道具如家具、装饰和建筑的复杂部分。这里有各种不同种类的道具。Prop_static实体是静态的实体——它们不能移动,没有动画,无法不能打开或关闭。这里也有prop_dynamic实体,它能移动,有动画,可以启动和禁止。这里也有prop_physics实体,玩家可以与他们进行交互和表现,就好像它们在现实世界中。

要放置一个道具:

  1. 再次选择Entity tool Mt-entities.png
  2. 转到对象栏,将对象字段更改为prop_static
  3. 指向弗朗西斯模型前面的地板并左键点击以放置一个静态实体。你会见到一个表示prop_static的红色的立方体在模型附加到它之前。
  4. 点击在工具栏里的Selection tool Hammer select.png或者按Esc键来返回到选择模式。
  5. 双击红色立方体以打开属性。
  6. 双击World Model字段以打开模型浏览器
Warning.png警告:第一次加载模型浏览器窗口,它可能花费一些时间来加载所有模型。它可能不会立即看起来像下面你看到的图像。如果你找不到你要找的模型,给它一分钟完成加载。

选择模型

在模型浏览器里选择桌子模型。
  1. 在对话框底部的Filter字段中,输入"table"。这将显示所有在其名称中包含单词“table”的模型。
  2. 向下滚动到命名的那个:
    "props_furniture\it_mkt_table2.mdl"。
    它应该看起来像显示的图像。
  3. 点击OK以选择它并关闭浏览器返回到对象属性对话框。现在,你应该在World Model行里看见模型的名字。
  4. 点击应用按钮以设置对实体的更改。
  5. 关闭属性窗口。

你将在编辑器中的任何视图中看到刚刚放在房间中的桌子。

移动实体

将桌子放在房间的角落。

你可以像移动笔刷一样移动我们的桌子实体。在所选实体的边框内单击并用鼠标拖动它或者将鼠标放在任何视图上并用键盘上的方向键来移动它们。

将桌子移动到我们房间的一个角落,并将其放置在地板上。

旋转实体

从对象列表中选择散弹枪。

接下来,我们将尝试在我们房间的桌子上放置一个泵霰弹枪,并旋转它,使它看起来像在一个自然的位置。

工具栏里点击Entity tool Mt-entities.png

对象下的下拉菜单中选择weapon_pumpshotgun_spawn

放置weapon_pumpshotgun_spawn实体。

点击桌面下方的地板以放置散弹枪实体。

Note.png注意:在镜头视图里,实体只能被放置在笔刷表面。
角处的圆圈表示对象已准备好旋转。
在任何2D视图中单击并拖动圆形以旋转对象。

要旋转对象,你只需使用Selection tool Hammer select.png选择你要旋转的对象,然后在对象上单击一次。你应该看到对象周围的角上的圆。将鼠标悬停在任意2D视图中的圆上,然后单击并拖动以旋转对象。

在正视图中旋转散弹枪

使用鼠标滚轮放大正视图,然后在散弹枪模型的边界框内单击一次使其四个角上每一个圆圈突出显示。

左键单击并逆时针拖动以旋转散弹枪,使它躺在它的边上。

减小网格间距。

放大视图并按[键4次以减小网格间距。在散弹枪的边界框内单击并拖动,将其移动到桌面顶部。你不必把它放在正上方,只要它在桌子上面,而不是在里面。

在俯视图里旋转散弹枪。

视图里,在散弹枪的边界框内单击,直到它再次处于旋转模式。 左键单击并逆时针拖动其中一个角,直到散弹枪几乎平行于桌子。

现在你会有一个散弹枪可以从桌子上拿起。

添加到你的房间

创建走廊和第二个房间。

在你的房间使用复制、缩放和移动你目前有的笔刷,你现在可以建立一个走廊和与第一个房间相同的另一个房间。

确保在走廊上的两个房间都开放。

你还可以复制第一个房间中的灯光,并将其移动到第二个房间的中间。

Tip.png提示:记住你可以通过按住 Shift键复制你的关卡中的任何对象,然后通过拖动或使用箭头键移动对象。它比从头开始创建对象要快得多。你甚至可以选择多个对象,并一起复制它们。这是一个比使用Carve工具创建通道更安全的策略。

在你完成了你的第二个房间和走廊,保存关卡为“tutorial01.vmf”如果你还没有保存。

添加一个玩家出生点

最后我们要做的是添加一个“玩家出生点”实体来测试地图。这将是玩家将在一个简单的关卡里出生的地方。

放置一个info_player_start。
  1. 工具栏里选择Entity tool Mt-entities.png
  2. 对象下拉列表中点击info_player_start
  3. 现在,在“相机”视图中导航到弗朗西斯模型旁边的房间中心。
  4. 左键点击地板以放置玩家出生点。

确切的位置不是关键的。只要确保它在这个一般的位置。如果你愿意,你甚至可以旋转它到另一个方向,那么当玩家出生时,他们将面朝那个方向。

在游戏中运行关卡

更改Run Map参数以匹配这些设置,然后点击OK

你已经保存你的地图,但是在游戏里试玩之前你也需要编译它。

当一个地图被编译后,你刚保存的.VMF格式的文件会被转换为用于游戏的.BSP格式。处理几何形状,并且利用若干编译程序预先计算适当的照明和阴影。

  • 打开File菜单,然后选择Run Map...或者按F9键。
  • Run Map对话框将被打开。
  • 该对话框用来设置一些基本的编译参数。
    1. 确保在Run BSPRun VISRun RAD设置下面的Normal已经被选中。
    2. Additional game parameters:下面,确保这些设置存在,如果没有就输入它们:
      -toconsole -dev -console +sv_lan 1
    3. 现在点击OK按钮来开始地图编译过程。

Compile Process Window将显示编译过程。编译完成后,游戏会自动启动并加载你的地图。

Note.png注意:如果你想使用高动态范围照明来编译,只需选中HDR复选框。编译地图的时间将是两倍,但这是完全正常的。
在对话框中点击Continue

你的关卡在编译后应该会在游戏里加载。可能需要一两分钟。

  • 当游戏启动后,“Map is unplayable!”对话框会立即出现。这是好的,因为我们还没有为我们的关卡创建导航文件。你将在本教程后面了解导航文件。
  • Continue按钮。
在游戏中运行地图。

运行地图的屏幕截图。请注意,因为没有导航文件,幸存者电脑将不会完全响应。

Tip.png提示:当你编译并运行它通过Run Map命令时,你的.vmf源地图会被自动保存到硬盘。然而,每隔一段时间保存一次是一个好主意,这样你就不会丢失任何进度。

开发人员控制台

制作求生之路关卡有时需要使用键入到Developer Console窗口中的命令。控制台也可以用来做一些事情例如产生感染者来测试你的关卡。

开启开发人员控制台。

如果你还没有,请确保控制台在游戏中启用:

  1. 在游戏中按Esc键。
  2. 点击Options,然后Keyboard/Mouse
  3. 点击Allow Developer Console并选择“Enabled”。
  4. 点击Done按钮。
  5. 点击Return to Game

使用开发人员控制台:

  1. 关闭开发者控制台`(波浪号)。
  2. 键入任何控制台命令,然后按 Enter键。
  3. 使用`再次隐藏控制台。

穿墙模式

有一个控制台命令是noclip(穿墙)模式,你会发现它非常有用。这种模式会让你在地图里自由飞行而不被地图中的任何东西阻挡(“clipped”)。它在大地图中快速穿越时很有用。

要进入noclip模式:

  • `进入控制台。
  • 在控制台输入noclip并按 Enter
  • 飞来飞去。
  • 再次输入noclip以退出穿墙模式并且正常地在地图中四处走动。

一些有用的控制台命令

这里有很多可用的控制台命令。这里有一些例子。

sv_cheats 1
打开作弊。对于许多控制台命令是必需的。
director_stop
停止AI导演系统(不产生普通感染者或者特殊感染者)。
director_start
启动AI导演系统(恢复产生)。
nb_delete_all
删除所有存在的NPC(感染者和幸存者)。
map <name of map>
载入地图或重新载入你所在的地图。
changelevel <name of map>
在继续会话时加载地图。
god 1
为所有幸存者打开上帝模式。这时幸存者是无敌的。
noclip
允许你飞越世界。
z_spawn
在鼠标所在的地方产生一个普通感染者。
z_spawn smoker
产生一个Smoker。
z_spawn hunter
产生一个Hunter。
z_spawn boomer
产生一个Boomer。
z_spawn tank
产生一个Tank。
z_spawn witch
产生一个Witch。
nb_blind 1
让感染者看不见玩家。
Note.png注意:nb_blind 1并非完全看不见。如果你碰到感染者,他会攻击。如果出现感染者暴动,他们会在你的后面出现。
sb_stop 1
停止幸存者电脑AI——电脑幸存者会停止行动。
director_force_panic_event
触发一个尸潮事件(感染者暴动)。