欢迎光临散文网 会员登陆 & 注册

【转载熟肉】Hammer教程V2系列-起源引擎地图制作

2023-01-29 16:35 作者:海卓治  | 我要投稿

EP1-EP4

Hammer编译日志解释器,可以准确找出编译日志所反馈的问题,并给出解决方案:https://www.interlopers.net/errors/?page=errors&params=

EP1-EP4在本编集当中并没有,但可以看其他人做的熟肉。由于内容非常基础,不多做赘述,只就一些重点内容进行说明。

快捷键并不需要全部记忆,只需要记住几个常用的快捷键即可。EP1-EP4所给出的快捷键都可以通过菜单或工具栏的提示直接找到,因此不再赘述。

  • 在3D视图按住Space+鼠标左键,此时按住WSAD或移动鼠标可以像在游戏当中那样自由移动。无法移动的话,鼠标点一下2D视图再点回3D视图即可解决。
  • 在3D视图的特定角度,或2D视图当中按方向键,可以让物体移动一格子。
  • 接上文,Ctrl+快捷键可以对移动进行微调,单位为1HU。
  • [ ](方括号键)可以调节格子的密度,通常16最佳。密度可以从右下角的Grid看到。
  • 按住Alt再拖动物体可以对物体进行微调,此时无视格子。
  • Ctrl+T可以快速让固体转换为func_details(当然也可以转换为其他实体),对快速优化地图来说相当重要。
  • Ctrl+E可以让2D视图聚焦于在3D视图中选中的物体,方便在2D视图当中进行编辑。反之,Ctrl+Shift+E可以让3D视图聚焦选中的物体。
  • 在2D视图当中点击已选中的物体,可以在更改大小、变动角度、倾斜当中进行调整。如果你用的是Hammer++的话,在3D视图中直接对选中的物体按鼠标右键也可以。
  • H:隐藏对象;U:显示所有隐藏的对象。对于一些地图的精修十分有用。
  • Shift+拖动:快速复制。
  • Shift+L:以Z轴(上下)为基准快速旋转90度。需要在拖动物体完毕的情况下使用。不过这对于180度的圆弧来说似乎没什么用。暂不清楚其工作机制。
  • Shift+Ctrl+V:原地粘贴。可以批量复制、平移、旋转之类。

这里说一下Hammer++,对于Fistful of Frags玩家来说,该编辑器可以用。编辑完全没问题,而编译的时候有的人会反映不行,这时候就直接用回Hammer吧,机制什么的我也没搞明白。

或者说你可以理解为Hammer++是一个追求高速和快捷的编辑器,而Hammer是一个更加追求稳定性的编辑器。

Skybox是六面都涂,而其他的面能涂nodraw就涂nodraw,这样能节省性能。此外,如果你地图当中的天空看不到应有的天空,取而代之的是存在大量残影,首先考虑是否存在Leak。

EP5

实体工具为 Shift+E(不过左边的工具栏中也可以直接找到,我就没记)。

实体三大类型:

  • static
  • dynamic (override)
  • physics (override)

最好先打开模型浏览器,看看info当中该模型适合用于什么类型,再作出决定。

碰撞模型可以从软件顶端靠右的「CM」按钮查看,有的模型不存在碰撞模型。

static不会移动,也无法用来制作动画。也不会受到外部因素影响,相当于该物体就是地图固体或地形的一部分。

至于dynamic,如果将hold animation设定为开,那么模型的动画只会表现一次。况且在Fistful of Frags地图制作当中并不存在该参数,因此不用过多考虑。这里作者翻译出错了,如果按照中文含义来读,那么就会理解为相反的意思。

physics就是玩家可以直接拿起来的道具。在模型浏览器当中,可以看到该模型的本身的重量,而在编辑器当中设定的重量就是其倍数。

带上_override的作用就是将原先不支持该类型的模型强制使用为该类型。由于static没有override,因此无法对不支持static的模型强制使用static类型。

(FOF特有内容)踢出道具造成的伤害只与道具本身的重量有关,而重量乘数会影响踢出去的速度,且当乘数>=3时,无法拿起。

(FOF特有内容)对于炸药桶,如果使用physics_override的话,将失去其爆炸的属性;如果使用physics的话,就无法捡起来。此时应该使用physics_multiplayer。

EP6

潜在可见集是指从一个给定的位置可能可见的视叶(visleaf,也就是在地图当中用来渲染的一个个小部分)的集合。它的能见度测量并不精确,但由于被预先编入地图,它速度很快。它构成了许多运行时测试的基础,包括网络过滤和渲染控制。

在编译时可以查看vvis.exe选项下的numportal数量,该参数代表编译时处理了多少个子空间。通常情况下,如果该参数超过3000,编译时间就会超过1分钟;该参数超过5000者,编译时间就会超过1小时。

编译时间超过2分钟就不要再等了,建议直接关掉,开始对地图进行优化。

公开发布地图时应保证BSP、VIS、RAD三个编译选项都为Normal。若设置为Fast,则容易出现一些实体在特定角度会消失不见的问题。

有的甚至还会使用-final参数来进行更详尽的优化,不过对于Fistful of Frags这样的社区类游戏来说,并不必要将地图打磨到和艺术品一样。此外,RAD右边的HDR选项可开可不开,看自己的想法。

EP7

制作圆柱的时候,无论是从什么2D视图开始生成,圆柱的顶部和底部始终是地图的上方和下方。因此要想制作躺着的圆柱体,就需要先生成再旋转。

制作圆弧的时候,圆弧面向的角度和你在2D视图的方向有关。此外,width是圆弧厚度的一半,number of sides是一段弧的节数,而且预览的时候的效果图在实际生成之后会拉伸到整个选区当中。因此如果你想制作180度圆弧,为了保持美观,可以让选区的比例保持在2:1。

刺的制作方法等同圆柱。

  • Ctrl+M可以变形。
  • 在2D视图点击黄色顶点,按Ctrl+F可以对其进行细分。
  • 在切割模式(Shift+X)当中,如果画好了线,还没正式切割的情况下,感觉自己要重画,可以按住Shift再拖动鼠标以重新划线。
  • 选中一些顶点之后按住Alt+E可以直接分散。这里没找到用菜单打开的方法,因此可以视为只能使用快捷键来操作。

重叠的部分可以用裁剪工具切掉。

如果把一个物体的下端的顶点移动到了上面,就会形成「凸对象」,而起源引擎不支持凸对象,只支持凹对象。凸对象的特征就是,从外面看上去的时候会发现有几个面薄到根本没有厚度,而进入该固体之后,原本看不到的面又会显示出来。

总之,当通过顶点调整之后,如果同一个物体有面发生了交叉现象,那么该物体就是凸对象。

EP8

由于篇幅过长,需要较长时间来学习和消化,且本人目前并不需要在这方面作深入了解,故到后期再回归学习。

EP9

由于篇幅过长,需要较长时间来学习和消化,且本人目前并不需要在这方面作深入了解,故到后期再回归学习。

EP10

水好做,只要弄一个全是nodraw的固体,然后在顶端弄上水的纹理即可。 当然也可以全部面都弄上水,甚至你六个面有五个面都弄上固体材质,只要有一面有水,那么这整个固体就是水方块。

之前说过,prop_static能让物体以地图或地形的形式存在,而不受任何外力影响。设定为prop_static即可让水面反射该物体。Fistful of Frags当中并不存在Render in Fast Reflections这个参数。

高清水(expensive water)的限制:

  • 如果水是高清的,在一个PVS(潜在可视集)中只能有一个水位高度。
  • 「高清的(expensive)」和「朴素的(cheap)」水不能在同一个PVS中同时使用。
  • 高清水的水面不应该在Z轴上倾斜(应该始终垂直于Z轴);它应该总是与地图上的地平线平行。
  • 高清水是通过在画笔的最上面的表面添加水材质,同时其他面设定为nodraw材质。
  • water_lod_control实体控制着高清水过渡到朴素水的距离,其余的面用nodraw材质覆盖。
  • 水面必须有一个env_cubemap实体,才能在DX9以下的硬件上正确渲染。
  • 地图子区域(aeraportals,或者说visleaf?)永远不能穿过水面。
  • 水不会密封地图,所以请勿将其作为地图本体与外部黑宇宙隔开的墙壁。
  • 当看到水时,只有顶部的材质能正确渲染,侧面和底部不会被渲染。

EP11

  • func_door
  • func_door_rotating
  • prop_door_rotating

func_door是直拉门。lip是移动减少值,也就是减少移动多少个HU,用来避免材质重叠。还有一个设定速度的选项,单位就是HU。

func_door_rotating是转动门。这里会有一个蓝色球体,也就是旋转中心。默认是以Z轴为基准进行旋转的。开关门声音的属性不再赘述。

标志当中有个「use open」,也就是需要使用E来开门。有个「touch open」,也就是触摸后打开。两个都关闭之后,就需要考虑使用按钮或其他输入输出设备来控制开关了。

prop_door_rotating是实体门。有个选项是start breakable。

门有一个恢复时间,如果设定为-1,那么门将不会自动复原。

在面编辑表当中,点击fit就可以将材质拉伸到整个界面。

EP12

func_button的作用就是将一个固体设定为按钮的形式。delay before reset是按钮冷却时间。delay before reset如果设定为-1,那么只能触发一次。按钮通常使用onpressed的动作来触发「按下按钮」这个操作。

triggle材质可以让一个区域变成触发区域。然后再将该固体转换为trigger_multiple以变成可以多次触发的区域。delay before reset如果设定为-1,那么只能触发一次。通常使用onstarttouch的动作来触发「进入」,onendouch的动作来触发「离开」,onendtouchall的动作来触发「所有东西都离开了」。

triggle材质可以让一个区域变成触发区域。然后再将该固体转换为trigger_once以变成可以触发一次的区域。

标签当中可以设定「don't move」,也就是按下按钮之后,按钮不动。或者use activate(E键激活)、touch activate(触摸激活)、damage activate(枪械攻击激活)。

outputs的含义是「该实体要将信息传递给谁」的列表,inputs的含义是「其他实体将信息传递给该实体」的列表



【转载熟肉】Hammer教程V2系列-起源引擎地图制作的评论 (共 条)

分享到微博请遵守国家法律