Mordhau Guides 1.1.1 を公開しました — ガイドは安定版となり、修正提案もいつでも歓迎します。

Skip to content

ブループリント ​

Blueprint は Unreal のビジュアルスクリプティングです。C++ ではなくグラフ上で組み立てるクラス、と考えてください。Mordhau のエディターでは、ゼロから書くことはほとんどありません。ゲームが既に用意しているものをサブクラス化し、必要なところだけ変えます。

何かを開く前に持っておきたい全体像はこうです。

  • C++ クラス: Triternion が書き、ゲームにコンパイル済み。MordhauGameMode、ControlPoint、MordhauPlayerStart、MordhauWeapon など。編集はできません。
  • Blueprint アセット: Content Browser の /Game/Mordhau/Blueprints/… にあり、公式マップとモードが実際に使っているのはこちら。BP_なんとか という名前です。
  • あなたの Blueprint: それらのサブクラスで、自分の Mod フォルダーに置くもの。作るものはすべてこれです。

自分のフォルダーで作業するのは整理整頓の話ではありません。ゲーム側の Blueprint を直接書き換えると、同じことをした他のすべての Mod と衝突する Mod ができあがります。

WARNING

以下のパスとプロパティ名は、ゲームのクラス、コミュニティ製ツール、サーバー設定ファイルから取っています。パッチで場所は動きます。重要なものは自分の Content Browser で確認し、ずれていたら報告してください。

最初に触る Blueprint はゲームモード ​

どのモードも 2 つで 1 組です。ルールを持ちサーバー上で動く GameMode と、全クライアントが見る必要のあるもの(時計、スコア、目標物の状態)を持つ GameState。

モードBlueprint(/Game/Mordhau/Blueprints/GameModes/ 以下)
DeathmatchBP_DeathmatchGameMode + BP_DeathmatchGameState
Team DeathmatchBP_TeamDeathmatchGameMode + BP_TeamDeathmatchGameState
SkirmishBP_SkirmishGameMode + BP_SkirmishGameState
FrontlineBattle/BP_FrontlineGameMode
HordeHorde/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): スポーン選択。MordhauPlayerStart 側のイベントと対になります
  • OnAfterLogin, OnBeforeLogout: プレイヤーの参加と退出
  • OnMessageBroadcasted, OnRconStringCommand: チャットと RCON。管理コマンドに反応させたいときに使えます
  • GetNextMap, GetNextMaps, VoteLevel: ローテーションと投票

サブレベル: モードごとに 1 レベル ​

Mordhau のマップは 1 つのレベルではありません。ジオメトリを持つ ベースレベル と、そのモードのスポーンと目標物を持つ モードごとのサブレベル です。どのモードかをゲームに伝えるのは、サブレベル名の接頭辞です。

接頭辞モード
BR_Battle Royale
FFA_Deathmatch
FL_Frontline
HRD_Horde
INV_Invasion
SG_Sword Game
SKM_Skirmish
TDM_Team Deathmatch

エディターでの作業の流れ:

  1. マップ本体を普通のレベルとして作る、 ジオメトリ、ライティング、小物。
  2. モードごとに空のレベルを作り、接頭辞を先頭にした名前を付ける:SKM_CabbageLand。
  3. それを開き、Levels ウィンドウを開いて、パーシスタントレベルのストリーミング方式を Always Loaded にする。新しいサブレベルを作るたびに Blueprint-only に戻るので、毎回設定します。
  4. Add Existing → ベースマップを追加し、サブレベルの下にジオメトリが読み込まれるようにする。
  5. パーシスタントレベルをダブルクリックして再び青くする(青が編集対象)。誤編集を防ぐためベースレベルはロックしておく。
  6. そのモードのゲームモード、スポーン、目標物を配置する。

あとは changemap SKM_CabbageLand で読み込めます。

配置に関する警告が重要なのはこの構造のためです。モードのサブレベルではなくベースレベルに落とした目標物は、全モードに同時に出てきます。

TIP

この接頭辞リストにないモードについては、コミュニティ製の MetaMod がマップの対応範囲を広げます。上の手順は Mordhau Modding Wiki を要約したもので、向こうにはスクリーンショットがあります。

メタデータ: マップの正体をゲームに伝える ​

メニュー表示に必要なものは、2 つの小さな Blueprintable クラスが持っています。忘れやすく、忘れるとマップに名前も画像も付きません。

MapMetaData

プロパティ中身
Name, Descriptionブラウザーでプレイヤーに見えるもの
BaseMapベースレベル
GameModeMapsこのマップに属するモードのサブレベル
Thumbnail, BackgroundImages, ForegroundImagesメニューとロード画面のアート
Tipsロード画面のヒント

GameModeMetadata

プロパティ中身
Prefix上の表のサブレベル接頭辞 — この規約が定義されている場所そのもの
Name, Description, Thumbnail, Tipsモードの見せ方

本当に新しいモードを作るなら、GameMode と GameState に加えて、自分の接頭辞を持つ GameModeMetadata のサブクラスが要ります。

レベルブループリント ​

どのレベルにも 1 つあり、Mordhau では MordhauLevelScriptActor を継承しています。そのマップだけ のスクリプティング(一定スコアで開く扉、ポイント陥落で崩れる橋)の置き場所です。

マップ単位の仕組みを起動する場所でもあります。たとえばコミュニティ製のランダムスポーンシステムは、コントローラーをレベルブループリントに置いて Event BeginPlay に接続して導入します。

マップをまたいで再利用したいものは、レベルブループリントではなく通常の Blueprint クラスにしてください。レベルブループリントは継承できません。

武器・装備・ボット ​

対象出発点
キャラクター/Game/Mordhau/Blueprints/Characters/ の BP_MordhauCharacter
武器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 の武器変数のページが最も詳しく、値を触る前に読む価値があります。

5 つだけ覚えるなら ​

  1. 自分のゲームモード Blueprint: 一番近い公式モードから派生させる
  2. MordhauPlayerStart: スポーンがなければマップではない
  3. ControlPoint とバナー: Frontline と Invasion の目標物レイヤーそのもの
  4. MapMetaData と GameModeMetadata: マップが自分を名乗る方法
  5. レベルブループリント: そのマップならではの一点物のスクリプティング

このページの完成に力を貸してください ​

Mordhau の Mod 制作を通しで解説した本格的なマニュアルは、まだ誰も書いていません。このページも、あるべき手順書ではなく地図にとどまっています。モードやマップを公開したことがあるなら、あなたが知っていること(どのプロパティが本当に効くのか、パッケージ化で何が壊れるのか、公式マップの分かりにくい作り)がまさに欠けている部分です。issue を立てるか、Discord に走り書きを貼ってください。整形はこちらでやります。