你的第一个关卡(Portal 2)

From Valve Developer Community
Jump to navigation Jump to search
English (en)Deutsch (de)Español (es)Magyar (hu)한국어 (ko)Русский (ru)中文 (zh)Translate (Translate)
Portal 2关卡设计介绍

brush(en)(刷子)是在Hammer中用Block工具创建的3D物体。Brush用来创建天花板和地板之类大块的表面的。我们将使用brush来创建一个房间。

用brush创建地板

绘制一个brush.
  1. 在左边的Tool工具栏中, 选择Hammer block.png Block Tool.
  2. 然后,在Top 2D view(顶视图)中,单击左键并向右下拖动。如图所示。
  3. 你应该可以看到你拖动出来的一个虚线的矩形框。
  4. 创建一个512x512单位大小的方块.
  5. 按键盘上的 Enter 键创建出brush。

回到选择模式:点击工具栏上的Hammer select.png Selection tool 图标或者按 Esc 键.

在选择模式中,选中刚才的那个brush,左键单击边缘的小方块可以改变brush的大小。

现在我们来调整这个brush的厚度(为了用来做地板),从64单位调整到16。但首先要调整grid(网格)的大小。

关于网格

grid出现在每个2D视图。默认情况下,任何物体都会对齐到网格(grid)。虽然你可以关闭对齐到网格,但是还是留着比较好,以防止在地图中出现泄漏(leak)之类的错误。

默认网格大小是64单位, 也就是说线之间的间隔是64单位。当前网格大小在Hammer窗口的下面状态栏中显示着。

  • 点击 Smaller Grid 图标 Hammer SmallerGrid.png 使网格缩小一倍。也可以用 [ 键调整。
  • 点击 Larger Grid 图标 Hammer LargerGrid.png 使网格放大一倍。也可以用 ] 键调整。

[ 键两次,使网格缩小到16单位。确保Hammer窗口状态栏中显示的是Grid: 16。如果不是的话,按 [] 键来调整。

调整地板的大小

在侧视图中降低brush的高度。

现在网格应该足够小了。

看右下方的视图。鼠标移上去的时候,应该显示Side标签。拖动brush的上边缘,令它的厚度为16单位。

移动brush

在2D视图的点击并拖动来移动brush。

你可以移动创建出来的brush。选择 Selection Tool Hammer select.png (选择工具),鼠标移动到2D视图中的brush上。光标会变成一个四方向箭头FourArrows.png,以表示可以移动物体。

在2D视图中点击并拖动brush。一旦释放,brush就移动到新的位置了。

Hammer的选项

也可以使用方向键移动物体。但首先要设置一下Hammer的选项,方法如下:

  1. Tools 菜单选择 Options,出现 Configure Hammer 对话框。
  2. 选择 2D Views 面板.
  3. 设置选项有很多,无视之。选中 Arrow keys nudge selected object/vertex
  4. OK 确认。

现在把这个地板brush,在Side视图中向下移动16单位。(按 一次)

在侧视图中向下移动brush
Note.png注意:您需要将地平面与原点线放在同一水平面上,以便包含的导航文件可以正常工作。

在2D视图中导航

  • 滚动条可以平移视图。
  • 更好的方法是,按住 Space 键,单击左键并平移。
  • 使用鼠标滚轮来缩放。

材质

要在3D Camera视图中看到贴图, 右击3D Camera视图上 camera 文本,选择 3D Textured

在3D Camera视图中选择3D Texture模式

在3D Camera视图中导航

在3D中移动和2D视图中有所不同:

  • 按住 Space 键,并拖动鼠标左键旋转镜头。
  • 按住 Space 键,并拖动鼠标右键,用来上下左右移动镜头。
  • 按住 Space 键,并同时按住鼠标左右键进行拖动,来前后移动镜头。
  • 按住 Space 键时,也可以用 W, A, S, 和 D 键,来移动镜头。
  • Z 键,用来开关 "mouse look" 模式。切换到3D Camera视图,并按下 Z 键。就可以像在游戏中那样用鼠标控制镜头了。
Note.png注意:W A S D键可以与Space导航结合使用

3D Camera 视图中向上移动,并查看你刚才创建的地板。

Texture面板上的Browse按钮。

你会看到地板的贴图是默认的。 改变贴图的方法是,点击在 Texture 面板的 Browse按钮。

会打开 Texture Browser 窗口。

一般的灰色开发者纹理。

在底部的 Filter 栏,可以按照名字来过滤贴图。在这个教程中,输入 "dev_measure"(包含下划线)。就会有一堆“开发者”贴图,来辅助创建东西。

选择 dev/dev_measuregeneric01b 并双击。


将当前纹理应用到选定的brush上。

这应该返回编辑器的4个视图,并将通用的开发人员纹理作为当前的纹理放在Texture面板中。

选择地板brush,如果它还没有被选中,通过在相机视窗点击它。 它应该变红。

选择brush后, 点击Tool面板上的Hammer ApplyCurrentTexture.png Apply current texture 图标将当前纹理应用于选区。 灰色开发者纹理应该出现在地板上,如图所示。

创建墙壁和天花板

现在让我们来看看如何创建墙壁和天花板。最简单的方法是复制地板brush。

复制

你也可以选择一个现有的brush并复制它来创建它们。

Note.png注意:要复制,你需要设置Arrow keys nudge selected object/vertex选项,如果你在之前的教程中没有这样做。你可以在Tools > Options > 2D Tab下找到它。
复制brush来创造一个房间。

复制:

  1. 选择您创建的地板brush。
  2. 将光标移到Side 视图.
  3. 按住 Shift键,并按键创建一个副本,并向上移动一个网格单元。

这将在现有地板的顶部创建与地板完全相同的brush。

现在,您可以更改此新brush的大小和尺寸,以创建一堵墙,抓住brush上的角柄并将其拖动到所需的大小。 让我们将墙高128单位,厚16单位。

Tip.png提示:要移动创建的brush,请使用箭头键或简单地在brush中心内单击并拖动以将其拖动到其他位置。

现在再将墙壁重复3次以勾勒地板轮廓。

复制地板以创建天花板。

再将地板brush复制一遍,然后将其抬起成为天花板。

Tip.png提示:在游戏中开始运行时,保持关卡整洁非常重要。 最好不要使用重叠的brush(彼此相交的brush)。 这可能会导致游戏中发生“z-fighting”,在这种情况下,多个表面会相互争夺显示。

删除笔刷

要删除一个brush, 用 Selection Tool Hammer select.png 选中它并按下 Delete 键.

多选

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

您会注意到,在“Camera”视口中,如果您在房间内导航,由于所有的墙壁,地板和天花板都具有相同的纹理,因此很难分辨发生了什么。 接下来,我们将墙壁更改为其他纹理。

通过按住Ctrl键,你可以在“Camera”视口中每次单击一个来选择所有墙。 您还必须使用SPACE键与鼠标左键来控制摄像头旋转,以便可以看到并选择每个墙。

选中所有墙后,单击“Current texture”栏中的“Browse”按钮。 这次,选择当前纹理旁边的橙色纹理,标签为dev/dev_measuregeneric01。双击将其选中,浏览窗口会自动关闭。

使用 Tool 栏中的 Hammer ApplyCurrentTexture.png 工具给墙壁应用橙色纹理。

文件保存

想要保存文件, 你可以用快捷键Ctrl+S或者在File菜单栏里找到Save

你得给地图取一个名字,并选择放置它的目录。

在本教材中将文件命名为"tutorial01"并将其保存到mapsrc目录中,默认位于

C:\Program Files\Steam\steamapps\common\portal 2\sdk_content\maps\

路径可能和默认给出的略有不同,具体取决于Steam安装位置。

示例地图

当你保存地图时,你也许注意到maps路径下的其他文件。 Portal 2创作工具附带了一些示例地图来帮助。

Directory Contents
maps\mp_coop_doors 简单的合作地图。
maps\mp_coop_paint_red_racer 带有推进凝胶的合作地图。
maps\sp_a2_column_blocker 带有强光桥和一些其他的东西的单人地图。
maps\sp_a2_trust_fling 有空中信仰板的单人地图
maps\sp_a3_speed_ramp 含推进凝胶单人地图。
maps\sp_a4_laser_catapult 带旋涡、激光和空中信仰板的单人地图。
maps\zoo_mechanics 包含《传送门2》中大部分游戏机制的地图。

放置实体

选择实体。
放置一个info_player_start。

接下来,我们该在地图里放第一个实体了:

  1. 工具栏里按下 Hammer entity.png 实体工具
  2. 启用实体工具后, 对象栏上的实体选择列表将变为活动状态。(看左图)
  3. 保持Categories那一栏是Entities。(看左图)
  4. 单击Objects的下拉列表并选择info_player_start。(一般Hammer默认就是这实体, 若不是自己找)
  5. 现在, 在3D视口中来到房间内部的中间。
  6. 左键单击地面以放置实体

这样, 一个info_player_start实体就出现在房间中央了。


放置一个光源

现在我们将在地图上放置一个光源:

  1. 再次选择 Entity Tool
  2. 在对象栏的Objects的下拉列表里面找到light(点光源实体)。
  3. 现在将光源放到天花板下边 (高于玩家头顶)。
  4. 工具栏点击Hammer select.png选择工具回到选择模式或者按下Esc键。
Note.png注意:如果放置位置距离天花板过于近, 或以后放置灯模型时距离太近会导致出现亮光斑或模型太亮等问题, 若出现此情况可以稍微将光放下面一点。(译者注)
灯光的属性。

接下来我们要在灯上动一些设置了。 通过在3D视口双击它或先选中(左键单击)并按下Alt+ Enter来查看灯的属性。 其实是打开对象属性对话框(或直接叫它属性面板)。

属性面板中, 你可以改变实体的各种属性。 比如你可以更改灯的Brightness(用来控制光的颜色和强度)。 点击Keyvalues下面的Brightness那行, 然后你可以看见右侧菜单上的一组数字, 默认是 255 255 255 200。 前三个数字表示RGB值( R红 G绿 B蓝 ), 最后一个数字表示光的强度。

单击"选择颜色"按钮来选择颜色, 比直接输入数字更方便直观。

Picking a color for a light.

找到你最想要的灯光颜色, 然后点击"OK"。

这时你会回到光源的属性面板。 如果选择了"Brightness"那一行, 你应该可以看到右侧菜单你对亮度所做的任何更改。

单击“Apply”按钮设置对实体的更改,然后单击窗口右上角的"X"关闭对话框。(有时候按 Enter比Apply方便些)

Note.png注意:有很些开发者不会用此方法去放置想要的实体, 选中实体工具后直接放置, 再在属性面板改class等有时会更简便, 根据情况使用不同方法。(译者注)

放置一个 prop_static

prop_static实体的属性。

实体当然还包括家具、装饰和建筑复杂部分等道具, 且有各种不同类型的道具。 Prop_static实体是静态的道具 – 它们不可以移动、加入动画、打开或关闭。 它的"反义实体"prop_dynamic实体可以移动、设置动画、激活或关闭。 而prop_physics实体可以使玩家像在现实世界中一样与他们互动并表现出物理特性。

放置一个道具:

  1. 再一次选择实体工具
  2. 对象栏并改变Objectsprop_static
  3. 指向Francis模型前面的地板,然后左键单击以放置prop_static。 你将看到一个红色立方体, 意为没上模型前的prop_static。(Francis是求生之路角色之一, 是玩家出生点实体hammer显示模型,也许是官方直接复制求生之路教程忘记改了, 不用管,传送门2是你的小绿人。另外, 如果prop_static没上模型, 实体在游戏里不可见; 模型错误会显示传送门2特有的蓝ERROR)
  4. 还是在工具栏点击Hammer select.png选择工具或者按下Esc键。
  5. 双击红色方块打开属性面板或选中后按下Alt+ Enter
  6. 双击 World Model以打开模型浏览器.
Warning.png警告:首次加载"模型浏览器"窗口时,可能需要一段时间才能加载所有模型。它可能不会看起来像在所给的图像, 而是异常的白色等, 此时重启模型浏览器。如果你找不到你要找的模型,给它一分钟的时间来完成加载。(原板Hammer特色)

选择模型:

在模型浏览器中选择凝胶滴落器模型。
  1. 在模型浏览器底部的Filter(筛选器)中写"paint", 这样就只显示名称中有"paint"一词的所有模型。
  2. 向下滚动找到一个模型:
    "props_underground\underground_paintdropper.mdl".
    如果没有出意外, 它应该长得和所示图像一样。
  3. 单击OK选择这个模型并关闭模型浏览器, 然后返回属性面板对话框。 你现在应该可以在“World Model”中看到模型名称。
  4. 单击“Apply”按钮以设置对实体的更改。
  5. 关闭属性面板

你可以在编辑器中的任何视口中看到刚才放置在房间中的凝胶滴落器。

移动实体

你可以像搬家一样移动像凝胶滴落器这样的实体。 在选定实体的边界框内单击并拖动,用鼠标移动它,或将鼠标放在任何视口上,然后使用键盘上的箭头键移动它们。在Hammer++中支持3D视口实体的移动。

旋转实体

要旋转对象,只需使用选择工具 Hammer select.png并单击对象一次。 你理论上可以看到物体的四个角变成了空心圆(○), 之后将鼠标悬停在任何2D视口中的圆上,然后按住并拖动以旋转对象。

使用鼠标滚轮放大视口, 在凝胶滴落器模型的边界框内单击一次, 使其四个角都用圆圈突出显示。

左键单击并逆时针拖动, 以旋转凝胶滴落器, 使其可以从天花板上滴落凝胶。

在游戏中加载场景

更改Run Map的设置, 然后点击OK

即使你已保存了地图, 但在游戏引擎打开之前, 你还得编译地图。

编译地图时, 它会从刚保存的原始 .VMF(en) 文件转换为游戏引擎使用的 .BSP(en) 格式。经过几何处理, 并使用多个编译程序预先计算出适当的照明和阴影。

  • 打开File菜单,并点击Run Map..., 或按下F9键。
  • Run Map对话框打开。
  • 这个对话框是用于设置一些基本的编译参数。
    1. 确保Run BSP,Run VISRun RAD设置选择了normal
    2. 确保Additional game parameters:下面有以下几个设置, 若没有请打入:
      -toconsole -dev -console +sv_lan 1(在传送门2中有点过于繁琐, 你甚至不需要这些设置,-toconsole和-console是打开控制台,-dev是开发者模式, +sv_lan 1是仅局域网, 译者注)
    3. 现在点击OK按钮开始编译地图。
Warning.png警告:如果你的地图泄露(en)或有其他错误, 可能导致编译失败。(译者注)

编译进程窗口将显示编译的进度。编译完成后, 您正在映射的游戏将自动启动, 并将您的地图加载到引擎中。

Note.png注意:如果你想带有High Dynamic Range(HDR)(en)光照, 只需要勾上HDR复选框。 编译地图的时间将是原来的两倍, 这是完全正常的。

编译完成后, 游戏中应该会加载地图, 可能需要一两分钟。

在游戏中运行的地图。

开发者控制台

为Portal 2做关卡有时需要开发者控制台(en)命令辅助。 控制台可以用来做一些特别的事情, 比如生成立方体和炮塔来测试你的关卡。

激活开发者控制台。(英文界面)

如果你还没有启用控制台, 请按照以下步骤做:

  1. 在游戏中按下Esc
  2. 点击选项, 之后按键盘/鼠标
  3. 点击允许使用开发者控制台并选择"已启用"。(游戏内的翻译还是差点味)
  4. 点击完成按钮。
  5. 点击返回

使用开发者控制台:

  1. `打开控制台(波浪键)。
  2. 输入控制台命令,然后按 Enter键。
  3. 再次按`隐藏控制台。

穿墙模式

记一个非常有用的控制台命令noclip。这是一种可以让你在水平面上飞行的模式, 而不会被水平面上的任何东西阻挡。跳关这块, 非常好用。(此命令需要sv_cheats 1)

进入noclip模式:

  • 按下`打开控制台。
  • 在控制台里输入sv_cheats 1并按下 Enter。(进入游戏只需要输入一次, 目的在于设置服务器可以开启作弊, 若noclip失效再输入此命令尝试)
  • 在控制台里输入noclip并按下 Enter
  • 在关卡附近飞飞。
  • 再次输入noclip退出穿墙模式并正常地在关卡里走走。
  • 您可以通过按下绑定控制台命令中的按钮来切换穿墙。 比如按下鼠标中间切换穿墙指令bind mouse3 noclip

一些有用的控制台命令

有很多可以使用的控制台指令,下面是一些例子:

sv_cheats 1
打开作弊,这样就可以使用很多平时不能使用的指令。
map <地图名>
打开一个地图。
changelevel <地图名>
在已有的会话(通俗点说就是不关闭服务器)的情况下更换地图。
god
开启/关闭无敌。
noclip
开启/关闭穿墙飞行。(需要sv_cheats 1)

入门