39.GameModeBase(ゲームモード)とは? 仕様について解説
GameModeBase(ゲームモード)とは?
https://scrapbox.io/files/65c2eb2aa863c5002594b32b.jpg
GameModeBase(ゲームモード)とは簡単に言うとゲームのルールや設定を決めるためのブループリントクラスです。普通のブループリントクラス、例えばActorなどとは違ってレベル上に配置して使用せずにワールドセッティングやプロジェクト設定にセットして使用します。ゲームモードには主に6つの設定項目があります↓
https://scrapbox.io/files/65c2f77679d17b00247673d8.jpg
例えばDefaultPawnClassという項目ではゲームで操作するプレイヤーを決定する設定項目になります。なので操作するプレイヤーのキャラクターを変更する場合にはゲームモードのDefaultPawnClassにセットして変更したりします。またゲームモードにはタイマーとかスコアとかそういったノード処理もゲームモードに記載したりします。
①まずはデフォルトのセットされてるゲームモードを確認してみよう
今回はサードパーソンのプロジェクトを使用していきます。ゲームモードはデフォルトで用意されているのでどんなものかまずは確認してみましょう。
エディタ右上の設定からワールドセッティングを開きます。
https://scrapbox.io/files/65c2f7f4863ac70024ff20c2.jpg
詳細の隣にワールドセッティングのタブが表示されるので開きます。
https://scrapbox.io/files/65c2f814c7b4340025c2d291.jpg
ワールドセッティングではゲームモードをセットする項目があります。それがゲームモードオーバーライドという項目です。既にBP_ThirdPersonGameModeというゲームモードがセットされているのが確認できます。ブラウズボタンを押してアセットを表示してみましょう。
https://scrapbox.io/files/65c2f8374589980024f62afd.jpg
するとセットされたゲームモードが表示されました↓
https://scrapbox.io/files/65c2f866183a830025eb8bb1.jpg
このようにデフォルトのサードパーソンのプロジェクトではBP_ThirdPersonGameModeというゲームモードがセットされている状態になっています。
ではワールドセッティングに戻ってゲームモードオーバライドの「選択したゲームモードの項目」を開いてみましょう。ゲームモードにセットされている設定項目がひらきます。
https://scrapbox.io/files/65c2f8a2de11a40025a77504.jpg
デフォルトのゲームモードではDefaultPawnClassにBP_ThirdPersonCharacterがセットされています。ブラウズでアセットを確認してみましょう。
https://scrapbox.io/files/65c2f8e71e9fe60026011853.jpg
このBP_ThirdPersonCharacterをDefaultPawnClassにセットしたゲームモードを使用しているため、ゲームをプレイするとBP_ThirdPersonCharacterが出現して操作できるという仕組みになっています。
https://scrapbox.io/files/65c2f928d2fed10025d8e074.gif
では試しに操作するキャラを変更してみましょう。DefaultPawnClassの設定項目をDefaultPawn(デフォルトで用意されている一人称プレイヤー)に設定してみましょう。これで操作するキャラクターがDefaultPawnに設定されました。
https://scrapbox.io/files/65c2f93c75facf00253896b3.jpg
プレイして操作するキャラクターが変更されている事を確認しましょう。このDefalutpawnはビューポートのカメラのように一人称視点で操作できるキャラクターになります。
https://scrapbox.io/files/65c3096dd899e1002653fd38.gif
DefaultPawnClassの設定項目は一旦BP_ThirdPersonCharacterに戻しておきましょう。
https://scrapbox.io/files/65c3098d43700d0025684c45.jpg
②GameModeBaseを作成してセットする
では、今度はゲームモードを新規作成して既存のゲームモードと入れ替えてみましょう。
コンテンツブラウザを開いて、右クリック>ブループリントクラス>GameModeBaseを選択して、MyGameModeに名前を変更します。
https://scrapbox.io/files/65c309c86a2d3c00248c27f3.jpg
ダブルクリックで開いてみましょう。
詳細からクラス > DefaulatPawnClassの設定はDefaultPawn(さっきプレイした一人称のプレイヤー)になっている事が確認できます。
https://scrapbox.io/files/65c309f830bdfd00251dc323.jpg
ではゲームモードを作れたので入れ替えてみましょう。ワールドセッティングをもう一度開いて、ゲームモードオーバーライドにMyGameModeをセットします。
https://scrapbox.io/files/65c30a3d0dec130023482465.jpg
これで作成したゲームモードをセットでき、レベルに適用できました。これもDefaultPawnClassにはDefaultPawnが設定されているのでプレイすると一人称視点のゲーム操作になります。
https://scrapbox.io/files/65c3096dd899e1002653fd38.gif
再度プレイヤーを変更してみましょう。DefaultPawnClassにBP_ThirdPersonCharacterに変更してみます。
https://scrapbox.io/files/65c30a750dec1300234828da.jpg
プレイするとキャラクターが変更されているのが確認できます。
https://scrapbox.io/files/65c2f928d2fed10025d8e074.gif
このようにゲームモードは設定項目をまとめたブループリントクラスで、ワールドセッティング等にセットして使用していきます。
GameModeBase(ゲームモード)の仕様について解説
ゲームモードの3つの仕様について解説していきます
まず最初にゲームモードについて解説しておきたい以下の三つの仕様について紹介していきます。
①ゲームモードはセットできる場所は「ワールドセッティング」と「プロジェクト設定」の二つ
②ゲームモードの6つの設定項目はどこで変更しても同じ様に変更が適用される
③ゲームモードはプレイ開始時に生成される
①ゲームモードはセットできる場所は「ワールドセッティング」と「プロジェクト設定」の二つ
前ページではわかりやすくワールドセッティングだけで設定しましたがプロジェクト設定でもゲームモードは設定する事ができます。
設定からプロジェクト設定をクリックします。
https://scrapbox.io/files/65c30b1e38adb6002456daec.jpg
マップ&モードをクリックしてデフォルトのゲームモードからゲームモードを確認できます。選択したゲームモードをクリックするとゲームモードの6つの設定項目が表示されます。
https://scrapbox.io/files/65c30b3ac3e5b100256eef4a.jpg
では、ゲームモードをプロジェクト設定にセットするのとワールドセッティングにセットする違いは何なのでしょうか?
プロジェクト設定とワールドセッティングにセットする違い
プロジェクト設定でゲームモードをセットすると、このプロジェクト内の全レベルのデフォルトとしてゲームモードが適用されます。一方ワールドセッティングで設定するゲームモードは上書き扱いになりレベル毎に設定されるゲームモードになります。要するにゲームモードはプロジェクト設定とワールドセッティング両方でセットでき、両方にセットした場合ワールドセッティングのゲームモードが優先されます。
https://scrapbox.io/files/65c30bb6684b9000259036a3.jpg
なのでワールドセッティングにゲームモードがセットされている場合、ゲームモードはワールドセッティングのものがゲームプレイに反映されます。
😺少しややこしいかもしれませんが、簡単に言うとゲームモードはワールドセッティングとプロジェクト設定でセットできます。基本的にゲームモードをセットしたり、ゲームモードの設定項目を変更するのはワールドセッティングの方で行えば良いです。
②ゲームモードの6つの設定項目はどこで変更しても全てに変更が適用される
ゲームモードの主な6つの設定項目はブループリントクラス本体、プロジェクト設定、ワールドセッティングのどこで変更しても全てに変更が反映されてます。
https://scrapbox.io/files/65c30d844589980024f8259c.jpg
基本的には、ワールドセッティングでDefualtPawnClassなどのプレイヤー設定を行っています。迷ったらワールドセッティングでゲームモードの設定を行いましょう。
③ゲームモードはプレイ開始時に自動で生成される
ゲームモードとゲームモードの設定項目(操作キャラなど)のブループリントクラスはゲーム開始時にレベルに自動でスポーンします。これも試してみましょう。
ゲームをプレイしてアウトライナーを確認します。この黄色のテキストのアクタがゲーム開始後に生成されたものになります。ゲームモードも存在している事が確認できます
https://scrapbox.io/files/65c30dd030bdfd00251e3aff.jpg
なのでゲームモード自体にブループリントを作成するとゲーム内でも反映されます。試しにPrintStringノードをMyGameModeに記載してみます。
https://scrapbox.io/files/65c30df40509d50023769b24.jpg
プレイするとこんな感じ↓にちゃんとゲームモードに記載したノードが機能しているのがわかります。
https://scrapbox.io/files/65c30e10f7d00500265dd662.jpg
若干レベルブループリントと役割が似たような感じになるのですが、ゲームモードにはタイマーやスコアなどのゲームの基礎ルールの処理を記載すると便利です。理由はゲームモードは他のブループリントクラスから簡単に参照できるためです。具体的には後のページで解説予定です。
ゲームモードの6つの設定項目ざっくり解説
ゲームモードは主に6つの設定項目で構成されています。
https://scrapbox.io/files/65c30e44de11a40025a98c66.jpg
それぞれの設定項目は以下のようになります。
table:六つの項目
DefaultPawnClass PawnまたはCharacterクラスを設定できます。
ここにはプレイヤーが操作するキャラクターのブループリントクラスを設定します。
HUD Class HUDクラスを設定します。
簡易的なUI(テキストやスコアなど)となるHUDを作成する時に設定する項目です。
PlayerControllerClass PlayerControllerというクラスを設定できます。
ここはキャラクターを操作するためのブループリントクラスPlayerCotrollerを設定します。
GameStateClass 全てのプレイヤーが現在のゲームの状態(例:スコアやタイマーなど)を知るためのクラスです。
PlayerStateClass プレーヤー情報(例:名前やキル数など)を管理するクラスです。
SpectaterClass ゲームを観戦するプレーヤーを管理するクラスです。
GameModeBaseとGameModeの違いとは?
ややこしいのですがGameModeBaseとは別にGameModeという他のブループリントクラスもあります。親クラスで検索すると以下のように出てきます。
https://scrapbox.io/files/65c30f0de1bbea002647752d.jpg
古いUnrealEngineのバージョンではGameModeBaseは無く、GameModeというブループリントクラスのみでしたが、マルチプレイヤーの設定が増えたためGameModeBase(親クラス)とGameMode(子クラス)に分離されシンプル化されました。GameModeはマルチプレイヤーのマッチングなどの設定を含んだゲームモードになります。基本的に使うのはGameModeBaseの方で、ゲームモードと言われるものは一般的にGameModeBaseの方を指します。少しややこしいので解説しておきました。基本的にはGameModeBaseの方を使用していく形になるのでこれも覚えておきましょう。