☰

Что делает сцену многопользовательской

Введение

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

Особенности игровых режимов

Каждый игровой режим в Bannerlord требует нескольких разных наборов соответствующих префабов.

Можно сделать сцены совместимыми с несколькими игровыми режимами, включив все необходимые префабы. Сцены не могут быть совместимы с режимами, использующими другую систему спавна, например, сцена TDM не может быть совместима со сценой Captain, но сцена Captain также может использоваться для Skirmish, если в ней настроен правильный респавн.

Игровые объекты

Игровые объекты, найденные как префабы, необходимые для работы игрового режима на вашей сцене. Вы можете найти их в окне «Prefabs».

Общие
mp_camera_start_pos

Начальная позиция камеры, устанавливаемая для присоединяющихся игроков. По сути, она определяет фон для выбора фракции при присоединении к пользовательскому серверу. Это также будет первое, что люди увидят на вашей сцене. Обязательно немного поверните её (изначально она направлена вниз). Размещайте только одну!

border_soft

Определяет мягкую границу вокруг вашей сцены. Если игроки пересекают её, у них есть несколько секунд, чтобы вернуться обратно. Эта граница нужна для задания пределов сцены. Убедитесь, что граница не пересекает игровую зону. Вы задаёте границу (лучшая практика — делать это в форме шестиугольника), размещая пробники границы (border probes) вокруг вашей карты. Пробники всегда будут пытаться соединиться с 2 ближайшими к ним пробниками.

Вы можете проверить получившуюся границу, включив «Borders» в окне Visibility, иногда перед этим полезно перезагрузить сцену.

flee_line

Линии, которые ИИ (в наших игровых режимах — только ИИ-лошади) использует, чтобы покинуть поле боя. Они будут пытаться найти их с помощью навигационной сетки (navmesh). Поэтому эти позиции должны быть размещены там, куда ИИ может добраться через навмеш. Как только они достигают линии, они исчезают через короткий промежуток времени. Вы можете разместить несколько экземпляров этих объектов.

Для осады убедитесь, что линии бегства (flee lines) также есть внутри замка, чтобы лошади, оказавшиеся внутри, могли выбраться, не пытаясь пройти через ворота. Навмеш и ИИ не различают лестницы и пандусы, а лошади не могут передвигаться по лестницам. Возможно, вам потребуется скорректировать или убрать навигационные сетки на лестницах, чтобы избежать блокировки прохода бесхозными лошадьми.

envmap_prop

Должен уже присутствовать при создании новой сцены; если его нет, разместите его и установите «IsGlobal» в окне «Inspector». Также убедитесь, что он находится в правильной позиции. Конечно, у вас может быть несколько пробников, но для дополнительных пробников используйте local_envmap_probe.

Flag Domination (Skirmish, Battle, Captain)
Флаги

Каждый из этих игровых режимов использует 3 флага. Не смущайтесь их названиями — все игровые режимы используют одни и те же префабы!

Их префабы: flag_pole_big_sergeant_A, flag_pole_big_sergeant_B, flag_pole_big_sergeant_C

Режимам Flag Domination нужны три отдельных флага, поэтому не дублируйте флаг A дважды.

Siege
Флаги

Использует те же флаги, что и Flag Domination, но больше их (что очевидно). Разместите все флаги от A до F и главный флаг, который G.

Их префабы: flag_pole_big_sergeant_A, flag_pole_big_sergeant_B, flag_pole_big_sergeant_C, flag_pole_big_sergeant_D, flag_pole_big_sergeant_E, flag_pole_big_sergeant_F, flag_pole_big_sergeant_main

Осадные орудия

Технически они работают так же, как и в одиночных осадах. Тем не менее, есть некоторые существенные отличия. Прежде всего, большинство из них используют другие префабы для многопользовательского режима, убедитесь, что вы используете именно их!

Также нет минимального (или максимального) количества осадных орудий, необходимого на вашей сцене, и не нужны точки развёртывания, поскольку осадные орудия задаются вашей сценой, а не песочницей кампании. Также вам не нужно проводить обширную работу с навмешем для осадной башни, таранов и лестниц. Так что вы можете игнорировать все поля для навигационной сетки в Inspector.

Тем не менее, таранам и осадным башням всё равно понадобится путь для движения. Просто создайте путь, запомните его имя и укажите его в скрипте в Inspector как «PathEntityName».

Префабы, специфичные для многопользовательского режима: siege_tower_5m_spawnerMP, siege_tower_9m_spawnerMP, siege_tower_12m_spawnerMP, batteringram_a_spawnerMP, mangonel_a_spawnerMP, mangonel_a_spawnerFireMP, mangonel_b_spawnerMP, mangonel_b_spawnerFireMP, mangonel_a_spawnerMP, mangonel_a_spawnerFireMP, ballista_a_spawnerMP, ballista_a_spawnerFireMP, ballista_b_spawnerMP, ballista_b_spawnerFireMP

Префабы для ворот и лестниц такие же, как и для одиночной игры.

arrow_barrel

Вы можете разместить этот префаб в любом месте вашей сцены. Игроки могут использовать его, чтобы пополнить боезапас.

rock_pile

Размещение этого префаба позволяет игрокам подбирать камни, они работают так же, как и те, что по умолчанию идут с осадными орудиями. В скрипте StonePile вы можете задать, сколько камней идёт в комплекте с этим префабом. Также есть версия этого префаба с горшками с огнём: «pot_pile».

Префаб поставляется с дочерними объектами «icon_man», которые определяют позиции, с которых можно подбирать камни. Вы можете удалить эти дочерние объекты, если не хотите, чтобы к вашей куче можно было подойти с любой стороны.

Префабы rock_pile и pot_pile также можно использовать с мангонелями и требушетами. Если вы хотите дать игрокам возможность выбирать боеприпасы, вы можете просто разместить кучи рядом с осадными орудиями.

Duel

Для режима дуэли вам нужно будет создать ориентиры (landmarks) вручную. Есть два вида ориентиров, три из которых определяют типы отрядов, и 16 поменьше, которые определяют арены и то, к какому типу они относятся.

Большие ориентиры

Для этого можно использовать любой префаб, но ему нужно будет иметь два тега: «duel_zone_landmark» и «flag_x». X обозначает тип отряда, поэтому замените его на: «infantry», «cavalry» или «archery».

Вам также нужно будет (снова) задать тип отряда зоны с помощью скрипта. Для этого добавьте «DuelZoneLandmark» к вашему префабу и установите тот тип отряда, который вы хотите здесь заспавнить.

Ориентиры арены

Эти ориентиры определяют арены, сгруппированные большими ориентирами. Опять же, в качестве основы можно использовать любой префаб. Ему нужно установить два тега: первый, «flag_x», используется для привязки к большому ориентиру. Так что если вы хотите, чтобы эта арена использовалась для боёв кавалерии, используйте тег «flag_cavalry».

Вашему ориентиру также понадобится тег, ссылающийся на фактическую область арены (описана ниже), по сути служащий идентификатором. Для этого используйте тег «area_flag_x», где x — ID вашей арены. Так что если у вас 16 арен, каждая из них должна иметь свой собственный тег, от «area_flag_1» до «area_flag_16».

volume_box

Этот блок определяет область, в которой участники сражаются на вашей арене. Всё брошенное оружие и тела будут удаляться внутри этого блока после каждой дуэли. Убедитесь, что он немного больше физической арены, которую вы построили в редакторе сцен. Вы можете использовать префаб volume_box и масштабировать его по своему усмотрению. Блоку понадобится тег, ссылающийся на ID вашей арены: «area_box_x», где x — ID вашей арены.

Так что если тег вашей арены был «area_flag_5», вам следует пометить ваш volume_box тегом «area_box_5».

Точки спавна для обоих участников должны быть размещены внутри этого объёма. Смотрите ниже.

Точки спавна

Точки, в которых игроки начинают раунд или возрождаются в течение раунда. Режимы Flag Domination (Captain, Skirmish, Battle) используют почти одинаковую систему спавна, и сцены совместимы друг с другом при небольшой доработке. Совместимы в техническом смысле.

Для большинства точек спавна требуется установить правильный тег стороны. Префабы поставляются с тегами по умолчанию, которые либо «attacker», либо «defender». Вам, очевидно, нужно будет продублировать их и скорректировать все теги на префабах и их дочерних объектах для противоположной команды. Иногда, если тег ещё не присутствует в вашей сцене, его нужно добавить в список вручную, иначе он не появится в выпадающем меню!

Общие
spawn_visual

Позиция, в которой происходит выбор класса и перков. У префаба 6 дочерних объектов: один для игрока и 5 для его товарищей по команде. Для большинства игровых режимов (всех, кроме skirmish и captain) используется только дочерний объект с тегом «sp_visual_0», поскольку у нас нет фиксированного количества товарищей по команде.

Во время выбора класса/перков камера будет размещена перед дочерним объектом «sp_visual_0».

Тег «attacker» на дочерних объектах можно игнорировать. В отличие от многих других позиций спавна, эту не нужно дублировать для команды защитников.

Flag Domination (Skirmish, Battle, Captain)
skirmish_start_spawn

Префаб, определяющий начальный спавн. Не смущайтесь названием префаба, он может использоваться для всех 3 режимов Flag Domination.

Поставляется с 9 дочерними точками спавна, но вы можете продублировать их, чтобы получить больше возможных позиций спавна (например, если вы не хотите, чтобы игроки появлялись друг на друге в режиме битвы 50 на 50). У всех дочерних объектов должны быть теги «spawnpoint» и «attacker» или «defender». Теги главной зоны «starting» и «spawn_zone» трогать не следует.

Убедитесь, что точки не находятся ниже местности и используемых объектов земли. Также помните, что заспавнившимся лошадям потребуется больше места вокруг. Поэтому не размещайте точки спавна слишком близко друг к другу и к другим префабам.

skirmish_respawn

Префаб, определяющий позиции возрождения для режима skirmish. То есть игроки появляются здесь после смерти. Если вы не разместите эти позиции, игроки будут появляться в начальной точке спавна при возрождении.

Вы можете разместить до 3 таких объектов на каждую сторону. Как и в случае с начальной точкой спавна, важно сделать дубликаты для обеих сторон «attacker» и «defender». Тег главной зоны «spawn_zone» трогать не следует.

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

Siege

Спавн в осаде принципиально отличается от других режимов. Зоны спавна в осаде активны или неактивны в зависимости от того, сколько флагов было снято в матче. Каждая зона спавна связана с этой логикой игрового режима через тег sp_zone_x (x — число от 0 до 6).

Этот тег задаётся в главном префабе точки спавна, у которого есть дочерние одиночные точки спавна «mp_spawnpoint». «X» в теге определяет, сколько флагов нужно захватить (и снять) атакующим, чтобы эта зона спавна стала активной. Так, в начале осады игроки будут появляться в зоне с тегом sp_zone_0, как только первый флаг будет снят, они будут появляться в зоне с тегом sp_zone_1, и так далее. Если остался только G (главный флаг), игроки будут появляться в зоне с тегом sp_zone_6.

Вы можете разместить несколько таких тегов на одной и той же зоне спавна, так что можно сделать зону спавна для первых двух флагов, просто дав ей теги sp_zone_0 и sp_zone_1.

Обязательно пометьте дочерние объекты зон спавна тегами «spawnpoint» и «attacker» или «defender». Так же, как и в других режимах.

Для этой точки спавна нет префаба, поэтому вам нужно будет настроить большинство тегов самостоятельно. Я предлагаю использовать префаб «skirmish_start_spawn». Для этого вам нужно удалить тег «starting» из зоны и заменить его на тег(и) «sp_zone_x».

Не забудьте разместить точки спавна для атакующих и защитников!

Вы можете использовать специальные теги на дочерних объектах «mp_spawnpoint» зон спавна, чтобы настроить, какие отряды могут там появляться. Понятные из названия теги для этого: «exclude_mounted» и «exclude_footmen».

TDM

TDM не использует зоны спавна, точки спавна размещаются по сцене без тегов стороны. Используйте для этого префаб «mp_spawnpoint». Убедитесь, что они не являются дочерними объектами другого префаба и имеют только тег «spawnpoint».

Duel

Duel не использует зоны спавна, точки спавна размещаются по сцене (предпочтительно в своего рода лобби-зоне) без тегов стороны. Используйте для этого префаб «mp_spawnpoint». Убедитесь, что они не являются дочерними объектами другого префаба и имеют только тег «spawnpoint».

Не забудьте также разместить две точки mp_spawnpoint внутри каждой арены. Их нужно пометить тегами, связывающими их с ориентиром арены. Так, с помощью «spawnpoint_area_x», где x — ID арены, к которой они относятся. Также убедитесь, что они размещены внутри volume_box этой арены.

Навигационная сетка

В целом навмеш гораздо менее важен в многопользовательском режиме, поскольку большинство родных игровых режимов не используют солдат ИИ. Тем не менее, навмеш используется для бегущих лошадей, чтобы найти путь к линиям бегства, а также для запекания GI.

О том, как создать правильный навмеш, смотрите в нашей существующей документации.

Вы можете игнорировать конкретные ID для скриптинга ИИ.

Captain

В целом для режима captain применимо то же самое, что и для работы с навмешем местности битвы в одиночной игре. Вам нужно будет покрыть относительно огромную сцену очень точным навмешем. Об ID беспокоиться не нужно. Вы можете использовать стоимость навмеша (navmesh cost) так же, как в одиночной игре, чтобы удерживать агентов от использования определённых граней навмеша.

Имейте в виду: гораздо важнее, чем в одиночной игре, избегать областей, доступных для игроков, но не имеющих навмеша — такие места несут огромный потенциал для эксплойтов. Старайтесь избегать подобных мест.

Siege

Воротам замка нужен правильный навмеш, настроенный в скриптах. Так же, как и в одиночной игре (см. документацию, указанную выше). Если вы не создадите правильный навмеш для них, лошади будут путаться и застревать в ваших воротах. Кроме того, мы игнорируем навмеш замковых ворот при генерации GI, это предотвратит утечку света внутрь надвратной башни.

Также убедитесь, что у лошадей есть доступ к линиям бегства внутри и снаружи замка. Имейте в виду, что лошади всегда будут выбирать ближайшую «flee_line» для бегства, и если эта «flee_line» окажется снаружи замка, они попытаются найти выход наружу, что приведёт к застреванию, если вы не настроили лестницы и ворота правильно.

Другое

Атмосфера

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

Метка (Label)

В окне «SceneOptions» вы можете задать метку (Label) для вашей сцены. Это полезно, если вы сканируете свою сцену на наличие проблем (предпоследняя кнопка на верхней панели иконок). Если вы установите эту метку как «mp», это отфильтрует все проблемы, связанные с одиночной игрой.

Избегайте префабов с точками анимации

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

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

Избегайте разрушаемых объектов вне осады

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

То же самое касается зубцов стен (merlons) или разрушаемых крыш.

Эта страница переведена с помощью ИИ и может содержать неточности. Оригинал на английском языке является основным источником.