Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ポケラボ内製リアルタイム通信エンジンの昇華
Search
gree_tech
PRO
October 25, 2022
Technology
1
2.6k
ポケラボ内製リアルタイム通信エンジンの昇華
GREE Tech Conference 2022で発表された資料です。
https://techcon.gree.jp/2022/session/TrackB-5
gree_tech
PRO
October 25, 2022
Tweet
Share
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
850
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
24
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.3k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
130
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
120
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
640
あうもんと学ぶGenAIOps
gree_tech
PRO
0
180
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
200
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
160
Other Decks in Technology
See All in Technology
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
270
.NET 10のEntity Framework Coreの新機能
htkym
0
120
IPv6-mostly field report from RubyKaigi 2026
sorah
0
200
生成AIシステムとAIエージェントに関する性能や安全性の評価
shibuiwilliam
1
150
PostgreSQL で列データ”ファイル”を利用する ~Arrow/Parquet を統合したデータベースの作成~
kaigai
0
170
"'TSのAPI型安全”の対価は誰が払う?不公平なスキーマ駆動に終止符を打つハイブリッド戦略
hal_spidernight
0
160
雲勉LT_Amazon Bedrock AgentCoreを知りAIエージェントに入門しよう!
ymae
2
220
ABEJA FIRST GUIDE for Software Engineers
abeja
0
3.2k
TypeScript 6.0で非推奨化されるオプションたち
uhyo
15
5.2k
機械学習を「社会実装」するということ 2025年冬版 / Social Implementation of Machine Learning November 2025 Version
moepy_stats
4
360
現地速報!Microsoft Ignite 2025 M365 Copilotアップデートレポート
kasada
2
1.7k
Bedrock のコスト監視設計
fohte
2
220
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
970
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing for Performance
lara
610
69k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
How to Ace a Technical Interview
jacobian
280
24k
A better future with KSS
kneath
239
18k
GraphQLとの向き合い方2022年版
quramy
49
14k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Transcript
ポケラボ内製 リアルタイム通信エンジンの 昇華 株式会社ポケラボ エンジニアマネージャー 齋藤冬斗 株式会社ポケラボ サーバサイドエンジニア 山口拓郎
• リアルタイム通信エンジンに興味がある方 • 自社製エンジンの replace に興味がある方 • ポケラボ、そしてポケラボがどんなことをやっているか興味がある方 本講演のターゲットについて 2
3 自己紹介 齋藤 冬斗 (Fuyuto Saito) • モバイルゲーム会社にてモバイルゲーム、コンシューマゲーム、 リアルタイム通信エンジンの開発を経て2015年10月にポケラボに入社 戦姫絶唱シンフォギアXD
UNLIMITED の開発などを担当 山口 拓郎 (Takuro Yamaguchi) • 2016年新卒エンジニアとしてポケラボに入社 • 『AKB48ステージファイター2 バトルフェスティバル』 • 『SINoALICE -シノアリス-』 などを担当
現在運用タイトルは2本で • SINoALICE ーシノアリスー ..2022年6月で5周年 • アサルトリリィ Last Bullet ..2022年7月で1.5周年
を迎えています ポケラボの紹介 4 © SQEX ©AZONE INTERNATIONAL・acus/アサルトリリィプロジェクト ©Pokelabo, Inc. ©SHAFT
シノアリス、アサルトリリィともにインゲーム(GvG)で使用 本講演では、この内製リアルタイム通信エンジンについてご紹介します この2タイトルで内製リアルタイム通信エンジンを使用 5 SINoALICE ーシノアリスーのインゲーム「コロシアム」 アサルトリリィ Last Bulletのインゲーム「レギオンマッチ」 ©AZONE
INTERNATIONAL・acus/アサルトリリィプロジェクト ©Pokelabo, Inc. ©SHAFT © P/SQEX
本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 6
本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 7
通称:Reflector 8 長きにわたってポケラボのGvGエンジンの一翼を担う ポケラボ内製リアルタイム通信エンジン 過去のポケラボタイトルから シノアリス そして アサルトリリィ と ©
SQEX ©AZONE INTERNATIONAL・acus/アサルトリリィプロジェクト ©Pokelabo, Inc. ©SHAFT 2012年リリースタイ トルA 2012年リリースタイ トルB 2018年リリースタイ トルC
Reflectorにおけるバトルシステム紹介(構成) 9 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached
Reflectorにおけるバトルシステム紹介(構成) 10 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached • Reflector ◦ コードはJavaで記載 ◦ クライアントと常時接続 ◦ App サーバが提供する HTTP サービスを定期的に実行 ◦ データストアとして Hazelcast を 使用 • Hazelcast ◦ 以下のデータを管理 ▪ ルームのメンバー情報
Reflectorにおけるバトルシステム紹介(構成) 11 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached • App ◦ Apache / PHP(7.3) ◦ Reflector からの HTTP 通信を 受け、バトルの処理を実行 • Amazon Aurora ◦ 以下のデータを管理 ▪ ルームの状態 ▪ メンバーのHP, バフなどの ステータス状態 • Memcached ◦ 分散型キャッシュシステム ◦ DB の読み込み負担を軽減
Reflectorにおけるバトルシステム紹介(ルーム参加) 12 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 1
Reflectorにおけるバトルシステム紹介(ルーム参加) 13 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 1 2
Reflectorにおけるバトルシステム紹介(ルーム参加) 14 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 3. 参加メンバーの情報を App サーバから取得 1 3 2
Reflectorにおけるバトルシステム紹介(ルーム参加) 15 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 3. 参加メンバーの情報を App サーバから取得 4. 参加メンバーの情報を DB から取得 1 3 4 2
Reflectorにおけるバトルシステム紹介(ルーム参加) 16 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 3. 参加メンバーの情報を App サーバから取得 4. 参加メンバーの情報を DB から取得 5. 参加メンバーの情報を返却 1 3 4 5 2
Reflectorにおけるバトルシステム紹介(ルーム参加) 17 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 3. 参加メンバーの情報を App サーバから取得 4. 参加メンバーの情報を DB から取得 5. 参加メンバーの情報を返却 6. 返却された結果を 同バトルの ルームに所属する client に broadcast 1 3 4 5 6 2
Reflectorにおけるバトルシステム紹介(状態同期) 18 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 1
Reflectorにおけるバトルシステム紹介(状態同期) 19 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 2. 現在の状態を DB から取得し 定期処理を実行 1 2
Reflectorにおけるバトルシステム紹介(状態同期) 20 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 2. 現在の状態を DB から取得し 定期処理を実行 3. 処理の実行結果を Reflector に返却 1 2 3
Reflectorにおけるバトルシステム紹介(状態同期) 21 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 2. 現在の状態を DB から取得し 定期処理を実行 3. 処理の実行結果を Reflector に返却 4. App サーバから返却された結果を client に転送 1 2 3 4
Reflectorにおけるバトルシステム紹介(ユーザー行動) 22 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 1
Reflectorにおけるバトルシステム紹介(ユーザー行動) 23 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 2. App サーバへユーザーの行動を 登録する HTTP サービスを実行 1 2
Reflectorにおけるバトルシステム紹介(ユーザー行動) 24 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 2. App サーバへユーザーの行動を 登録する HTTP サービスを実行 3. 行動に基づいた処理を実行しDB に 結果を保存、 Reflector に返却 1 2 3
Reflectorにおけるバトルシステム紹介(ユーザー行動) 25 client Android iOS Windows ALB Reflector Hazelcast App
ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 2. App サーバへユーザーの行動を 登録する HTTP サービスを実行 3. 行動に基づいた処理を実行しDB に 結果を保存、 Reflector に返却 4. 返却された結果を Client に転送 1 2 3 4
本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 26
Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 27
Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 28
Reflectorの課題点① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい 現在のポケラボにおける基本的な開発言語は • クライアント:C#(Unity) • サーバ:PHP(LAMP環境) のため、Javaは必須とされていない。 採用に関してもJavaは歓迎要件としている。 今まではJavaを扱えるエンジニアが各プロダクトにおり、それぞれメンテナンスを行っていたが、
直近では各プロダクトにJavaを扱えるエンジニアを置くのが難しくなってきた 29
Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 30
Reflectorの課題点② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある • 処理をPHP Ingame Logicで実行するため • ソロ(Reflector接続なし) ..C#で記述 •
マルチ(Reflector接続あり) ..PHPで記述 と、仮にソロとマルチが全く同じインゲームであっても 別途PHP用に実装が必要 • そのため、実装工数も確認工数も倍になってしまう • プロダクトによっては • C# ..クライアントエンジニア領域 • PHP ..サーバエンジニア領域 必要なスキルセットが異なるので担当者も分かれてしまい、 不具合発生のリスクも増えてしまっている 31 ゲームサーバ バトルロジック(マルチ) Reflector バトルロジック(ソロ) アプリ
Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 32
Reflectorの課題点③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう • 状態同期はReflector→Appサーバに毎秒APIを実行しており、 これにより膨大な通信量になっている • プレイヤー行動、状態同期ともにAppサーバ内で処理を 行っているためユーザー数に応じたインスタンス数が常に必要 •
状態同期ではRDSから都度最新の情報を取得しており、 RDSもこれに耐えられるような規模の台数が必要 33 ゲームサーバ Reflector RDS Amazon Aurora
Reflectorの課題点の解決策 中長期で開発効率向上、及び運用コスト削減の観点から • Reflectorの改修 • 外部のリアルタイム通信エンジンの採用 の2パターンから解決策を検討 34 Reflectorをそのまま使い続けると •
Reflecotr の保守性の低下 • 運用コスト(開発工数・サーバ費)も高い状態が継続してしまう
Reflectorの課題点の解決策 35 大項目 言語 (課題①) 開発工数減 (課題②) DB削減 (課題③) リアルタイム性
発生コスト サポート 拡張性 Reflectorの改修 自由 〇 〇 〇 なし(人的コストのみ) 不要 〇 外部有料サービスを採用 サービスで 固定 △ 〇 〇 高(固定費 + 従量課金) 〇 △(制限あり) 課題の解決可能性、その他項目の観点で比較し、 自社でReflectorを改修することが最善と判断。 その上でポケラボ内製リアルタイムエンジンを昇華させた 「新しい内製リアルタイム通信エンジン」を開発する方針に決定
本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 36
新たなポケラボ内製リアルタイム通信エンジンの紹介 その名も・・・ 37 Reflector Next
ReflectorNextとは ポケラボの次世代リアルタイム通信エンジン • 既存のReflector機能は基本的に維持 • MessageのPub/Sub、Appサーバーとの通信、監視機能など • 使用言語はC# • インゲームを記述するLogicModuleを新たに追加
• 新しい機能モジュールで、受け入れ側の開発者による機能拡張ができる • PHPではなくC#で記載できるため、クライアント側のインゲームのロジックを そのまま移植し、動作させることができる ※ただし、クライアント側はVector3といった Unity標準のスクリプトを使用することはできない 38
• インゲームを記述するLogicModuleを新たに追加 ReflectorNextとは 39 Logic Module ソロバトル Logic Module マルチバトル
ReflectorNext
ReflectorNext バトルシステム紹介(構成) 40 client Android iOS Windows Cloud Load Balancing
ReflectorNext Hazelcast App Cloud Spanner Memcached Cloud Load Balancing
ReflectorNext バトルシステム紹介(構成) 41 client Android iOS Windows Cloud Load Balancing
ReflectorNext Hazelcast App Cloud Spanner Memcached Cloud Load Balancing • ReflectorNext ◦ クライアントと常時接続 ◦ データストアは引き続き Hazelcast を使用 • Hazelcast ◦ 以下のデータを管理 ▪ ルームのメンバー情報 ▪ ルームの状態 ▪ メンバーのHP, バフなど のステータス状態 • DB に Spanner を採用
ReflectorNext バトルシステム紹介(ルーム参加) 42 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 ReflectorNext ① ルーム参加通信を送信
ReflectorNext バトルシステム紹介(ルーム参加) 43 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 2 ReflectorNext
ReflectorNext バトルシステム紹介(ルーム参加) 44 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 3 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 ③ 参加メンバーの情報を App サーバから取得 2 ReflectorNext
ReflectorNext バトルシステム紹介(ルーム参加) 45 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 3 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 ③ 参加メンバーの情報を App サーバから取得 ④ 参加メンバーの情報を DB から取得 4 2 ReflectorNext
ReflectorNext バトルシステム紹介(ルーム参加) 46 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 3 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 ③ 参加メンバーの情報を App サーバから取得 ④ 参加メンバーの情報を DB から取得 ⑤ 参加メンバーの情報を返却 4 5 2 ReflectorNext
ReflectorNext バトルシステム紹介(ルーム参加) 47 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 3 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 ③ 参加メンバーの情報を App サーバから取得 ④ 参加メンバーの情報を DB から取得 ⑤ 参加メンバーの情報を返却 ⑥ 返却された結果を 同バトルの ルームに所属する client に broadcast 4 5 6 2 ReflectorNext
ReflectorNext バトルシステム紹介(状態同期) 48 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 ① 現在の状態を hazelcast から取得し 定期処理を実行 ReflectorNext
ReflectorNext バトルシステム紹介(状態同期) 49 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 2 1 ① 現在の状態を hazelcast から取得し 定期処理を実行 ② 定期処理の実行結果を同バトルの ルームに所属する client に broadcast ReflectorNext
ReflectorNext バトルシステム紹介(状態同期) 50 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 2 1 ReflectorNext
ReflectorNext バトルシステム紹介(プレイヤー行動) 51 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing ① スキル使用などのプレイヤー行動 メッセージを送信 1 ReflectorNext
ReflectorNext バトルシステム紹介(プレイヤー行動) 52 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing ① スキル使用などのプレイヤー行動 メッセージを送信 ② バトル状況を Hazelcast から取得し、 プレイヤー行動処理を実行 1 2 ReflectorNext
ReflectorNext バトルシステム紹介(プレイヤー行動) 53 client Android iOS Windows Cloud Load Balancing
Hazelcast App Cloud Spanner Memcached Cloud Load Balancing ① スキル使用などのプレイヤー行動 メッセージを送信 ② バトル状況を Hazelcast から取得し、 プレイヤー行動処理を実行 ③ 処理の実行結果を同バトルの ルームに所属する client に broadcast 1 2 3 ReflectorNext
• Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient
• Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 54
• Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient
• Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 55
使用しているライブラリ:SocketIOSharp ReflectorNext 使用ライブラリ • Socket.IOプロトコルを処理するレイヤー • Reflector では Java の
Socket.IO ライブラリを使用しており、 これのC#対応版として使用 56
• Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient
• Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 57
使用しているライブラリ:.NET HttpClient ReflectorNext 使用ライブラリ • HTTPクライアントで、非同期型でHTTPリクエストを送信できる • レスポンスはコールバックで処理 • HTTPコネクションプールの機能を持ち、利用する側はリクエストの完了を待たずに
次のリクエストを送ることができる • ReflectorではJavaのApache http async clientを使用しており、 これのC#対応版として使用 58
• Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient
• Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 59
使用しているライブラリ:.Hazelcast .NET Client ReflectorNext 使用ライブラリ • Hazelcast を利用するために使用 • Java
や .NETなど様々な言語の接続用クライアントライブラリがある • ReflectorではJavaのHazelcast Java Clientを使用しており、 これのC#対応版として使用 60
• Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient
• Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 61
使用しているライブラリ:Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ • 内部の状況を確認するために使用
• Counter/Gauge/Histogramなどの基本メトリクス収集機能SDK • dotnet Runtime で dotnet アプリケーションの runtime メトリクスを収集 • ex) GC, Thread, Network • .NET の既知の EventCounter も組み合わせて使用 62
ReflectorNext におけるメトリクスの検討 63 • 既存Reflector は稼働状況を正確に把握するための メトリクスが少なかったため、メトリクスの拡充を実施 • 取得するメトリクスで注視したポイント •
処理のボトルネックを検知しやすくするために duration を細かく計測 • 異常検知を容易に行うために duration, rate を sucess / error 別に計測
ReflectorNext におけるメトリクスの検討 64 例1 Client ReflectorNext Hazelcast Logic Module app
send message exec logic function exec API exec broadcast
ReflectorNext におけるメトリクスの検討 65 例1 Client ReflectorNext Hazelcast Logic Module app
send message exec logic function exec API exec broadcast
ReflectorNext におけるメトリクスの検討 66 例1 Client ReflectorNext Hazelcast Logic Module app
send message exec logic function exec API exec broadcast
ReflectorNext におけるメトリクスの検討 67 Client ReflectorNext Hazelcast Logic Module app send
message exec logic function exec API exec broadcast Message Duration 例1
ReflectorNext におけるメトリクスの検討 68 Client ReflectorNext Hazelcast Logic Module app send
message exec logic function exec API exec broadcast logic Duration 例1
ReflectorNext におけるメトリクスの検討 69 Client ReflectorNext Hazelcast Logic Module app send
message exec logic function exec API exec broadcast http Duration 例1
ReflectorNext におけるメトリクスの検討 70 Client ReflectorNext Hazelcast Logic Module app send
message exec logic function exec API exec broadcast broadcast Duration 例1
ReflectorNext におけるメトリクスの検討 71 例2 以下の実行回数/実行時間を 成功/失敗時 それぞれ別に 取得 • message
event • http event • room event • broadcast event
Reflector Next まとめ 72 課題① 現在はJavaを使えるENが少ないためメンテナンスしづらい 課題② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある 課題③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう
Reflector Next まとめ 課題① 現在はJavaを使えるENが少ないためメンテナンスしづらい ⇒Unity で馴染みのある C# に変更することでメンテナンスがしやすくなる 課題②
ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ⇒ソロとマルチでインゲームが同じであれば、使用プログラム言語が同じため開発効率が上がる 課題③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう ⇒ バトル中にDBを利用しないため、サーバコスト削減が見込める(コストの約20%カット) 73 解決 解決 解決
Reflector Next まとめ 74 従来のポケラボ内製リアルタイム通信エンジンの 課題全てを解決できるのが Reflector Next
本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 75
今後の展望 76 ReflectorNextを ポケラボの新たな内製リアルタイム通信エンジンとし て運用できるよう準備中
現在の進捗 77 ReflectorNext 本体の実装 マスタデータの取り扱い 負荷テスト準備(モニタリングシステム、テストシナリオなど) 負荷テスト実施、及び不具合修正とリスクの洗い出し
開発を支援するデバッグ機能の作成 完 了 完 了 完 了 着 手 中 着 手 中
Reflector Next こんなことも将来的にはやっていきたい 78 ゲームサーバ バトルロジック
アプリ • 機械学習の導入 ◦ バトルバランスの調整サポート ◦ 賢いAIの創出 • バックオフィス上でバトルシミュレーション機能 ◦ 実機無しでバトルのバランス調整や 動作確認ができる
None
80