はじめに
ゲームプレイフレームワークとは
UE4にはゲームプレイフレームワークという仕組みが最初から備わっており、これはネットワークゲームを作る場合でなくても有用な仕組みですが、本質的にはネットワークゲームを作るために用意された仕組みです。
UE4 ネットワークマルチプレイヤーゲームを作る時の役割について
要するにゲームプレイフレームワークとは、「Unreal Engine」で言う所の「Game Mode」や「Game State」等の複数個用意されているブループリントクラスの事で、マルチプレイゲームでなくても、この仕組みを使用する事で「どこに何が書かれているか」が明確になり、効率的に開発を進められる。
「Unreal Engine」で採用されているアーキテクチャは?
UE4のネットワークは『Client-Serverモデル』というアーキテクチャーを採用しています。これはつまり、サーバーが全てのゲーム情報を管理し、クライアントは受け取った結果を表示するだけということになります。
UE4 ネットワークマルチプレイヤーゲームを作る時の役割について
「Unreal Engine」では「Client-Server」モデルが採用されている(下に詳細あり)
確認しておきたい重要用語
サーバー(サーバ)
クライアントと呼ばれるコンピュータやソフトウェアや人のリクエストに応じてデータやサービスを提供するソフトウェアあるいはその機能を果たすコンピュータのことである。
サーバ
サーバーとは、各クライアントに指示を送るコンピュータの事。
クライアント
サーバは誰かに何か要求されて初めて仕事が出来ます。その「誰か」に当たるのがクライアントです。あるサーバが別のサーバに要求する時、要求する側のサーバはクライアントの立場になります。要はサーバに何か言う人はみんなクライアントです。
オンラインゲームクライアントあれこれ
クライアントとは、サーバーに指示されて動くコンピュータの事。
「Client-Server」モデル
サーバー権限を持った 1 つのプロセスに各クライアントが接続して、情報を伝搬してもらうことで同期する仕組みのことをいいます。つまり、ゲームが成立するためには必ずサーバー役の偉い人が 1 人だけいて、他の人はクライアントとしてサーバー役が言うことに原則従うことで動作する形式をとります。
[UE4] 具体的な実装例から知るマルチプレイヤーゲーム実装の基本のキ
「Client-Server」モデルとは、サーバーが全ての情報を管理して、サーバーが各クライアントに指示を送り、各クライアントは指示通りに情報を表示するという仕組みの事。
ブループリントクラスの種類
マルチプレイゲームにおける各ブループリントクラスの存在場所
サーバーのみに1つだけ存在する
- Game Mode
サーバーと全てのクライアントに存在する
- Game State
- Player State
- Pawn
- Game Instance
サーバーと、それを所有するクライアントのみに存在する
- Player Controller
それを所有するクライアントのみに存在する(サーバーには存在しない)
- Widget

各ブループリントクラスに書くべき事
Game Mode(サーバーだけが知っていれば良い情報の管理者)
- ゲームのルール(勝敗条件、スポーン位置など)
- ゲームの進行状況
- 各クライアントがログイン・ログアウトした際の処理
- 各クライアントの初期化処理
- 「Player Controller」クラスの取得処理
Game State(ゲームの状態の管理者)
- ゲームの状態(チェスの駒の位置、完了したミッションのリスト等)
- ゲームの進行処理
- スコアの管理処理
- 各クライアントからの情報
- 「PlayerArray」配列(PlayerState型)を用いた処理
Player State(各プレイヤーの状態の管理者)
- 各プレイヤーの状態
- 各プレイヤー固有の情報(HP・スコア等)
Pawn(ゲーム内の操作可能なキャラクター)
- 人型以外のキャラクターの操作
Game Instance(各クライアントがローカルでずっと保持しておきたい情報の管理者)
- アカウント情報などのログイン前・ログアウト後に必要な情報(レベルが遷移しても破壊されない為)
- ネットワークエラーハンドリングの処理
Player Controller(「Pawn」クラスの操縦士で、RPCの仲介役)
- 入力の受付と「Pawn」クラスの操作処理(ログイン後にそのクライアントの「Pawn」クラスに「Prossess」される為)
- 自分かどうかの判断処理
- 「Widget」クラスの管理処理
- RPCを用いた処理(「Widget」クラスの作成など)
- 「Pawn」クラス、「Player State」クラス、「Widget」クラス等の制御処理
Widget(ゲーム内UI)
- UIの操作処理
各ブループリントクラスの関係

Q&A

「Pawn」クラスと「Character」クラスは何が違うんですか?

「Character」クラスは人型のキャラクターに特化した「Pawn」クラスの事だよ。人型のキャラクターを作りたかったら、「Character」クラスを使うと良いよ。

似た様なモノでレベルブループリントってありますよね?

レベルブループリントは各レベルに必ず1つ存在するブループリントの事で、環境音やステージギミック等のステージやワールドに関わる事を書く場所だよ。
その他
参考記事
- UE4 ネットワークマルチプレイヤーゲームを作る時の役割について
- オンラインゲームクライアントあれこれ
- [UE4] 具体的な実装例から知るマルチプレイヤーゲーム実装の基本のキ
- サーバ
- 【UE4】GameMode、GameState、PlayerState、PlayerControllerの関連を確認してみる
- ゲームプレイ フレームワークのクイック リファレンス
- Game Mode と Game State
- 📰レベルブループリントとは?ブループリントの二つの種類について [UE5入門 #4-5]
- pate様のスライド
コメント