Corners
Width
Accent
Headings
Body text
Dark theme
White theme
Mordhau Guides 1.1.1 уже доступна — руководства стабильны, а исправления всегда приветствуются.
Blueprint: это визуальный скриптинг Unreal: класс, который вы собираете в графе, а не пишете на C++. В редакторе Mordhau вы редко создаёте его с нуля. Вы наследуетесь от того, что игра уже поставляет, и меняете нужную часть.
Модель, которую стоит держать в голове, прежде чем что-то открывать:
MordhauGameMode, ControlPoint, MordhauPlayerStart, MordhauWeapon. Их нельзя редактировать./Game/Mordhau/Blueprints/… в Content Browser, и именно их используют официальные карты и режимы. Называются BP_Что-то.Держать свою работу в своей папке, не про аккуратность. Правки в Blueprint игры «на месте» дают мод, который конфликтует с каждым другим модом, поступившим так же.
WARNING
Пути и имена свойств ниже взяты из классов игры, общественных инструментов и файлов серверной конфигурации. Патчи двигают вещи с места. Проверяйте всё важное в собственном Content Browser и сообщайте нам, когда что-то разошлось.
Каждый режим, это пара: GameMode, который держит правила и работает на сервере, и GameState, который несёт то, что должны видеть все клиенты: таймер, счёт, состояние целей.
| Режим | Blueprint, в /Game/Mordhau/Blueprints/GameModes/ |
|---|---|
| Deathmatch | BP_DeathmatchGameMode + BP_DeathmatchGameState |
| Team Deathmatch | BP_TeamDeathmatchGameMode + BP_TeamDeathmatchGameState |
| Skirmish | BP_SkirmishGameMode + BP_SkirmishGameState |
| Frontline | Battle/BP_FrontlineGameMode |
| Horde | Horde/BP_HordeGameMode |
Остальные следуют тому же правилу именования BP_<Режим>GameMode / BP_<Режим>GameState, лучше посмотреть папку, чем угадывать.
Это те же классы, которые администратор сервера правит в Game.ini, поэтому строка [/Game/Mordhau/Blueprints/GameModes/BP_DeathmatchGameMode.BP_DeathmatchGameMode_C] покажется знакомой, если вы читали руководство по выделенному серверу. Ключи конфига и свойства Blueprint, это одни и те же свойства.
MordhauGameMode Какой бы режим вы ни наследовали, всё это идёт вместе с ним. Это те рычаги, которые пользовательские режимы действительно дёргают:
| Свойство | Эффект |
|---|---|
PlayerRespawnTime, bPlayersSpawnInWaves, bUsesSlowPlayerSpawning | Тайминг возрождения и волновое ли оно |
SpawnProtectionDuration | Окно неуязвимости после появления |
DamageFactor, TeamDamageFactor, TeamDamageFlinch | Глобальные множители урона, включая дружественный огонь |
bDisableDamage, bDisableStamina | Отключение боевых систем — основа большинства небоевых режимов |
bPlayersDropAllGearOnDeath, bEquipmentDoesNotDespawn, OverrideEquipmentDespawnTime | Поведение выпадающего снаряжения |
KillScoreChange, KillTeamScoreChange, TeamKillScoreChange, AssistScoreFactor, bIsScoringDisabled | Начисление очков |
AutoKickOnTeamKillAmount | Наказание за тимкиллы |
HorseRespawnTime, CatapultRespawnTime, BallistaRespawnTime | Возрождение техники и осадных орудий |
MapRotation, MapVoteMaps | Что идёт следующим после матча |
И функции с событиями, которые стоит знать,, это точки подключения своей логики:
IsSpawnpointAllowed(PlayerStart, Controller) и GetSpawnpointPreference(PlayerStart, Controller): выбор точки появления, в паре с событиями MordhauPlayerStartOnAfterLogin, OnBeforeLogout: вход и выход игроковOnMessageBroadcasted, OnRconStringCommand: чат и RCON, полезно, если режим должен реагировать на команды администратораGetNextMap, GetNextMaps, VoteLevel: ротация и голосованиеКарта Mordhau, это не один уровень. Это базовый уровень с геометрией и по подуровню на каждый игровой режим с точками появления и целями этого режима. Именно префикс в имени подуровня сообщает игре, что это за режим.
| Префикс | Режим |
|---|---|
BR_ | Battle Royale |
FFA_ | Deathmatch |
FL_ | Frontline |
HRD_ | Horde |
INV_ | Invasion |
SG_ | Sword Game |
SKM_ | Skirmish |
TDM_ | Team Deathmatch |
Как это выглядит в редакторе:
SKM_CabbageLand.После этого changemap SKM_CabbageLand загрузит его.
Именно из-за этой структуры предупреждение о размещении настолько важно: цели, положенные в базовый уровень вместо подуровня режима, появятся сразу во всех режимах.
TIP
Для режимов вне этого списка префиксов общественный MetaMod расширяет то, что карта может поддерживать. Порядок действий выше сжат из Mordhau Modding Wiki, где есть скриншоты.
Два небольших Blueprintable-класса несут всё, что показывают меню. О них легко забыть, и тогда карта остаётся без названия и без картинки.
MapMetaData
| Свойство | Что содержит |
|---|---|
Name, Description | Что игроки видят в браузере |
BaseMap | Базовый уровень |
GameModeMaps | Подуровни режимов, принадлежащие этой карте |
Thumbnail, BackgroundImages, ForegroundImages | Графика меню и экрана загрузки |
Tips | Подсказки на экране загрузки |
GameModeMetadata
| Свойство | Что содержит |
|---|---|
Prefix | Префикс подуровня из таблицы выше — именно здесь эта договорённость и задаётся |
Name, Description, Thumbnail, Tips | Оформление режима |
Сделать по-настоящему новый режим, значит завести подкласс GameModeMetadata со своим префиксом рядом со своими GameMode и GameState.
Он есть у каждого уровня, и в Mordhau наследуется от MordhauLevelScriptActor. Это правильное место для скриптинга, который принадлежит только этой карте: дверь, открывающаяся на определённом счёте, мост, рушащийся после падения точки.
Здесь же запускаются системы уровня карты. Например, общественная система случайных точек появления ставится так: контроллер перетаскивается в Level Blueprint и подключается к Event BeginPlay.
Всё, что должно переиспользоваться между картами, лучше делать полноценным классом Blueprint: от Level Blueprint нельзя наследоваться.
| Что | С чего начать |
|---|---|
| Персонажи | BP_MordhauCharacter, в /Game/Mordhau/Blueprints/Characters/ |
| Оружие | MordhauWeapon и MordhauEquipment, а также MordhauShield, FistsWeapon, KickWeapon |
| Дальний бой | MordhauProjectile и Quiver |
| Тайминги атак | AttackMotion и классы движений — у windup, release, финта, парирования и рипоста есть свои |
| Анимация | MeleeWeaponAnimationProfile — тот AnimationProfile, на который ссылается оружие |
| Боты | BotProfile и BotBehaviorProfile, а узлы дерева поведения — BTTask_MeleeAttack, BTTask_MeleeDefend, BTTask_RangedAttack и им подобные |
Своё оружие после дублирования существующего (во многом упражнение с числами: windup, release, массивы урона по типам брони, расход выносливости, отбрасывание. Страница переменных оружия в Mordhau Modding Wiki) лучший письменный справочник по тому, что делает каждая из них, и её стоит прочитать до того, как трогать хоть одно значение.
MordhauPlayerStart: нет точек появления, нет картыControlPoint и его знамёна: весь слой целей Frontline и InvasionMapMetaData и GameModeMetadata: как карта представляет себяПолного руководства по моддингу Mordhau никто так и не написал, и эта страница, карта местности, а не тот пошаговый разбор, которым ей стоило бы быть. Если вы выпускали режим или карту, то, что вы знаете, какие свойства действительно важны, что ломается при упаковке, что делают официальные карты неочевидного, это ровно то, чего не хватает. Откройте issue или скиньте черновые заметки в Discord, оформление за нами.