はじめに
ゲームプレイフレームワークとは
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(ゲームの状態の管理者)
- ゲームの状態(チェスの駒の位置、完了したミッションのリスト等)
- ゲームの進行処理
- スコアの管理処理
- 各クライアントからの情報
- PlayerState 型の PlayerArray 配列を用いた処理
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様のスライド