Mordhau Guides 1.1.1 уже доступна — руководства стабильны, а исправления всегда приветствуются.

Skip to content

Акторы ​

Актор (Actor) (это всё, что существует в уровне: стена, источник света, точка появления, точка захвата, лошадь. Если объект можно выделить во вьюпорте и у него есть позиция, поворот и масштаб) это актор.

Редактор, это Unreal Engine 4, поэтому большая часть того, что вы размещаете,, обычный UE4: меши, свет, объёмы, навмеш. Любой туториал по UE4 применим к ним без оговорок. Чего не покрывает ни один туториал по UE4, это горстка классов, написанных Triternion для карт самого Mordhau. О них и эта страница, потому что именно эту часть больше нигде не найти.

WARNING

Имена и свойства ниже взяты из классов Mordhau в том виде, в каком они доступны моддерам. Triternion меняет вещи между патчами, и ваш Content Browser всегда главнее: если что-то здесь не совпадает с тем, что показывает редактор, верьте редактору и сообщите нам, чтобы мы исправили страницу.

Как разместить и настроить ​

Два пути, оба стандартные для Unreal:

  • Панель Place Actors: для примитивов движка: свет, объёмы, геометрия, камеры.
  • Content Browser: для всего, что поставляется с Mordhau. Найдите класс или Blueprint и перетащите его во вьюпорт.

Когда актор уже в уровне, выделите его (панель Details справа покажет его свойства. Изменение свойства там меняет только эту размещённую копию) экземпляр, а не класс. На этом и построена вся работа с целями: вы ставите один и тот же ControlPoint пять раз и задаёте каждой копии своё имя, свою зону захвата и свой список предварительных точек.

Если изменение должно действовать везде, где используется актор, вы уже настраиваете не экземпляр, вам нужен подкласс Blueprint.

Проверьте, в какой уровень вы ставите объект

Карта Mordhau (это базовый уровень плюс по одному подуровню на каждый игровой режим. В окне Levels уровень, подсвеченный синим,) тот, который вы редактируете, и всё, что вы бросаете во вьюпорт, попадает именно в него.

Расставить точки захвата Frontline при выбранном базовом уровне, классическая ошибка новичка: цели после этого существуют во всех режимах, которые загружают базовую карту. Правый клик во вьюпорте → Move Selected Actors to Level исправляет это задним числом. Структура подуровней описана на странице Blueprints.

Точки появления: MordhauPlayerStart ​

Замена PlayerStart из UE4. Нужны любой карте и в каждом подуровне режима.

СвойствоЧто делает
TeamКакая команда может использовать эту точку. Целое число; значение класса по умолчанию — 5. Какие числа ожидает конкретный режим, проще всего посмотреть в официальной карте.
bIsSpawnDisabledОтключает точку. Режимы с целями переключают это по ходу матча, когда линия фронта сдвигается.
TokenМетка группировки. У ControlPoint есть парные SpawnsTeam и SpawnsToken — так захваченная точка забирает себе сразу целую группу точек появления.

Кроме того, класс даёт два события, которые можно реализовать в подклассе Blueprint:

  • IsAllowedSpawnFor(Controller): можно ли этому игроку вообще использовать точку
  • GetSpawnPreferenceFor(Controller): возвращает оценку; режим предпочитает точки с более высокой оценкой

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

Цели захвата: ControlPoint ​

Актор, на котором держатся точки Frontline и Invasion. Основная логика цели в нём уже есть; автор карты в основном заполняет свойства.

СвойствоЧто делает
NameПодпись, которую игроки видят на точке и в верхней панели
CaptureAreaКомпонент-область, внутри которой нужно стоять для захвата
bIsCapturableМожно ли точку захватить вообще — для декоративных или скриптовых точек
bIsHiddenPointУбирает точку из интерфейса, оставляя её рабочей
Team1PrerequisitePoints / Team2PrerequisitePointsМассивы других ControlPoint, которыми нужно владеть сначала. Так задаётся порядок линии Frontline и так команде не дают перепрыгнуть сразу к последней точке
SpawnPointsТе MordhauPlayerStart, которые точка передаёт при смене владельца
SpawnsTeam, SpawnsTokenКакой командой и какой группой появления управляет точка
bPreventSpawningIfContestedЗапрещает появление на точке, пока на ней есть враги
CaptureSpeedCurve, NeutralizeSpeedCurve, UncaptureSpeedСкорость захвата кривой, зависящей от числа присутствующих игроков
AwardScoreCapturing, AwardScoreCaptured, AwardScoreNeutralizing, AwardScoreNeutralized, AwardScoreIntervalОчки за работу по цели
BannersАкторы CapturePointBanner, которые визуально меняют сторону вместе с точкой

CapturePointBanner бывает в вариантах со static mesh и skeletal mesh (StaticMeshCapturePointBanner, SkeletalMeshCapturePointBanner). Разместите их, затем добавьте в массив Banners точки, они анимируются вместе с прогрессом захвата, если не выставлен bBannersDoNotAnimateCaptureProgress.

Цели с толканием: PushableActor ​

Повозка, таран, всё, что команда толкает по маршруту.

СвойствоЧто делает
PushAreaОбъём, внутри которого нужно находиться, чтобы толкать
Team1PushSpeedByPushers / Team2PushSpeedByPushersКривые: скорость в зависимости от числа толкающих
bIsPushingAllowed, bIsPullingAllowedКакие направления разрешены на данной фазе
bStopPushingIfContestedОстанавливает объект, когда на нём обе команды
bAutoMoveIfAlone, AutoMoveSpeedПозволяет ему двигаться самому
Progress0–1 вдоль маршрута; SetProgress двигает его из скрипта
ProgressStepToAwardScoreFor, ScoreAwardedPerProgressStepОчки за продвижение

Меши, которые ведут себя как в Mordhau: семейство MordhauActor ​

MordhauActor, база для пропов, участвующих в бою. По сравнению с обычным AActor он добавляет DamageableComponent и свойства звука удара (ThudSound и диапазоны высоты и громкости), из-за которых попадание звучит как в Mordhau, а не никак.

  • StaticMeshMordhauActor: статический меш, которому можно наносить урон. Используйте его, а не голый StaticMeshActor, когда объект должен быть бьющимся или разрушаемым.
  • SkeletalMeshMordhauActor: то же самое для скелетных мешей.
  • LODStaticMeshActor: статический меш с собственным LOD-компонентом Mordhau. Полезно знать, когда карта начинает стоить кадров.

Пропы, которые шевелятся: EnvironmentMovable ​

Покачивание знамён, вывесок, верёвок и всего, что не должно выглядеть намертво прибитым. Вы задаёте SwayingComponent, а затем векторы Frequency, Magnitude и Speed по крену, тангажу и рысканью, либо вызываете InitializeMovable и настраиваете всё сразу.

Временные зоны: MasterField и SubField ​

MasterField владеет набором объёмов SubField и управляет ими как целым: FieldLifeTime, FieldDeactivationTime, FieldFadeOutTime, CollisionFilter из интересующих классов и события CreateField, BeginFieldDeactivation, DeactivateAndDestroyField. FieldSpawnComponent, та часть, что размещает объекты внутри поля, с привязкой к земле (bSnapLocationToGround, SnapGroundRadius, MaxAllowedRotation) и необязательной проверкой линии видимости.

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

Техника и осадные орудия ​

Horse, Catapult и Turret (баллиста), размещаемые акторы, но время их возрождения живёт не на акторе, а на игровом режиме: HorseRespawnTime, CatapultRespawnTime, BallistaRespawnTime. Администраторы серверов узнают эти имена, это ровно те значения, что прописывают в Game.ini.

Ботам нужен навмеш ​

Всему, где есть ИИ, (особенно Horde) нужен NavMeshBoundsVolume, накрывающий игровую зону, и последующий проход Build Paths. Это обычный Unreal, но именно это чаще всего объясняет, почему боты на пользовательской карте стоят на месте.

Остальное, кратко ​

КлассПримерно
ProgressActor, ProgressDriver, SlaveProgressDriverАкторы, управляемые значением прогресса цели: ворота, двери, поэтапные цели
MapCameraActorКамера для видов карты, а не для геймплея
ParticleSystemActor, GoreActorАкторы эффектов, которые спавнит игра
MordhauEquipment, MordhauWeapon, MordhauShield, MordhauProjectile, QuiverВсё, что игрок может держать в руках — см. Blueprints
BuildingSystemComponent и классы Buildable*TraceСистема строительства из ящика с инструментами

Помогите дописать эту страницу ​

Страница собрана из открытых классов игры, общественных инструментов и официальных карт (не из руководства, потому что руководства не существует. Если вы делали цели в редакторе и знаете, какие значения режим ждёт на самом деле, это знание ценнее всего, что здесь написано. Откройте issue или напишите в Discord) оформление мы возьмём на себя.