ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
GameMode とレベルの関係
Unreal Engine の GameMode は、レベル(マップ)全体のルールを定義するクラスです。誰がプレイヤーを操作するか(PlayerController)、何を操作するか(Pawn / DefaultPawnClass)、HUD は何か、勝敗判定はどう行うか、スポーン位置はどこか、といった「ゲームの骨格」を担います。
1 つのレベルにつき GameMode は 1 つしかアクティブになりません。タイトル画面とインゲームで異なる挙動にしたい場合、レベルごとに GameMode を切り替えます。
方法 1: World Settings で Override(推奨)
もっとも簡単で標準的な方法。レベルを開いた状態で World Settings から GameMode を上書きします:
- レベル(マップ)を開く
- メニューから Window → World Settings を開く
- Game Mode セクション → GameMode Override ドロップダウン
- 使いたい GameMode(例:
BP_MenuGameMode)を選択 - 必要に応じて Default Pawn Class / HUD Class / Player Controller Class / Game State / Player State を上書き
これでこのレベルを開いた時のみ、選択した GameMode が適用されます。プロジェクトのデフォルトは変えません。
方法 2: Project Settings でデフォルトを設定
全レベル共通で適用されるデフォルトを設定します:
- メニュー Edit → Project Settings
- 左メニュー Maps & Modes
- Default GameMode をプロジェクト全体のデフォルトに設定
- 必要に応じて Default Maps(Editor Startup Map / Game Default Map)も
World Settings の Override が指定されているレベルは Override が優先、無いレベルはここの Default が使われます。
方法 3: Open Level で動的に切替
レベル遷移時にゲームモードも変えたい場合、Open Level ノードの引数で指定できます:
Blueprint
- Open Level (by Name) ノード(標準)
- または Open Level (by Object Reference)
- Options 引数に
?game=BP_BattleGameModeのように追加
C++
#include "Kernel/GameplayStatics.h"
void AMyPlayerController::GoToBattle()
{
// Options で GameMode を上書き
UGameplayStatics::OpenLevel(
this,
FName(TEXT("BattleArena")),
true,
TEXT("?game=/Game/Blueprints/BP_BattleGameMode.BP_BattleGameMode_C")
);
}
Options 文字列の構文は URL パラメータ風で、?game=... 以外にも ?listen(リッスンサーバー)、?MaxPlayers=4 等が指定できます。
優先順位
同じレベルに対して複数の指定がある場合、優先順位は次の通り:
- URL の
?game=オプション(OpenLevel の Options) - World Settings の GameMode Override
- Project Settings の Default GameMode(フォールバック)
GameModeBase と GameMode の違い
| 項目 | GameModeBase | GameMode(旧) |
|---|---|---|
| 基底クラス | UE4.14+ の新基底 | GameModeBase を継承 |
| マッチステート | 無し(軽量) | WaitingToStart → InProgress → WaitingPostMatch → LeavingMap |
| 用途 | シングル / モバイル / シンプルゲーム | マルチプレイヤー / 試合制ゲーム |
| 関数 | OnPostLogin / HandleStartingNewPlayer 等 | + HandleMatchHasStarted / HandleMatchHasEnded |
シングルプレイなら GameModeBase 継承で十分。マッチ制やマルチプレイヤーで GameMode を使います。
レベル別の典型構成例
| レベル | GameMode | Default Pawn | HUD |
|---|---|---|---|
| L_MainMenu | BP_MenuGameMode | Spectator Pawn | BP_MenuHUD |
| L_Lobby | BP_LobbyGameMode | BP_LobbyPawn | BP_LobbyHUD |
| L_BattleArena | BP_BattleGameMode | BP_PlayerCharacter | BP_BattleHUD |
| L_Cutscene | BP_CutsceneGameMode | 無効(Sequencer 制御) | 無し |
カスタム GameMode の作り方
Blueprint
- Content ブラウザで右クリック → Blueprint Class
- Parent Class を GameModeBase に
- 名前を
BP_BattleGameModeに - クラスデフォルト(Class Defaults)で:
- Default Pawn Class
- HUD Class
- Player Controller Class
- Game State Class / Player State Class
C++
// BattleGameMode.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "BattleGameMode.generated.h"
UCLASS()
class MYGAME_API ABattleGameMode : public AGameModeBase
{
GENERATED_BODY()
public:
ABattleGameMode();
virtual void StartPlay() override;
virtual void HandleStartingNewPlayer_Implementation(APlayerController* NewPlayer) override;
};
// BattleGameMode.cpp
ABattleGameMode::ABattleGameMode()
{
DefaultPawnClass = ABattleCharacter::StaticClass();
PlayerControllerClass = ABattlePlayerController::StaticClass();
HUDClass = ABattleHUD::StaticClass();
}
PIE(Play In Editor)での挙動
エディタで Play を押した時の挙動は次の優先順:
- Editor Preferences → Play → Game Mode(明示的に設定があれば)
- 現在開いているレベルの World Settings → GameMode Override
- Project Settings → Maps & Modes → Default GameMode
複数モードの切り分け(シングル / マルチ)
同じ Pawn・PlayerController でモードを分けたい場合、GameMode に分岐ロジックを書くより、異なる GameMode クラスを 2 つ作るのが Unreal の標準的アプローチです:
BP_SinglePlayerGameMode: PvE 用、AI 多数BP_MultiplayerGameMode: PvP 用、マッチステート利用- 同じレベルを 2 つの GameMode で使う場合、Open Level の
?game=で動的選択
よくあるトラブル
Q: World Settings で Override したのに反映されない
A: ① レベルを保存していない、② PIE 開始前のキャッシュ。一度 Editor を再起動。③ Editor Preferences の Play GameMode が優先されていないか確認。
Q: Default Pawn が空中に出現する
A: GameMode の DefaultPawnClass が Spectator のまま。レベルに Player Start アクターを置き、GameMode に独自 Pawn を指定。
Q: Open Level の ?game= が効かない
A: パス記述ミス。Class の完全パス + _C サフィックスが必要。/Game/Blueprints/BP_BattleGameMode.BP_BattleGameMode_C のように書く。
FAQ
Q: GameMode をランタイムで切り替えられる?
A: 同一レベル内では基本不可。レベル遷移(Open Level)と同時に切り替えるのが標準。マッチ状態の遷移(GameMode の MatchState)でルールを変えるのは可能。
Q: GameMode はクライアントにレプリケートされる?
A: されません。GameMode はサーバー専用。クライアントに状態を渡すには GameState / PlayerState を使う。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?