L4D地图制作注意事项
此页面包含与求生之路地图制作相关的大量笔记和不完整的文章。如果您在地图制作中发现并解决了一些问题,可以在这里补充一下,这样可以方便其他地图作者了解更多相关问题的内容。 |
本简体中文页面由 Gloria 汉化。
开场镜头
在第一个章节中,游戏使用了4个"info_survivor_position
" 实体和4个"point_viewcontrol_survivor
"实体来制造出“镜头拉近”的效果。尽管没有这8个实体也不会影响游戏正常运行,我们还是建议在发布地图之前,添加介绍镜头作为最后的完善。
logic_choreographed_scene
point_viewcontrol_multiplayer
point_viewcontrol_survivor
info_survivor_position
env_fade
- Entity:
logic_relay
Name: relay_intro_start
My Output Target Entity Target Input Parameter Delay Only Once OnTrigger director ForceSurvivourPosition 0.00 No OnTrigger director ReleaseSurvivourPosition 0.01 No
导演系统
求生之路使用“导演”,而不是固定的出生点,来放置敌人和物品。放置的位置和数量都是根据每名玩家当前的状态、数据、能力和位置决定的。
info_director
My Output Target Entity Target Input Parameter Delay Only Once OnGameplayStart relay_intro_start Trigger 0.00 No
为感染者创建出生区域
导演会在玩家视线以外的区域生成感染者,因此一张高难度的地图往往有很多视线外的区域。有时候生成区域在玩家不可到达的地方,为了让感染者进入游戏区域,应该在障碍背面放置func_ladder
梯子,以便感染者翻越。
生成物品和武器
设置Flags标志让生成位置随机化。
weapon_molotov_spawn
weapon_pipe_bomb_spawn
weapon_pistol_spawn
weapon_pain_pills_spawn
weapon_ammo_spawn
weapon_smg_spawn
weapon_first_aid_kit_spawn
weapon_hunting_rifle_spawn
weapon_rifle_spawn
weapon_autoshotgun_spawn
weapon_pumpshotgun_spawn
prop_physics
- 绿色氧气罐:
models/props_equipment/oxygentank01.mdl
- 红色汽油桶:
models/props_junk/gascan001a.mdl
- 白色丙烷罐:
models/props_junk/propanecanister001a.mdl
- 烟花:
models/props_junk/explosive_box001.mdl
- 绿色氧气罐:
恐慌事件
触发 info_director 导演实体的事件来生成尸潮。
info_game_event_proxy
ambient_generic
logic_timer
- 示例
- 警报车
- 开门警报
- 火警
- 烟雾报警器
- 金属探测器
- 爆炸
剧情事件(Crescendo events)
剧情中间的任务目标。剧情事件就像是缩小版的救援关战斗,通常出现在途径中有意思的地方。它的设置与恐慌事件极其相似,除了不能被跳过这一点之外。例如战役毫不留情(No Mercy)中的医院中,生还者必须抵御尸潮直到电梯抵达。
func_button
filter_activator_team
info_game_event_proxy
logic_relay
My Output Target Entity Target Input Parameter Delay Only Once OnTrigger director PanicEvent 1.00 No
一种关卡切换的方法
在一关最后的安全屋中添加 trigger_changelevel
,并将它与房间的地板空间关联起来。触发器(trigger)笔刷并不需要与地板重叠,但是必须紧贴着地板,或者与nav网格生成的位置大部分重合。如果 trigger_changelevel
没有与地板空间关联起来,在地图加载时就会出现nav错误,需要抽动调整nav网格。
确保命名了 info_landmark
实体,以及确保名称与 trigger_changelevel
中设置的、以及下一关的landmark名称一致。 For the prop_door_rotating_checkpoint
,至于安全门实体 prop_door_rotating_checkpoint
,将模型设置成 models/props_doors/checkpoint_door_02.mdl
,确保勾选了“Flags”选项卡中的“Starts Open”选项。
创建导航网格
首先必须编译并加载好地图,再在游戏中打开控制台,输入以下内容:
sv_cheats 1
nav_edit 1
nav_mark_walkable
nav_generate
nav_analyze
nav_edit 0
sv_cheats 0
在整个过程中地图会被重新加载两次,一次是在 nav_generate
之后,一次是在 nav_analyze
之后,但游戏应当始终处于nav编辑模式。
需要注意的是,上述控制台指令只能创建最基础的导航网格,它还远远不够,因此只能用于测试而不是发布。在发布地图之前应该仔细、全面地检查并编辑导航网格,取决于地图的结构,工作量也会有所不同。因此,建议你先完成地图的全部细节,最后再进行导航网格的调整。地图结构上的大变动会导致旧的nav渲染在错误的位置,需要进行重建。
导航网格属性描述
导航网格图形用户界面
- Fog:该区域是否关联了雾(fog)。
- Incoming/Outgoing:(可能不仅限于求生之路)很可能是用于选择带有向内/向外路径标记的区域
- Max Light / Min Light:(不限于求生之路)用于选择有特定级别光照的区域,(最大0.25/最小0 是黑暗区域,最大1/最小0.75是明亮区域)
- Place:(可能不仅限于求生之路)“Place”标记用于给nav网格中的特定区域命名。很可能仅用于选择命名/未命名区域。
救援关
一个战役的终点。在每个战役的最后一章,玩家必须在感染者的疯狂进攻中守住一片区域,直到救援载具到达。
设置呼叫电台
- Entity: trigger_finale
- Name: FinaleRadio
- World Model: models/props/terror/hamradio.mdl
- Start Disabled: No
- First Use Delay: 2
- Use Delay: 2
- Description: 这个实体的作用是在被触发两次之后,启动救援流程。
- FinaleEscapeStarted - 事件说明:它的含义是“当救援关完成之后,触发这个事件”。通常用于触发一个中继器(logic_relay),进而召唤救援载具。
- 注意:官图中使用了两个独立的按钮(func_button)来触发这个实体。这很可能是他们发现,由于 trigger_finale 实体在设置了模型后,本身就能接受“use”(使用键)输入,导致参与测试的玩家会“无意中”触发救援事件,因此做出的临时的修复。
添加救援载具
- Entity: logic_relay
- Name: EscapeRelay
- Description: 当救援关流程完成时触发一次。用于启动救援载具的动画,并使其移动到标记了 RESCUE_VEHICLE 导航网格的位置。当载具到达之后,用于承载 RESCUE_VEHICLE 标记的导航网格的 func_brush 固实体就会生效。
- FinaleEscapeVehicleReadyForSurvivors - 这个事件能够“解锁”RESCUE_VEHICLE 导航网格,有了它后电脑AI就会冲向载具。建议给这一事件添加延迟,来让载具有足够的时间进入位置。
- 注意:官方地图中有时候还会加入 trigger_hurt 与 trigger_push 实体,来模拟出载具一路碾过去的效果。
- Entity: func_door, Name: RescueBrush
- Entity: func_door, Name: RescueBrushDr1
- Starts Open: Yes
- Parent: RescueBrush
- Entity: func_door, Name: RescueBrushDr2
- Starts Open: Yes
- Parent: RescueBrush
- Entity: func_brush, Name: RescueBrushRamp
- Start Disabled: Yes
- Solidity: Toggle
- Entity: trigger_multiple, Name: TriggerEscape
- Description: Set to be enabled after the rescue vehicle animation finishes. When activated, triggers the VehicleLeaveRelay.
- Entity: logic_relay, Name: VehicleLeaveRelay
- Description: Used for controlling the rescue vehicle exit animations and firing the OutroRelay
滚动致谢画面(Credits)
- Entity: logic_relay, Name: OutroRelay
- Description: Ends the map and starts up the credits screen.结束一张地图,并显示致谢画面(Credits)
- FinaleEscapeForceSurvivorPositions - 这个事件能够使 "info_survivor_position" 实体生效,并将玩家从战场移出。
- Entity: env_fade Name: FadeOutro
- Entity: env_outtro_stats Name: OutroStats
- Entity: info_game_event_proxy Name: InstructorFinale
- Entity: info_survivor_position Name: survivor_pos1
- Entity: info_survivor_position Name: survivor_pos2
- Entity: info_survivor_position Name: survivor_pos3
- Entity: info_survivor_position Name: survivor_pos4
- Entity: point_viewcontrol_multiplayer Name: EndCamera
注意事项
门
- Type: prop_door_rotating
- Frame Dimensions: width: 56, height: 104
- World Model: models/props_doors/doormainmetal01.mdl
- 有关求生之路一代中门的创建与设置,见:
Doors in Left4Dead (l4dmaps.net)