求生之路2关卡设计/长途救援结局(Gauntlet 终局)
< Zh | L4D2 Level Design
本简体中文页面由大康翻译。更新于2022年4月17日。
This article or section needs to be updated to include current information regarding the subject。
Remember to check for any notes left by the tagger at this article's talk page.
Remember to check for any notes left by the tagger at this article's talk page.
求生之路2 在《教区》战役中引入了长途救援终局。该结局要求玩家逃到关卡的尽头,而救援车辆已经在等待他们,而不是让玩家在封闭的区域中待命。在教区中,玩家必须穿过一座桥才能到达救援直升机。
你可能希望遵循本文基于 c5m5_bridge.vmf 的反编译地图 。
概述
本结局(长途救援结局)主要由标准结局 组成,并进行了一些新的添加和修改:
- trigger_finale 使用“Gauntlet”作为结局类型(Finale Type)设置。
- 一个 info_target ,在地图末端靠近救援车辆的地方命名为“nav_flow_target”,但不在标有 RESCUE_VEHICLE 的导航网格上。否则它将被阻止并且不会生成导航流。
- 通常没有救援房间,但如果添加了救援房间,则应该可以使用。如果在到达终局区域之前发生了战斗,请考虑添加一个。
- 默认情况下,结局取决于 director_gauntlet.nuc 脚本,即使没有设置“脚本文件”字段。注意:在“脚本文件”(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 单位以使数字四舍五入。