起源引擎漏洞与技巧

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)

小作品

这篇文章是一个小作品,您可以帮助我们完善它。

起源 起源引擎已存在十多年。《半条命》甚至诞生于上个千年。毫无疑问,存在这么久的游戏通常会有大量已知漏洞、技巧和玩法,任何速通视频都能展示玩家如何利用它们(不过大多数速通玩家使用游戏旧版本,因为Valve已修复许多漏洞)。如果你是循规蹈矩的模组制作者/地图作者,不妨了解下聪明(或愚蠢)的玩家可能用来破坏你的地图、逃脱/被困或跳过游戏内容的各种方法。所有地图作者都可能对此感兴趣,因为某些漏洞能让玩家从新视角观察地图,这可能意味着你需要做更多视觉优化工作。

Tip.png想法:与其限制玩家,不如考虑利用这些信息隐藏彩蛋(en)之类的内容。

引擎通用问题

  • 通过快速连按跳跃和使用键,可以利用物理物体攀爬墙壁,甚至在空中飞行

演示视频传送门2(en)》通过增加+use(en)指令的输入间隔时间并使玩家持有的物体变为非固体修复了此问题。

  • 水能消除坠落伤害

如果无法修改代码,可能的解决方案是使用trigger_hurt(en)。具体伤害值取决于坠落高度和水深。除非坠落高度会立即致命,否则使用OnHurt输出在伤害玩家一次后禁用触发器,并添加必要逻辑在玩家通过安全路线接近水域时禁用触发器,当玩家到达危险高度时重新启用。如你所想,当涉及多个高度层级或水域时,这会很快变得复杂。

支持VScript(en)的起源引擎版本可以直接根据玩家Z轴速度控制触发器伤害。

对于编码者,可以打开gamemovement.cpp找到CheckFalling()定义处:

if ( player->GetWaterLevel() > 0 )
{
    // 他们落入了水中
}

完全删除这段代码,同时移除下面的else语句(只移除else{},保留其中的代码)。

  • 在许多起源引擎游戏中,启用作弊后禁用,再保存加载游戏仍可获得成就(en)

如果在启用sv_cheats后保存游戏(可选使用任何作弊命令/cvar),然后禁用sv_cheats再保存加载游戏,仍可获得成就。

半条命2

载具

虽然困难,但载具可以越过这个高度(d2_coast_04(en)上的桥)
  • 重力枪(en)以特定方式击打,越野车和气垫船能将玩家弹到极高位置,有时超过蚁狮最大跳跃高度,极少数情况下能从Lost Coast(en)海平面直接弹到地图顶部的升降机处。

当地图设计为垂直结构时,这可能成为严重问题,也可能让玩家跳过某些障碍。从这种高度坠落会造成严重伤害,但上文提到水能消除伤害。通过坠落前进入载具或以特定角度落在斜坡上也能减轻伤害。解决方案包括设计地图时考虑此因素,或通过修改scripts\vehicles\中的质量值降低载具弹性(这也会影响加速和跳跃能力,不要增加过多)。

d1_canals_08(en)上的示例。这能让玩家跳过整个前哨站突袭。注意栏杆高度足以阻止玩家越过
  • 气垫船(en)的形状使其成为快速有效的斜坡

最佳解决方案是设计地图时考虑这个高度(约200单位,包括跳跃和蹲伏)。也可以使用玩家碰撞体积,但要注意这可能影响真实感。

不太妙!
  • 气垫船重量较轻。很容易用重力枪推到无法触及的位置

载具无法触及会导致玩家必须从之前存档重新开始,或可能重玩整个章节。在scripts\vehicles\中增加气垫船质量。也可以使用碰撞刷,但要注意真实感。聪明的玩家还可能在击打气垫船后立即按使用键进入,这会给他们带来巨大优势。

蚁狮在这里无能为力!不过酸液蚁狮...
  • 站在大型载具上可以智取某些NPCs(en),特别是那些不能使用子弹或其他抛射物的NPC

NPC不会将载具视为可站立的地面,意味着玩家处于它们无法触及的位置。

待完善: 解决方案?可能载具和NPC不喜欢接触是有原因的。
d1_canals_08(en)上实现进入剪辑的完美位置。如果这个触发器从未触发,大运河门就永远不会关闭,玩家可以直接开车穿过地图
  • 当玩家进入载具时,他们实际上不是像看起来那样滑入载具。他们是从进入前的位置传送到驾驶座/最终摄像机目的地。这允许跳过位置不当的触发器,也称为进入剪辑。

除非你的触发器需要非常特定的尺寸,否则只需将其放大或让它也能检测载具。只有在绝对必要时才修改代码。

武器

  • 武器产生的爆炸力可以推动玩家。(类似《军团要塞2(en)》中的火箭跳)

爆炸力主要是水平方向而非垂直方向。此外,足以显著推动玩家的爆炸也会对玩家造成很大伤害,因此无法重复使用。设计地图时要考虑可能的距离。也可以使用玩家碰撞体积,但要注意真实感。

  • 玩家可以站在物理物体上,用重力枪(en)向下击打它们,从而被向上推动

可能可以通过让移动物体在玩家站立时忽略重力枪来防止。如果无法修改代码,仔细的地图设计是次优选择。

并非所有道具都同样可利用。以下是已知特别适合助推的道具:


  • props_c17\furniturecouch001a
  • props_c17\furnitureshelf001a
  • props_c17\furniturewashingmachine001a
  • props_c17\trappropeller_blade
  • props_c17\tv_monitor01
  • props_interiors\radiator01a
  • props_junk\pushcart01a
  • props_lab\citizenradio
  • props_lab\filecabinet02
  • props_wasteland\prison_bedframe001a
  • props_wasteland\prison_bedframe001b
  • props_vehicles\tire001a_tractor
可以用蚁狮从红房子屋顶跳到马路对面的白色木板
  • 可以通过QPhysics(en) NPC(能用重力枪移动的)来跨越中小型间隙,如果玩家站在上面并在击打NPC的同时跳跃。

这只涉及头蟹和蚁狮。可能可以通过类似上个问题的方法修复,让NPC在玩家站立时忽略重力枪。如果无法修改代码,仔细的地图设计是次优选择。更好的解决方案可能是简单地让玩家不从站立的NPC获得惯性。

待完善: 如何实现?哪种方法最好?
d3_c17_12b(en)上,三脚机甲发射的关键炮弹对玩家进程至关重要。在它发射前杀死它会困住玩家。Valve知道这点,因此设置了三脚机甲死亡时支撑梁会断裂以防万一。
  • 三脚机甲、直升机和炮艇等NPC不仅会被火箭伤害。玩家在不合时宜的时间地点杀死它们可能导致意外后果。

这其实不是漏洞,Valve有意为之。以下都可以用来伤害大型敌人:

《半条命2》中通常不会遇到此问题,因为Valve尽可能考虑到了,但想象这可能如何影响d3_c17_12b(en)d3_c17_13(en)的游戏性,其中进程严重依赖三脚机甲NPC死亡和使用脚本炮弹。如果Valve没考虑玩家在到达预定位置前杀死三脚机甲的可能性,玩家可能会被困。

避免此问题的最佳方法是确保玩家没有这些机制(可能通过稀缺性),或简单地考虑这种可能性。

水体

  • 某些海岸地图的水中有甜区,蚁狮会溺水而无法到达,但水蛭还在更远的水中。

这是17号公路(en)沙阱(en)中多次出现的问题。这让玩家可以轻松不使用载具旅行且几乎不受伤害。要防止这点,保持所有水深小于32单位(蚁狮能移动的最大水深),并将trigger_waterydeath(en)延伸到比这更深的所有区域。

此解决方案并非100%有效。蚁狮通常不会直接冲向玩家,也不会为移动或蹲伏目标改变轨迹。32单位对水蛭来说也是异常浅的水。

这是半条命2:消失的海岸(en)中的问题。在此地图中,触发器略低于水面。如果玩家在水面跳跃和蹲伏,可以在受到伤害前不断进出触发器,使玩家能进入不应进入的地图区域。

任何半条命2地图中都没有此问题,因为这些地图中的触发器实际上延伸至水面以上很远。

传送门系列

传送门

Portal 1 bump.png
  • 当传送门射击到当前已有其他传送门的位置时,第一个传送门通常会放置在那个传送门旁边。这甚至能穿过玻璃等屏障发生。

在屏障上放置func_portal_bumper(en)防止传送门弹跳。也可以尝试使用func_noportal_volume(en)sv_portal_placement_never_bump(en) 1。


  • 在《传送门1》中,传送门射击需要时间飞行。在这段时间内,玩家可以在射击到达另一面墙前穿过传送门。


演示视频 《传送门2》通过使传送门在枪发射时立即放置修复了此问题。传送门2有类似问题,但需要更精确的计时,且穿过传送门时摄像机方向必须改变。

凝胶

另见:凝胶移动性(en)

  • 当玩家与方块(en)碰撞时,可能导致他们被轻微上推。当加入弹跳凝胶(en)因素时,由于弹跳凝胶不模拟终端速度(en),玩家可以达到任何高度。

除了使方块变为非固体外,没有太多方法阻止这点。不过更好的谜题设计是推荐方案。无法简单地设置最大弹跳高度。

  • 当玩家在加速凝胶(en)上蹲伏前进然后站起时,会立即加速到最大凝胶速度。

这种情况很少成为问题。尝试以下方案:

  • 控制台命令sv_speed_paint_max。不过也会影响正常方式达到的最大凝胶速度。Requires restart to take effect.
  • 重新设计地图使速度不成问题。
  • 当玩家在加速凝胶上奔跑时投掷方块,方块的初速度会大幅增加,包括垂直方向。

这意味着他们可以把方块扔得非常高。如果这成为问题,仔细的地图设计是解决方案。

牵引光束

  • 由于某些蹲伏状态问题,牵引光束(en)可被用来欺骗游戏给予玩家类似穿墙的状态。
待完善: 目前没有已知的预防方法。

这个错误状态可以跨地图加载保留。更多信息见此页面。

另见