UE5 と Epic Online Services を BP のみで利用してみる (セッション作成・一覧・参加)

UE5 と Epic Online Services を BP のみで利用してみる (準備 - ログイン) - You are done!

上記の記事の続きです。

Epicアカウントでのログインまでできるようになったので、その状態で Epic Online Services のセッションを利用していきます。

セッションに関する UI を作る

ログイン後にユーザー名を表示していた View に Create SessionFind Sessions を追加しました。

以下は Find Sessions 後に一覧 View です。

Create Session 後はそのまま Third Person テンプレートの ThirdPersonMap に移動させます。

上記の View は MainMenuWidget の中で WidgetSwitcher で切り替えているだけです。

セッション一覧の個別の要素

セッションの一覧 View は検索されたセッションが全て表示されますが、それぞれに Join ボタンを用意するため個別に Widget を用意しています。

セッション作成

Create Session ボタンのクリックイベントで以下の処理を行います。

Clear UI は Widget の削除や入力モードの変更をしているだけです

Should Advertise にチェックをつけて Find にひっかかるようにしておきます。

セッション一覧

Find Sessions ボタンのクリックイベントで以下の処理を行います。

セッション一覧が Scroll box にしているため、そのクリアと子要素の追加がありますが、それ以外は Find の結果を表示しているだけです。ここでは Filter は一切表示せず、全てを一覧させているだけです。

セッション参加

Join ボタンのクリックイベントで以下の処理を行います。Join のイベントは上記の Find Sessions で子要素の Widget を作成している時に紐づけています。

上記の Join Button Clicked イベントは Widet の中で Event Dispatcher で呼び出されています。子要素の Widget 内では Join ボタンのイベントして以下を実装しています。

Find Sessions Advanced で取得した Blueprint Session Result 構造体をそのまま受け渡しているので、 Join Session にそのまま渡せています。

動作の様子

それぞれのログイン後
Player1 がセッション作成 -> ThirdPersonMap に移動
Player2 がセッション一覧
Player2 がセッション参加

上記では ThirdPersonMap で Session ID と Player Name を表示するようにしています。

Epic Online Services でのセッションの状態

Developer Portal のゲームサービス -> マッチメイキングで作成したセッションの確認ができます。

プレイヤー数が 0 になっているのですが、これはまた別記事とします。