---
title: 『Faaast Penguin』に学ぶ！クロスプレイ対応とEOS活用のリアル | Unreal Fest Tokyo 2025
tags:  #unreal fest #unreal fest tokyo 2025  
author: [エピック ゲームズ ジャパン](https://www.docswell.com/user/EpicGamesJapan)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/G7894LDYJD.jpg?width=480
description: 本講演へのアンケートにご協力をお願い致します： https://forms.gle/exAwWaLky3ZZ4hYY6   講演動画： https://youtu.be/i3sKamV2yhY  講演内容： 5プラットフォームに対応した『Faaast Penguin』の事例をもとに、クロスプレイ対応の実装ポイントとEOSの活用法を解説します。プラットフォームを跨いだマッチングやフレンド管理、パーティ機能、クロスセーブ対応など、本タイトルでの実装方法を紹介。さらにAccountServicesとGameServicesの違いを交え、クロスプレイ対応を検討している方に向けて実践的な情報を提供します。   講演者： 馬場 俊行（株式会社ヒストリア） 高柳 俊一（株式会社ヒストリア）  株式会社ヒストリアについてはこちら： https://historia.co.jp/   Unreal Fest Tokyo 2025公式サイト： https://www.unrealengine.com/ja/events/unreal-fest-tokyo-2025
published: December 08, 25
canonical: https://www.docswell.com/s/EpicGamesJapan/ZLVDV6-UE_UFT2025_HISTORIA_EOS
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/G7894LDYJD.jpg)

『Faaast Penguin』に学ぶ！クロスプレイ対応とEOS活用のリアル
株式会社ヒストリア
エンジニア／レベルデザイナー
エンジニア
馬場俊行
高柳俊一
#unrealfest


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L7LW6LM9ER.jpg)

自己紹介
株式会社ヒストリア
エンジニア
レベルデザイナー
株式会社ヒストリア
エンジニア
馬場 俊行
高柳 俊一
&lt;代表作&gt;
・Caligula Overdose
-リードエンジニア
・Caligula2
-リードエンジニア
・ソードアート・オンライン Last Recollection
-プラットフォームエンジニア
&lt;代表作&gt;
・Caligula2
-エンジニア
・LIVE A LIVE
-エンジニア
・Faaast Penguin
-サブリードエンジニア
・Faaast Penguin
-ディレクター、リードエンジニア
2
#unrealfest


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4EM95MYV7W.jpg)

会社紹介
● Unreal Engine 専門のゲームデベロッパー
● 所属エンジニアは全員クライアントエンジニア
3
#unrealfest


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PERG3V9W79.jpg)

目次
● Faaast Penguinの紹介
● クロスプレイについて
● EOS GS と EOS EAS の違い
● 実装について
● 最後に
4
#unrealfest


# Page. 5

![Page Image](https://bcdn.docswell.com/page/P7XX4ZQV7X.jpg)

の紹介
5
#unrealfest


# Page. 6

![Page Image](https://bcdn.docswell.com/page/37KWZ8957D.jpg)

Faaast Penguinの紹介
https://www.youtube.com/watch?v=Dc6K8QFNu98
6
#unrealfest


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LJ31D2W1E5.jpg)

Faaast Penguinの紹介
7
#unrealfest


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8JDXPZKK7G.jpg)

Faaast Penguinの紹介
● 最大40人のアクションレースゲーム
● 基本プレイ無料
● マルチプラットフォーム
Epic Games Store / Steam / Switch / PS5 / Xbox Series X|S
● クロスプレイ対応
● 12言語対応
● 初の自社大型パブリッシング
8
#unrealfest


# Page. 9

![Page Image](https://bcdn.docswell.com/page/VEPPNDK3E8.jpg)

Faaast Penguinの紹介
● Unreal Engine 5
- クライアント
- ゲームサーバー（Dedicated Server）
● Epic Online Services
- フレンドリスト・招待
- ロビー機能（パーティー・プライベートルーム）
- プラットフォームに依存しないアカウント管理
● AWS＋Amazon GameLift Servers
ＡＷＳ
- APIサーバー、各種DB、CDN（チャンクデータのDL元）等
- マッチメイキング（FlexMatch）
- Dedicated Server のオートスケーリング
- マルチロケーションフリート
9
#unrealfest


# Page. 10

![Page Image](https://bcdn.docswell.com/page/27V2K1VN7Q.jpg)

Faaast Penguinの紹介
●
Unreal
Engine
5
今回はココの話
- クライアント
- ゲームサーバー（Dedicated Server）
● Epic Online Services
- フレンドリスト・招待
- ロビー機能（パーティー・プライベートルーム）
- プラットフォームに依存しないアカウント管理
● AWS＋Amazon GameLift Servers
ＡＷＳ
- APIサーバー、各種DB、CDN（チャンクデータのDL元）等
- マッチメイキング（FlexMatch）
- Dedicated Server のオートスケーリング
- マルチロケーションフリート
10
#unrealfest


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5JGRQ2L57L.jpg)

ログイン～プレイまでのフロー
11
#unrealfest


# Page. 12

![Page Image](https://bcdn.docswell.com/page/47QVKPYLEP.jpg)

パーティを組んでプレイまでのフロー
12
#unrealfest


# Page. 13

![Page Image](https://bcdn.docswell.com/page/KE4MPYW571.jpg)

プライベートマッチで遊ぶフロー
13
#unrealfest


# Page. 14

![Page Image](https://bcdn.docswell.com/page/L71896Y2JG.jpg)

EOSを導入するに至った経緯
14
#unrealfest


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G7WZQWG272.jpg)

EOSを導入するに至った経緯
多人数のオンライン対戦
多くのユーザーを集める必要がある
マルチプラットフォーム対応
基本プレイ無料
様々なプラットフォームユーザーを一同に集める必要がある
クロスプレイ対応
15
#unrealfest


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4JZ1W5L4E3.jpg)

EOSを導入するに至った経緯
クロスプレイをやるのであれば…
プラットフォームに依存せず
友達同士で遊びたい！
プレイデータを共有したい！
だけど…フレンド管理もアカウント管理も自前で用意するのは大変…
しかし、我々には
がある…！
16
#unrealfest


# Page. 17

![Page Image](https://bcdn.docswell.com/page/YE6LG9WG7V.jpg)

EOSとは
Epic Online Services（EOS）とは
● ゲームにオンライン機能を追加できる無料サービス
● PC / Console / Mobile 間のクロスプレイに対応
● 認証、フレンド、実績、クラウドセーブ、マッチメイキングなどを提供
● Unreal Engine 以外のゲームエンジンでも利用可能
● 他のプラットフォームアカウントとも連携可能
17
#unrealfest


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GE51VNMXJ4.jpg)

EOSを導入するに至った経緯
＋
● UE5ではEOSのプラグインを有効化すればすぐに使える状態
- UE5との親和性、実装速度が速い
● アカウントサービスの運営を任せられる
- 運営コストが抑えられる
18
#unrealfest


# Page. 19

![Page Image](https://bcdn.docswell.com/page/9721359QER.jpg)

EOSを導入するに至った経緯
採用…！！
次に
EOSを利用するにあたって
各種機能をどう活用していくか色々と考慮していく必要がある
19
#unrealfest


# Page. 20

![Page Image](https://bcdn.docswell.com/page/DJYZ1K4YEM.jpg)

クロスプレイについて
20
#unrealfest


# Page. 21

![Page Image](https://bcdn.docswell.com/page/V7N32RYR78.jpg)

何を考慮すべきか
クロスプレイ対応のために、以下の内容を考慮する必要があった
● マッチング機能
● パーティ機能
● フレンド機能
● プレイデータの扱い ※クロスセーブに対応する場合
これらをどこまで対応するかによって必要になる機能が変わってくる
21
#unrealfest


# Page. 22

![Page Image](https://bcdn.docswell.com/page/YJ991MPZJ3.jpg)

マッチングについて
● 大前提として、全てのプラットフォームで同一マッチを行いたかった
→
ただ…
今回は
ならプラットフォームに関係なくマッチングを行う事が可能
Amazon GameLift Servers を採用
22
#unrealfest


# Page. 23

![Page Image](https://bcdn.docswell.com/page/GJ894LXYED.jpg)

マッチングについて
では
● マッチングルールを細かく簡単に決めたかった
- ユーザーごとのリージョンを考慮
- プレイヤースキルによるマッチングレートを考慮
- マッチング時間経過によるマッチングルールの条件緩和
- これらを気軽に変更したい
● オートスケーリングの実装コストを節約したかった
検討した結果
Amazon GameLift Servers を採用
23
#unrealfest


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LJLW6L897R.jpg)

パーティについて
パーティを組む方法
● フレンドリストから招待・参加をする
● パーティ用のIDを利用してパーティに参加する
24
#unrealfest


# Page. 25

![Page Image](https://bcdn.docswell.com/page/47M95M6VJW.jpg)

パーティについて
● フレンドリストから招待・参加をする
- 事前にフレンド登録している相手と一緒に遊べる機能
同じプラットフォーム同士であれば、各プラットフォームの機能で完結
25
#unrealfest


# Page. 26

![Page Image](https://bcdn.docswell.com/page/P7RG3VPWJ9.jpg)

パーティについて
● フレンドリストから招待・参加をする
プラットフォームを跨ぐ場合は自前のフレンド機能が必要
ならフレンド機能、ソーシャルオーバーレイを利用すれば実現可能
ではパーティプレイで利用
26
#unrealfest


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PJXX4Z3VJX.jpg)

パーティについて
● IDを利用してパーティを組む
- フレンド同士でなくとも一緒に遊べる
- フレンド機能は不要
- 自前のパーティ機能が必要
ＩＤを入力して参加
ｔＮＱｐｒ
（ルームＩＤを発行）
ＩＤを入力参加
27
#unrealfest


# Page. 28

![Page Image](https://bcdn.docswell.com/page/3JKWZ8Y5JD.jpg)

パーティについて
● IDを利用してパーティを組む
のロビー機能を利用すれば実現可能
ではプライベートマッチで利用
28
#unrealfest


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LE31D29175.jpg)

フレンド管理について
各プラットフォームごとのサービスでフレンドリストが存在する
→
Epic Games アカウント のフレンド
→
Steam アカウント のフレンド
→
ニンテンドーアカウント のフレンド
→ Playstation Network のフレンド
→
Xbox アカウント（Microsoft アカウント）のフレンド
29
#unrealfest


# Page. 30

![Page Image](https://bcdn.docswell.com/page/8EDXPZGKJG.jpg)

フレンド管理について
プラットフォーム関係無いフレンドリストを作成したい場合
以下の機能を用意する必要がある
● ユーザーの検索
● フレンド登録の招待、受諾
● ゲームへの招待、受諾
● パーティ離脱
● ブロック機能
● それらを内包したUI
などなど…
30
#unrealfest


# Page. 31

![Page Image](https://bcdn.docswell.com/page/V7PPND3378.jpg)

フレンド管理について
これらは、Epic Games アカウントを利用して
のフレンド機能を利用すれば実現可能
更に…
既存のゲームで既にフレンドになっているユーザー同士もそのまま一緒に遊べる
※フォートナイトのために作られたサービス
フォートナイトユーザーはそのまま利用可能
もちろん、
でも利用
31
#unrealfest


# Page. 32

![Page Image](https://bcdn.docswell.com/page/2JV2K14NJQ.jpg)

プレイデータの扱い
● ユーザーのプレイデータ（アカウントのデータ）
- 入手したアイテム
- 購入したクリスタルの個数
- シーズンランク
- シーズンパスの進捗状況
などなど
まずはこれらのプレイデータをどこに保存するか？
32
#unrealfest


# Page. 33

![Page Image](https://bcdn.docswell.com/page/5EGRQ215JL.jpg)

プレイデータの扱い
プレイデータの保存先
●
のPlayer Data Storage機能を利用すればデータを保存する事が可能
APIサーバー主導でデータを自由に取り扱いたかったので
では独自のAWSサーバーを用意して、プレイデータを保存・管理
33
#unrealfest


# Page. 34

![Page Image](https://bcdn.docswell.com/page/4JQVKPDL7P.jpg)

プレイデータの扱い
保存したプレイデータをどう管理するか
● クロスプレイ（クロスセーブ）に対応しない場合
各プラットフォームごとのアカウントで管理（ユーザーの特定）を行えばよい
→
Epic Games アカウント
→
Steam アカウント
→ ニンテンドーアカウント
→
Playstation Network
→
Xbox アカウント（Microsoft アカウント）
34
#unrealfest


# Page. 35

![Page Image](https://bcdn.docswell.com/page/K74MPYZ5J1.jpg)

プレイデータの扱い
● クロスセーブに対応しない場合
プラットフォームのアカウントごとでプレイデータを管理する事になるので
プレイデータは他のプラットフォームに引き継げない
ユーザーにとっては不便…
35
#unrealfest


# Page. 36

![Page Image](https://bcdn.docswell.com/page/LJ1896R2EG.jpg)

プレイデータの扱い
● クロスセーブに対応する場合
各プラットフォームを連携させる１つのアカウントが必要になる
つまり、プラットフォームに依存しない１つのアカウントが必要
Epic Games アカウント を利用することでクロスセーブを実現できる
ではこの管理を採用して、クロスセーブに対応
36
#unrealfest


# Page. 37

![Page Image](https://bcdn.docswell.com/page/GJWZQW12J2.jpg)

クロスプレイについてのまとめ
では…
● マッチング機能
Amazon GameLift Servers を利用
● パーティ機能
EOSを利用
● フレンド機能
EOSを利用
● プレイデータの扱い
EpicGames アカウントを利用
37
#unrealfest


# Page. 38

![Page Image](https://bcdn.docswell.com/page/4EZ1W5P473.jpg)

クロスプレイについてのまとめ
では…
● マッチング機能
Amazon GameLift Servers を利用
● パーティ機能
詳しくは…
EOSを利用 → EOS Game Services（EOS GS） を利用
● フレンド機能
詳しくは…
EOSを利用 → EOS Epic Account Services（EOS EAS） を利用
● プレイデータの扱い
詳しくは…
EpicGames アカウントを利用 → EOS EAS を利用
38
#unrealfest


# Page. 39

![Page Image](https://bcdn.docswell.com/page/Y76LG9MGJV.jpg)

EOS GS と EOS EAS の違い
39
#unrealfest


# Page. 40

![Page Image](https://bcdn.docswell.com/page/G751VNZXE4.jpg)

EOS GS と EOS EAS の違い
● Epic Online Services（EOS）には 大きく２つのサービスに分かれる
40
#unrealfest


# Page. 41

![Page Image](https://bcdn.docswell.com/page/9J2135RQ7R.jpg)

41
#unrealfest


# Page. 42

![Page Image](https://bcdn.docswell.com/page/DEYZ1KDY7M.jpg)

ユーザーが
Epic Games アカウント への
登録を行う必要がある
42
#unrealfest


# Page. 43

![Page Image](https://bcdn.docswell.com/page/VJN32R6RJ8.jpg)

EOS GS と EOS EAS の違い
今回の話で出てきた各種機能は…
● EOS EAS Epic Games アカウントへの登録が必要な機能
- アカウント管理
- フレンド機能
- ソーシャルオーバーレイ
● EOS GS Epic Games アカウントへの登録が必要でない機能
- パーティを組むためのロビー機能
- マッチメイキング機能（Faaast Penguinでは未使用）
- Player Data Storage機能（Faaast Penguinでは未使用）
43
#unrealfest


# Page. 44

![Page Image](https://bcdn.docswell.com/page/YE991MLZE3.jpg)

EOS GS と EOS EAS の違い
アカウント登録を必須にした場合
● メリット
- 共通のフレンド機能が使える
- プラットフォームに依存しないアカウント管理が可能
- クロスセーブへの対応
● デメリット
- アカウント作成が心理的障壁になる
- Steamのレビューなどで低評価に繋がる
- 登録のフローが挟むためすぐにプレイできない
- ログインできないとプレイできない
44
#unrealfest


# Page. 45

![Page Image](https://bcdn.docswell.com/page/GE894LWY7D.jpg)

EOS GS と EOS EAS の違い
開発当時、
「フォートナイトのフレンドリストが使いたい！」
Epic Games アカウントへのユーザー登録が必須だと判断した
１年運営して分かったのは
Faaast Penguinでは、 Epic Games アカウントのフレンドリストは、
ユーザー登録を必須にするほどの恩恵は無かった
45
#unrealfest


# Page. 46

![Page Image](https://bcdn.docswell.com/page/LELW6LN9JR.jpg)

EOS GS と EOS EAS の違い
例えば…
● フレンド機能は各プラットフォームごとに限定
● クロスでパーティを組みたい時はID招待を提供
● プレイデータは各プラットフォームごとで管理
という仕様にして
Epic Games アカウントへの登録は不要という選択肢もあった
46
#unrealfest


# Page. 47

![Page Image](https://bcdn.docswell.com/page/4JM95MXVEW.jpg)

EOS GS と EOS EAS の違いのまとめ
● EASの利用は、共通のフレンド機能が使えるなど魅力的な部分がある一方
デメリットの存在は大きい
● 仕様を決めるうえでも、EOS GS と EOS EAS の違いを
きちんと把握しておく事が重要
● その上でEASを使う場合は、Epic Gamesアカウントへの登録を必須にせず
ユーザー任意で後から登録できるようにしておく事を推奨したい
47
#unrealfest


# Page. 48

![Page Image](https://bcdn.docswell.com/page/PJRG3VNWE9.jpg)

実装について
48
#unrealfest


# Page. 49

![Page Image](https://bcdn.docswell.com/page/PEXX4ZNVEX.jpg)

実装について
● UE5.4.1
● 開発当時：EOS SDK v1.16.3
現在：EOS SDK v1.17.1.3
（ 使用API v1.16.4 ）
49
#unrealfest


# Page. 50

![Page Image](https://bcdn.docswell.com/page/3EKWZ8N5ED.jpg)

実装について
● UE5でEOSを使用する場合の選択肢（EOS SDKの呼び出し方）
- OnlineSubSystem EOS
- OnlineServices EOS
- Fab（当時のマーケットプレイス）にあるプラグイン
各プラットフォーム対応を考慮すると
OnlineSubSystem EOS か OnlineServices EOS の２択だった
50
#unrealfest


# Page. 51

![Page Image](https://bcdn.docswell.com/page/L731D2V1J5.jpg)

実装について
● OnlineSubSystem EOSとは
- Epicの公式プラグイン
- OnlineSubSystem の EOS版
- OnlineSubSystem はUE4時代からあるので実績がある
● OnlineServices EOSとは
- Epicの公式プラグイン
- OnlineSubSystem を改良した新バージョン OnlineServices の EOS版
- OnlineServices はUE5からの新機能
51
#unrealfest


# Page. 52

![Page Image](https://bcdn.docswell.com/page/87DXPZ8KEG.jpg)

実装について
● OnlineSubSystem EOS か OnlineServices EOS か
当時、OnlineServices への移行期だったため、ひとまず検証
→EOSの機能が一部未対応だった
EGJと相談しつつ検討の結果、OnlineSubSystem EOS を採用
52
#unrealfest


# Page. 53

![Page Image](https://bcdn.docswell.com/page/VJPPND83J8.jpg)

実装について
● OnlineSubSystem EOS か OnlineServices EOS か
今ならどっち？？
すぐにリリースするような短期開発であれば、まだ OnlineSubSystem EOS
リリースがまだ先で長期的なプロジェクトになりそうなら
OnlineServices EOS の採用を検討した方がよさそう
53
#unrealfest


# Page. 54

![Page Image](https://bcdn.docswell.com/page/2EV2K1NNEQ.jpg)

ログインの実装紹介
54
#unrealfest


# Page. 55

![Page Image](https://bcdn.docswell.com/page/57GRQ2K5EL.jpg)

ログインの実装紹介
● Epic Games アカウント にログインするための実装が必要
ログインフローはドキュメントを見ながら、
Lyra の CommonUser プラグインを参考に実装
→プロジェクトプラグインなのでほぼそのまま使える
● 初回ログイン成功後、次回起動時はオートログインしたい
→ キャッシュによるオートログイン機能は OnlineSubSystem EOS 側でサポート
CommonUser プラグインを参考にしていれば、呼び出し側の実装も楽
55
#unrealfest


# Page. 56

![Page Image](https://bcdn.docswell.com/page/4EQVKPNLJP.jpg)

ログインの実装紹介
● 各プラットフォームごとでサインインの資格情報の型が違うので注意
→Auth インターフェースのリファレンス | Epic Online Services ドキュメンテーション
対応するプラットフォームごとでログインの動作確認が必要
56
#unrealfest


# Page. 57

![Page Image](https://bcdn.docswell.com/page/KJ4MPYG5E1.jpg)

ログインの実装紹介
開発中は、以下の機能を用意していると便利
● exeファイルからの直接起動でも、ログインしたい
- PC版ではプラットフォームを経由しなくてもログインできるようにする
→認証の型を強制的に「persistentauth」に変更する
● 初回ログインフローの動作確認をしたい
- オートログインを切る機能を実装する
→オートログイン無効設定を実装し、iniファイルなどで指定する
● ログを見なくともログインエラーの原因を知りたい
-ログインエラー時にエラーコードを表示する
→返ってきたエラーの文字列を加工してゲーム内で表示する
57
#unrealfest


# Page. 58

![Page Image](https://bcdn.docswell.com/page/LE1896D27G.jpg)

OnlineSubsystemEOSでの
パーティ機能の実装紹介
58
#unrealfest


# Page. 59

![Page Image](https://bcdn.docswell.com/page/GEWZQWY2E2.jpg)

OnlineSubsystemとは
● OnlineSubsystemとは様々なオンラインサービスの非同期通信を
処理するよう設計されている、UnrealEngineに搭載されているプラグイン
● 呼び出し側(アプリ側)ではどのPFかを気にせずにInterface経由で処理を
呼び出すことが可能
Game
Client
Online
Subsystem
Online
Subsystem
EOS
EOS SDK
Online
Subsystem
PF
PF SDK
59
#unrealfest


# Page. 60

![Page Image](https://bcdn.docswell.com/page/47Z1W5X4J3.jpg)

パーティ機能の実装紹介
● パーティ機能を実現するためにFaaastPenguinでは
OnlineSubsystemのSessionインターフェースを使用
- BPで扱いやすいようにラッパーを作成
※EOSHelperSubsystemは自作ラッパー
▼Sessionインターフェースの関数
CreateSession
ロビー作成
DestroySession
ロビー破壊
JoinSession
ロビーに入る
LeaveSession
ロビーから抜ける
etc...
※本講演でのパーティ＝EOSのロビー機能
60
#unrealfest


# Page. 61

![Page Image](https://bcdn.docswell.com/page/YJ6LG94GEV.jpg)

パーティ機能の実装紹介
● OnlineSubsystemは「非同期通信」を取り扱うよう設計されている
→ 各動作の完了はInterfaceが持つDelegateで受け取る
● ロビー作成, ロビー破壊, ロビー加入, ロビー脱退 等...
- 各リクエストの前に「AddOn○○Delegate_Handle()」で登録
- 各リクエスト完了に「ClearOn○○Delegate_Handle()」で解除
● 招待受け取り, メンバー加入時, ロビー設定更新時 等...
- ラッパークラスでのセットアップ時にまとめて登録
- 「AddOn○○Delegate_Handle()」
61
#unrealfest


# Page. 62

![Page Image](https://bcdn.docswell.com/page/GJ51VNQX74.jpg)

パーティ機能を扱う際の注意点
● OnlineSubsystemEOSのSessionインターフェースを使うとき
EOS GSには「ロビー」と「セッション」がある
- どちらもSessionインターフェースから呼ばれる
- CreateSession時のロビー設定で切り替え可能
→ FOnlineSessionSettings-&gt;bUseLobbiesIfAvailableで設定
OSS
OSS EOS
Session
EOS GS
ロビー
EOS GS
セッション
62
#unrealfest


# Page. 63

![Page Image](https://bcdn.docswell.com/page/LE31D2V475.jpg)

パーティ機能を扱う際の注意点
● ロビー
ｰ WebSocketを用いた持続的な接続が有効になる
ｰ ゲームサーバーを介さずに情報のやり取りが可能
ｰ 最大64人
ｰ DedicatedServerで使用不可
ｰ FaaastPenguinではこちらを使用
● セッション
ｰ 持続的な接続はなく、都度HTTPリクエストが行われる
ｰ 最大1000人
ｰ DedicatedServerで使用可能
ｰ FaaastPenguinでは未使用
※本講演ではパーティ＝ロビー
63
#unrealfest


# Page. 64

![Page Image](https://bcdn.docswell.com/page/8EDXPZ85JG.jpg)

パーティ機能の実装紹介
● FaaastPenguinでのパーティ（ロビー）について
64
#unrealfest


# Page. 65

![Page Image](https://bcdn.docswell.com/page/V7PPND8D78.jpg)

パーティ機能の実装紹介
● フレンドを招待するには、自分がロビーに所属している必要がある
→ ユーザーは常に何かしらのロビーに参加している状態にする
● 起動時
- 「自分のロビーを作成」
● 招待受理時
- 「自身のロビーを破壊」→「招待を受けたロビーに加入」
● ロビー脱退時
- 「所属中のロビーから脱退」→「自分のロビーを作成」
65
#unrealfest


# Page. 66

![Page Image](https://bcdn.docswell.com/page/2JV2K1NGJQ.jpg)

パーティ機能の実装紹介
● プライベートマッチ用の実装方法
66
#unrealfest


# Page. 67

![Page Image](https://bcdn.docswell.com/page/5EGRQ25DJL.jpg)

パーティ機能の実装紹介
● ホスト
- 公開人数を40人、招待を無効にしたロビーを作成
- EOSのロビーIDをFaaastPenguinのバックエンドに登録
- バックエンドで5桁のIDを発行して紐付け
● ゲスト
- 5桁のIDに紐づいたEOSのロビーIDをバックエンドから取得
- EOSのロビーIDを使ってロビーを検索して見つかったロビーに参加
67
#unrealfest


# Page. 68

![Page Image](https://bcdn.docswell.com/page/4JQVKPZX7P.jpg)

パーティ機能の実装紹介
● ロビーIDからのロビー加入について
FString型 セッションID
Session-&gt;CreateSessionIdFromString()で変換
FUniqueNetIdPtr型 セッションID
Session-&gt;FindSessionById()でロビーを検索
FOnlineSessionSearchResult型
ロビー検索結果
Session-&gt;JoinSession()でロビーに参加をリクエスト
ロビー加入
68
#unrealfest


# Page. 69

![Page Image](https://bcdn.docswell.com/page/K74MPY32J1.jpg)

パーティ機能の実装紹介
CreateSessionの実装例
69
#unrealfest


# Page. 70

![Page Image](https://bcdn.docswell.com/page/LJ18961KEG.jpg)

パーティ機能の実装紹介
CreateSession完了時の実装例
70
#unrealfest


# Page. 71

![Page Image](https://bcdn.docswell.com/page/GJWZQW8PJ2.jpg)

パーティ機能の実装紹介
コールバックの初期セットアップの実装例
71
#unrealfest


# Page. 72

![Page Image](https://bcdn.docswell.com/page/4EZ1W58673.jpg)

OnlineSubsystemEOSでの実装紹介
● プラットフォーム専用対応について
ｰ プラットフォームによってはEOSではなく、プラットフォーム機能からの招待にも
対応する必要があるので、実装時に考慮する必要がある
- IOnlineSubsystem::GetByPlatform() でプラットフォーム側の OnlineSubsystem の
インターフェースが取得可能
- EOSでの CreateSession 完了時には、本来のBP用 Delegate は完了させず
プラットフォームの CreateSession を呼び出し、それらが完了した後に
本来のBP用 Delegate を完了させる
72
#unrealfest


# Page. 73

![Page Image](https://bcdn.docswell.com/page/Y76LG9PLJV.jpg)

OnlineSubsystemEOSでの実装紹介
エンジン側を変更して対応した代表的なもの
● プラットフォームのログイン時の認証の型設定
● UE5.3時点で足りていなかった機能の実装
● EOSオーバーレイの言語切り替え
FUserManagerEOS::Init()でUIの言語を変更
EOS_Platform_SetOverrideLocaleCode を直接呼び出し
想像以上にエンジン側に変更を入れる必要がなかった
73
#unrealfest


# Page. 74

![Page Image](https://bcdn.docswell.com/page/G751VNKME4.jpg)

最後に
● EOSを採用したおかげで、大幅な実装工数を削減する事ができた
とくにアカウント管理など各種サービスを一から構築するのは難しい
おおよそ２カ月ほどでこれらを実装する事ができた
一から作るとなると半年以上はかかるはず…
● GSとEASの違いをきちんと把握した上で
プランナーと仕様を切っていくのが重要！
74
#unrealfest


# Page. 75

![Page Image](https://bcdn.docswell.com/page/9J2135WR7R.jpg)

宣伝
https://historia.co.jp/enterprise/soundxr/
75
#unrealfest


# Page. 76

![Page Image](https://bcdn.docswell.com/page/DEYZ1KL57M.jpg)

宣伝
https://faaast-penguin.com/ja/
76
#unrealfest


# Page. 77

![Page Image](https://bcdn.docswell.com/page/VJN32R44J8.jpg)

ご清聴ありがとうございました
77
#unrealfest


