求生之路2关卡设计/长途救援结局(Gauntlet 终局)

From Valve Developer Community
Jump to: navigation, search
English 简体中文

本简体中文页面由大康翻译。更新于2022年4月17日。


求生之路 2 求生之路 2 在《教区》战役中引入了长途救援终局。该结局要求玩家逃到关卡的尽头,而救援车辆已经在等待他们,而不是让玩家在封闭的区域中待命。在教区中,玩家必须穿过一座桥才能到达救援直升机。

你可能希望遵循本文基于 c5m5_bridge.vmf 的反编译地图

概述

本结局(长途救援结局)主要由标准结局组成,并进行了一些新的添加和修改:

  • trigger_finale 使用“Gauntlet”作为结局类型(Finale Type)设置。
  • 一个 info_target,在地图末端靠近救援车辆的地方命名为“nav_flow_target”,但不在标有 RESCUE_VEHICLE 的导航网格上。否则它将被阻止并且不会生成导航流。
  • 通常没有救援房间,但如果添加了救援房间,则应该可以使用。如果在到达终局区域之前发生了战斗,请考虑添加一个。
  • 默认情况下,结局取决于 director_gauntlet.nuc 脚本,即使没有设置“脚本文件”字段。
    Note.png 注意:在“脚本文件”(Script File) 字段中定义不同的脚本将首先运行默认的 director_gauntlet,然后它将运行你定义的任何脚本。

长途救援结局结构不是很灵活,应考虑解决方法。在准备逃生车辆之前,只允许生成一只 Tank。"director_debug 1"显示,在 trigger_finale 第二次触发 GauntletStopPanic 时,它被认为是一个转义序列。

director_gauntlet.nuc

这是原始的 Gauntlet Finale 脚本,如果你想根据自己的目的对其进行调整。

Msg("Initiating Gauntlet\n");

DirectorOptions <-
{
	PanicForever = true
	PausePanicWhenRelaxing = true

	IntensityRelaxThreshold = 0.99
	RelaxMinInterval = 25
	RelaxMaxInterval = 35
	RelaxMaxFlowTravel = 400

	LockTempo = 0
	SpecialRespawnInterval = 20
	PreTankMobMax = 20
	ZombieSpawnRange = 3000
	ZombieSpawnInFog = true

	MobSpawnSize = 5
	CommonLimit = 5

	GauntletMovementThreshold = 500.0
	GauntletMovementTimerLength = 5.0
	GauntletMovementBonus = 2.0
	GauntletMovementBonusMax = 30.0

	// 测试进度的桥梁长度。
	BridgeSpan = 20000

	MobSpawnMinTime = 5
	MobSpawnMaxTime = 5

	MobSpawnSizeMin = 5
	MobSpawnSizeMax = 20

	minSpeed = 50
	maxSpeed = 200

	speedPenaltyZAdds = 15

	CommonLimitMax = 30

	function RecalculateLimits()
	{
	// 根据进度增加共同限制
	    local progressPct = ( Director.GetFurthestSurvivorFlow() / BridgeSpan )
	    
	    if ( progressPct < 0.0 ) progressPct = 0.0;
	    if ( progressPct > 1.0 ) progressPct = 1.0;
	    
	    MobSpawnSize = MobSpawnSizeMin + progressPct * ( MobSpawnSizeMax - MobSpawnSizeMin )


	// 根据速度增加共同限制   
	    local speedPct = ( Director.GetAveragedSurvivorSpeed() - minSpeed ) / ( maxSpeed - minSpeed );

	    if ( speedPct < 0.0 ) speedPct = 0.0;
	    if ( speedPct > 1.0 ) speedPct = 1.0;

	    MobSpawnSize = MobSpawnSize + speedPct * ( speedPenaltyZAdds );
	    
	    CommonLimit = MobSpawnSize * 1.5
	    
	    if ( CommonLimit > CommonLimitMax ) CommonLimit = CommonLimitMax;
	    

	}
}

function Update()
{
	DirectorOptions.RecalculateLimits();
}

提示

Bridge Span Value (大桥跨度值)

该脚本有一个“BridgeSpan”设置,用于确定 Gauntlet 区域的长度,以便计算对抗游戏的进度。
此值以 Hammer 单位为单位,只需在 trigger_finale 一侧创建一个固实体,而另一侧是救援车辆所在的位置,就可以轻松地在 Hammer 中获取该值。
如下图所示,这个画笔实体的宽度为 20096.0 个单位。所以脚本设置为 20000 单位以使数字四舍五入。

Gauntlet bridge span helper.png

另请参阅

求生之路2关卡设计