L4D2 Level Design/Multi-Gamemode Support/ru

From Valve Developer Community
Jump to: navigation, search
info_gamemode entity

В L4D2 вы можете использовать новый объект info_gamemode (переведено) для запуска различных событий в зависимости от режима игры, в котором играется карта. Это включает в себя внешний вид карты, расположение пути, размещение позиций или любую другую логику. Самое важное преимущество в том, что вам больше не нужно создавать несколько версий одного уровня. Один .BSP может поддерживать все gamemode, таким образом резко уменьшая размер вашего дополнения.Есть один недостаток, это, безусловно, повышение сложности вашего файла VMF. Однако, как мы увидим, этим можно легко управлять с помощью команд visgroups и новых функций экземпляра .VMF, описанных ранее.

Изучение на примере

Давайте посмотрим, как использовать gamemode-логику для добавления выделения в существующую карту, в этом случае одну из кампании Deadline.

Сначала откройте исходный файл для второй карты Deadline 2:

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

Общая структура

The scavenge-specific entities are in their own instance, which also lives in its own visgroup.

Одной из особенностей этой карты является подъем в центре, который должен быть запущен. Судя по всему, «шум» также создает событие паники орды. Это используется для создания двух половинок карты и ограничения игрового процесса в каждой области. Хотя это желательно в кооперативе, где карты очень линейные, увлекательный геймплей гораздо более ориентирован на арену. Таким образом, нам нужно, чтобы карта работала по-разному при запуске в режиме scavenge.

Давайте посмотрим, как это устроено:

На панели visgroup установите флажок рядом с висгруппой «+ SCAVENGE», чтобы включить и выключить ее. Вы увидите, что всё специфический связанное с scavenge активируются и деактивируются. В этой visgroup есть только один func_instance, и он ссылается на следующий файл:

"instance/l4d_deadline02_scavenge.vmf"

Идея здесь состоит в том, чтобы иметь все элементы, которые являются общими для всех игровых мод в главном файле исходного файла карты: "deadline02.vmf" и иметь элементы, специфичные для каждого gamemode, в отдельности как VMF-файлы и привязать их к основной карте в качестве экземпляров. Дизайнерам уровня L4D2 легко управлять всеми этими приспособлениями, и в зависимости от сложности разнообразность карты вам может быть легче.

Изучение экземпляра

Editing the Scavenge instance.

Нажмите на экземпляр Scavenge с помощью инструмента выделения и откройте диалог свойств. В левом нижнем углу нажмите кнопку Edit Instance.

Hammer откроет .VMF для редактирования. Теперь мы можем видеть только предметы, связанные с ущельем: начальные области, генератор, оружие и некоторые препятствия, которые изменяют карту и навигацию.

Однако это немного сложнее. Некоторые элементы должны быть созданы только в режиме scavenge, а другие должны быть уничтожены, если на карте выполняется что-либо, кроме режима scavenge. Помните, что visgroups и экземпляры имеют смысл только в Hammer. После запуска вашей карты процесс VBSP разрушает все экземпляры, что означает, что все объединяется, а отключенные visgroups игнорируются. Поэтому нам нужен механизм для управления ими в игре. Здесь появляется объект info_gamemode.

Настройки info_gamemode

The gamemode logic entities.

Значок выглядит как набор игральных карт.

Tip.pngСовет:Вы также можете использовать Map > Entity Report, чтобы найти его. включите filter by class, и введите "info_gamemode".
Outputs that fire depending on gamemode.

Выберите его и нажмите кнопку Properties. Информация о классе довольно расплывчета, но давайте посмотрим на вкладку Outputs. Вот где все действие.

Здесь вы можете видеть, что если карта загружается в любой игровой режим, отличный от scavenge, он запускает logic_relay с именем "relay_kill_scavenge", который убивает все элементы, относящиеся к режиму scavenge на этой карте.

Это позаботится о том, чтобы удалить все, что является простым сценарием. Однако добавление вещей должно выполняться поэтапно, чтобы мы не имели сломанных вещий относящиеся к logic_relay.

Когда карта загружается в режиме scavenge, она запускает событие "OnScavenge". На данный момент Директор все еще готов, и важно не создавать и не убивать объекты, пока они не будут завершены.

После того, как карта была настроена и Директор был инициализирован, он отключается "OnScavengePostIO". Мы делаем несколько вещей здесь:

  1. Во-первых, мы делаем все point_template спавнеры, которые нам необходимы. Эта карта примеров содержит шаблоны для оружия, предметов и генератора с точкой заливки.
  2. Он также автоматически поднимает подъемник, поднимая лестницу и снимая с охраны кнопку вызова.
  3. Последнее, что мы делаем в post IO, - это настройка навигации. Мы заблокировали некоторые пути, чтобы сбалансировать карту, и блокировщики вторжения настроены на блокировку.

"OnScavengeMatchStart", как я уверен, вы догадались, fired off for each match.

Одна из приятных вещей о info_gamemode заключается в том, что вы можете иметь несколько таких на карте. Вместо того, чтобы полагаться на одного, чтобы сделать все, карта Deadline 2 использует один в каждом экземпляре файла режима игры. Каждый из них несет ответственность за спавн и уничтожение материала, связанного только с этом конкретным gamemode. Это требует немного больше усилий, чтобы настроить, но это помогает немного упростить процесс, когда вы редактируете. И сохранение вещей в их собственных «ведрах» действительно помогает, когда вы возобновляете редактирование карты, которую не косались какое-то время.

Использование info_director

info_director outputs.

В некоторых случаях вы не сможете полностью разделить игровой режим. Например, карты scavenge требуют, чтобы info_director, который находится на главной карте, к тому же используемый всеми игровыми режимами, имеет определенные выходы, отображаемые справа.

Вы заметите, что survival имеет свой собственный пример, а coop и versus объединяются в свои собственные. Конечно, вы можете организовать свою карту и поддерживать игровые модели, как вам удобно, с или без экземпляров.