L4D2 Дизайн уровня/Карты Scavenge

Материал из Valve Developer Community
Перейти к: навигация, поиск
English (en)Русский (ru)中文 (zh)
Править

Если вы добавляете поддержку режима сбора к существующей карте или создаете карту только для сбора, вам нужно будет включить каждый из следующих элементов:

  1. «Безопасная» стартовая область
  1. Генератор (или другое топливо-потребляющее устройство) с местом заливания для очков подсчета очков и индикацией состояния
  1. Спавнер газовых баллоннов, оружия и предметов, размещенные на вашей карте
  1. Объект info_director с выделением выходов

Давайте рассмотрим их более подробно:

Начальная область

Survivor start positions

Оставшиеся в живых начинаются с совпадений в положениях, указанных объектом info_survivor_position, поэтому вам нужно будет поместить 4 из них и указать scavenge в записи Game Mode.

The func_nav_attribute_region volume

Начальная область должна быть представлена ​​в вашей карте nav mesh, которая сохраняется в файле .NAV. Самый простой способ сделать это - разместить объект func_nav_attribute_region в вашем .VMF. Это применит соответствующий атрибут контрольной точки к навигационной сетке при ее анализе.

Boundary marker

Затем вам нужно поместить видимый пограничный маркер, который выжившие видят в начале каждого раунда. Начните с создания твердого тела, которое покрывает область старта, присвойте ему материал no draw и сделайте его полым 'Tools> Make Hollow'. Это превращает твердое тело в шесть меньших тел изображающих стенки первого. Теперь удалите верх и низ, оставив четыре боковых стены.

На четырех внутренних поверхностях примените материал "effects/scavenge_boundary". Теперь граница должна быть видимой, но нам также необходимо сделать ее не твердой. Выберите 4 боковые граничные кисти и сделайте их объектом func_brush.

По свойствам установите твердость на "Never Solid". Это указывает на то, что они не влияют на столкновение в игре. Поскольку нам нужно удалить границу при начале матча, нам нужно указать ее целевое имя. Стандартом для карт Valve является "brush_scavenge_boundary"

Осталось только добавить набор info_game_event_proxy для создания события с именем "explain_scavenge_leave_area".

Генератор

The generator instance

Поместим генератор и связанную с ним логику.

Новая функциональность экземпляра делает это очень просто. Просто создайте новый func_instance и укажите его на  

Steam\steamapps\common\left 4 dead 2\sdk_content\mapsrc\instance\scavenge_generator.vmf

  Это включено в инструменты разработки L4D2 и содержит полнофункциональный генератор, включающий светящуюся мишень, а также огни, которые мигают зеленым, желтым и красным цветом в зависимости от оставшегося времени.  

Конечно, генератор не обязательно должен быть в одном экземпляре, вы можете копировать и вставлять или делать сборку, если хотите.

 

Канистры, оружие и предметы

 

L4D2 scavenge 4.png

Стандартный уровень сбора имеет 16 канистр, разбросанных по арене. Вы можете указать эти местоположения, разместив объекты weapon_scavenge_item_spawn.  


Стандарт для карт сбора состоит в том, чтобы оружие и предметы были всегда заспавнены, поэтому лучше всего использовать


объекты спавна оружия при их размещении. Если ваша карта поддерживает другие игровые модели, вы захотите создать оружие и предметы с помощью point_template, которое активируется сущностью info_gamemode, когда оно обнаружит, что карта была запущена в режиме сбора.

В то же время любые weapon_spawn и weapon_item_spawn, которые есть в других режимах и могут работать неправильно. Лучше всего их удалять всякий раз, когда карта загружается в режиме сбора, используя info_gamemode.

 

info_director

Последний шаг - добавить некоторые выходы из info_director.

info_director outputs

Так как на карте может быть только один info_director, и другие геймоды полагаются на него, вам, возможно, придется поместить его в основной .VMF, а не в экземпляр сбора.


Круглый старт камеры

L4D2 scavenge 5.png

Хорошим решение является добавление движущейся камеры, когда начинается раунд. Это можно сделать, создав пару объектов point_viewcontrol_multiplayer и координируя их с env_fade. См. карту для примера:

Steam\steamapps\common\left 4 dead 2\sdk_content\DeadLine2\mapsrc\l4d_deadline02_scavenge.vmf


Тестирование режима сбор

Чтобы загрузить карту в режиме сбор, используйте следующие команды консоли:

mp_gamemode scavenge (Does not function in l4d2)
map <your .BSP map filename> scavenge (This is the right usage)

Это полезный ярлык, чтобы избежать необходимости проходить через главное меню каждый раз или если вы еще не создали свое дополнение. Аналогичным образом вы можете изменить режим игры "coop", "versus", and "survival", если вы тестируете карту с несколькими -gamemode.   Во время нормальной игры сервер сбора будет отключен через короткое время, если недостаточно человеческих игроков. Когда вы разрабатываете и тестируете свои карты сбора, вам нужно отключить это с помощью консоли:

sv_cheats 1
sb_all_bot_team 1
jointeam infected
z_spawn charger

sb_all_bot_team предотвращает тайм-аут, если есть команда с только ботами.

Если вы тестируете свою карту из лобби и хотите начать игру только с одним игроком, используйте эту команду:

ui_lobby_start_enabled 1

Это включит кнопку 'Start Game' в многопользовательских играх (Scavenge and Versus), даже если есть только один Человек.

Note.pngПримечание: Проверьте свою навигационную сетку! Несмотря на то, что боты не могут набирать очки, важно, чтобы они смогли достичь любого места, которое могут достичь живые игроки.

Whether you are adding Scavenge support to an existing map or making a scavenge-only map, you will need to include each of the following elements:


  1. A "safe" starting area
  1. A generator (or other fuel-consuming device) with a pour spot for scoring points and a status indication
  1. Scavenge gas cans, weapons, and items placed throughout your map
  1. An info_director entity with scavenge outputs

Let's cover each in greater detail:

Starting area

Survivor start positions

Survivors begin scavenge matches at positions indicated by the info_survivor_position entity, so you'll need to place 4 of them and specify scavenge in the Game Mode entry.

The func_nav_attribute_region volume

The starting area needs to be represented in your maps nav mesh, which is saved in the .NAV file. The easiest way to do this is placing a func_nav_attribute_region volume entity in your .VMF. This will apply the proper checkpoint attribute to the nav mesh when it is analyzed. You will want to make sure that your nav mesh is subdivided well enough so that it can accurately reflect the boundary of this volume.

Boundary marker

Next, you'll need to place the visible boundary marker which survivors see at the start of each round. Start by making a solid that covers the starting region, assign it the no draw material, and make it hollow Tools > Make Hollow. This turns the solid into six. Now delete the top and bottom, leaving four short walls.

On the four inside surfaces, apply the material "effects/scavenge_boundary". The boundary should now be visible, but we need to make it non-solid as well. Select the 4 side boundary brushes and make them a func_brush entity.

Under properties, set solidity to "Never Solid". This specifies that they are not to affect collision in game. Since we need to delete the boundary when the match starts, we'll need to give it a target name. The standard for Valve maps is "brush_scavenge_boundary"

The only thing left for now is to add an info_game_event_proxy set to generate an event named "explain_scavenge_leave_area".

Generator

The generator instance

Next, let's place the generator and it's associated logic.

The new instance functionality makes this very easy. Simply create a new func_instance and point it to

Steam\steamapps\common\left 4 dead 2\sdk_content\mapsrc\instance\scavenge_generator.vmf

This is included in the L4D2 authoring tools and contains a fully functional generator including a glowing pour target, as well as lights that blink green, yellow and red based on the time remaining.


Of course, it need not be in an instance, you can copy and paste or make a prefab should you desire.


Cans and weapons and items

L4D2 scavenge 4.png

The standard scavenge level has 16 cans scattered around the arena. You can specify these locations by placing weapon_scavenge_item_spawn entities.

The standard for scavenge maps is to have weapons and items be consistent each time, so it's best to use specific weapon spawning entities when placing them. If your map supports other gamemodes, you'll want to spawn your scavenge weapons and items using a point_template which is activated by the info_gamemode entity when it detects that the map has been launched in scavenge mode.

At the same time, any weapon_spawn and weapon_item_spawn that are there for other gamemodes may not work properly. It's best to have them killed whenever a map loads in Scavenge using info_gamemode.

info_director

The last bit is to add some outputs from the info_director.

info_director outputs
Since there is only one in the map, and other gamemodes rely on it, you may need to be put in the main .VMF, not the scavenge instance.


Round start camera

L4D2 scavenge 5.png

A nice touch is to add a moving camera when the round starts. This can be done by creating a couple of point_viewcontrol_multiplayer entities and coordinating them with env_fade. See the example map:

Steam\steamapps\common\left 4 dead 2\sdk_content\DeadLine2\mapsrc\l4d_deadline02_scavenge.vmf


Testing scavenge mode

To load up a map in Scavenge mode, use the following console commands:

mp_gamemode scavenge (Does not function in l4d2)
map <your .BSP map filename> scavenge (This is the right usage)

This is a useful shortcut to avoid having to go through the main menu every time or if you haven't yet set up your add-on. You can similarly change the gamemode to "coop", "versus", and "survival", if you're testing a map with multi-gamemode support.

During normal play, a Scavenge server will shut down after a short time if there are not enough human players. When you are developing and testing your Scavenge maps, you'll need to disable this using the console:

sv_cheats 1
sb_all_bot_team 1
jointeam infected
z_spawn charger

The sb_all_bot_team prevents the timeout from happening if there is a team with only bots.

If you are testing your map from the lobby, and want to start a game with only one player, use this command:

ui_lobby_start_enabled 1

This enables the 'Start Game' button in multiplayer game lobbies (Scavenge and Versus) even if there is only one human player.

Note.pngПримечание: Test your nav-mesh! Although bots cannot score points, it's important that they be able to reach any spot that human players can.