Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ポケラボ内製リアルタイム通信エンジンの昇華

 ポケラボ内製リアルタイム通信エンジンの昇華

GREE Tech Conference 2022で発表された資料です。
https://techcon.gree.jp/2022/session/TrackB-5

gree_tech
PRO

October 25, 2022
Tweet

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. ポケラボ内製 リアルタイム通信エンジンの 昇華 株式会社ポケラボ エンジニアマネージャー 齋藤冬斗 株式会社ポケラボ サーバサイドエンジニア 山口拓郎

  2. • リアルタイム通信エンジンに興味がある方 • 自社製エンジンの replace に興味がある方 • ポケラボ、そしてポケラボがどんなことをやっているか興味がある方 本講演のターゲットについて 2


  3. 3
 自己紹介 齋藤 冬斗 (Fuyuto Saito) • モバイルゲーム会社にてモバイルゲーム、コンシューマゲーム、 リアルタイム通信エンジンの開発を経て2015年10月にポケラボに入社 戦姫絶唱シンフォギアXD

    UNLIMITED の開発などを担当 山口 拓郎 (Takuro Yamaguchi) • 2016年新卒エンジニアとしてポケラボに入社 • 『AKB48ステージファイター2 バトルフェスティバル』 • 『SINoALICE -シノアリス-』 などを担当
  4. 現在運用タイトルは2本で • SINoALICE ーシノアリスー ..2022年6月で5周年 • アサルトリリィ Last Bullet ..2022年7月で1.5周年

    を迎えています ポケラボの紹介 4
 © SQEX ©AZONE INTERNATIONAL・acus/アサルトリリィプロジェクト ©Pokelabo, Inc. ©SHAFT
  5. シノアリス、アサルトリリィともにインゲーム(GvG)で使用 本講演では、この内製リアルタイム通信エンジンについてご紹介します この2タイトルで内製リアルタイム通信エンジンを使用 5
 SINoALICE ーシノアリスーのインゲーム「コロシアム」 アサルトリリィ Last Bulletのインゲーム「レギオンマッチ」 ©AZONE

    INTERNATIONAL・acus/アサルトリリィプロジェクト ©Pokelabo, Inc. ©SHAFT © P/SQEX
  6. 本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 6


  7. 本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 7


  8. 通称:Reflector 8
 長きにわたってポケラボのGvGエンジンの一翼を担う ポケラボ内製リアルタイム通信エンジン 過去のポケラボタイトルから シノアリス そして アサルトリリィ と ©

    SQEX ©AZONE INTERNATIONAL・acus/アサルトリリィプロジェクト ©Pokelabo, Inc. ©SHAFT 2012年リリースタイ トルA 2012年リリースタイ トルB 2018年リリースタイ トルC
  9. Reflectorにおけるバトルシステム紹介(構成) 9
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached
  10. Reflectorにおけるバトルシステム紹介(構成) 10
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached • Reflector ◦ コードはJavaで記載 ◦ クライアントと常時接続 ◦ App サーバが提供する HTTP サービスを定期的に実行 ◦ データストアとして Hazelcast を 使用 • Hazelcast ◦ 以下のデータを管理 ▪ ルームのメンバー情報
  11. 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 の読み込み負担を軽減
  12. Reflectorにおけるバトルシステム紹介(ルーム参加) 12
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 1
  13. Reflectorにおけるバトルシステム紹介(ルーム参加) 13
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 1 2
  14. Reflectorにおけるバトルシステム紹介(ルーム参加) 14
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. ルーム参加通信を送信 2. Hazelcast にメンバー登録 3. 参加メンバーの情報を App サーバから取得 1 3 2
  15. 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
  16. 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
  17. 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
  18. Reflectorにおけるバトルシステム紹介(状態同期) 18
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 1
  19. Reflectorにおけるバトルシステム紹介(状態同期) 19
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 2. 現在の状態を DB から取得し 定期処理を実行 1 2
  20. Reflectorにおけるバトルシステム紹介(状態同期) 20
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. App サーバへ現在の状態を取得する HTTP サービスを実行 2. 現在の状態を DB から取得し 定期処理を実行 3. 処理の実行結果を Reflector に返却 1 2 3
  21. 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
  22. Reflectorにおけるバトルシステム紹介(ユーザー行動) 22
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 1
  23. Reflectorにおけるバトルシステム紹介(ユーザー行動) 23
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 2. App サーバへユーザーの行動を 登録する HTTP サービスを実行 1 2
  24. Reflectorにおけるバトルシステム紹介(ユーザー行動) 24
  client Android iOS Windows ALB Reflector Hazelcast App

    ALB Amazon Aurora Memcached 1. スキル使用などのユーザーの 行動メッセージを送信 2. App サーバへユーザーの行動を 登録する HTTP サービスを実行 3. 行動に基づいた処理を実行しDB に 結果を保存、 Reflector に返却 1 2 3
  25. 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
  26. 本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 26


  27. Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 27


  28. Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 28


  29. Reflectorの課題点① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい 現在のポケラボにおける基本的な開発言語は • クライアント:C#(Unity) • サーバ:PHP(LAMP環境) のため、Javaは必須とされていない。 採用に関してもJavaは歓迎要件としている。 今まではJavaを扱えるエンジニアが各プロダクトにおり、それぞれメンテナンスを行っていたが、

    直近では各プロダクトにJavaを扱えるエンジニアを置くのが難しくなってきた 29

  30. Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 30


  31. Reflectorの課題点② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある • 処理をPHP Ingame Logicで実行するため • ソロ(Reflector接続なし) ..C#で記述 •

    マルチ(Reflector接続あり) ..PHPで記述 と、仮にソロとマルチが全く同じインゲームであっても 別途PHP用に実装が必要 • そのため、実装工数も確認工数も倍になってしまう • プロダクトによっては • C# ..クライアントエンジニア領域 • PHP ..サーバエンジニア領域 必要なスキルセットが異なるので担当者も分かれてしまい、   不具合発生のリスクも増えてしまっている 31
  ゲームサーバ   バトルロジック(マルチ)  Reflector       バトルロジック(ソロ) アプリ
  32. Reflectorの課題点 ① 現在はJavaを使えるエンジニアが社内で少ないためメンテナンスしづらい ② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう 32


  33.   Reflectorの課題点③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう • 状態同期はReflector→Appサーバに毎秒APIを実行しており、   これにより膨大な通信量になっている • プレイヤー行動、状態同期ともにAppサーバ内で処理を 行っているためユーザー数に応じたインスタンス数が常に必要 •

    状態同期ではRDSから都度最新の情報を取得しており、 RDSもこれに耐えられるような規模の台数が必要 33
        ゲームサーバ  Reflector            RDS Amazon Aurora
  34. Reflectorの課題点の解決策 中長期で開発効率向上、及び運用コスト削減の観点から • Reflectorの改修 • 外部のリアルタイム通信エンジンの採用 の2パターンから解決策を検討 34
 Reflectorをそのまま使い続けると •

    Reflecotr の保守性の低下 • 運用コスト(開発工数・サーバ費)も高い状態が継続してしまう
  35. Reflectorの課題点の解決策 35
 大項目 言語 (課題①) 開発工数減 (課題②) DB削減 (課題③) リアルタイム性

    発生コスト サポート 拡張性 Reflectorの改修 自由 〇 〇 〇 なし(人的コストのみ) 不要 〇 外部有料サービスを採用 サービスで 固定 △ 〇 〇 高(固定費 + 従量課金) 〇 △(制限あり) 課題の解決可能性、その他項目の観点で比較し、 自社でReflectorを改修することが最善と判断。 その上でポケラボ内製リアルタイムエンジンを昇華させた 「新しい内製リアルタイム通信エンジン」を開発する方針に決定
  36. 本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 36


  37. 新たなポケラボ内製リアルタイム通信エンジンの紹介 その名も・・・ 37
 Reflector Next

  38. ReflectorNextとは ポケラボの次世代リアルタイム通信エンジン • 既存のReflector機能は基本的に維持 • MessageのPub/Sub、Appサーバーとの通信、監視機能など • 使用言語はC# • インゲームを記述するLogicModuleを新たに追加

    • 新しい機能モジュールで、受け入れ側の開発者による機能拡張ができる • PHPではなくC#で記載できるため、クライアント側のインゲームのロジックを そのまま移植し、動作させることができる ※ただし、クライアント側はVector3といった  Unity標準のスクリプトを使用することはできない 38

  39. • インゲームを記述するLogicModuleを新たに追加 ReflectorNextとは 39
 Logic Module ソロバトル Logic Module マルチバトル

    ReflectorNext
  40. ReflectorNext バトルシステム紹介(構成) 40
  client Android iOS Windows Cloud Load Balancing

    ReflectorNext Hazelcast App Cloud Spanner Memcached Cloud Load Balancing
  41. ReflectorNext バトルシステム紹介(構成) 41
  client Android iOS Windows Cloud Load Balancing

    ReflectorNext Hazelcast App Cloud Spanner Memcached Cloud Load Balancing • ReflectorNext ◦ クライアントと常時接続 ◦ データストアは引き続き Hazelcast を使用 • Hazelcast ◦ 以下のデータを管理 ▪ ルームのメンバー情報 ▪ ルームの状態 ▪ メンバーのHP, バフなど のステータス状態 • DB に Spanner を採用
  42. ReflectorNext バトルシステム紹介(ルーム参加) 42
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 ReflectorNext ① ルーム参加通信を送信
  43. ReflectorNext バトルシステム紹介(ルーム参加) 43
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 2 ReflectorNext
  44. ReflectorNext バトルシステム紹介(ルーム参加) 44
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 3 ① ルーム参加通信を送信 ② Hazelcast にメンバー登録 ③ 参加メンバーの情報を   App サーバから取得 2 ReflectorNext
  45. 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
  46. 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
  47. 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
  48. ReflectorNext バトルシステム紹介(状態同期) 48
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 1 ① 現在の状態を hazelcast から取得し   定期処理を実行 ReflectorNext
  49. ReflectorNext バトルシステム紹介(状態同期) 49
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 2 1 ① 現在の状態を hazelcast から取得し   定期処理を実行 ② 定期処理の実行結果を同バトルの ルームに所属する client に broadcast ReflectorNext
  50. ReflectorNext バトルシステム紹介(状態同期) 50
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing 2 1 ReflectorNext
  51. ReflectorNext バトルシステム紹介(プレイヤー行動) 51
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing ① スキル使用などのプレイヤー行動 メッセージを送信 1 ReflectorNext
  52. ReflectorNext バトルシステム紹介(プレイヤー行動) 52
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing ① スキル使用などのプレイヤー行動 メッセージを送信 ② バトル状況を Hazelcast から取得し、   プレイヤー行動処理を実行 1 2 ReflectorNext
  53. ReflectorNext バトルシステム紹介(プレイヤー行動) 53
  client Android iOS Windows Cloud Load Balancing

    Hazelcast App Cloud Spanner Memcached Cloud Load Balancing ① スキル使用などのプレイヤー行動 メッセージを送信 ② バトル状況を Hazelcast から取得し、   プレイヤー行動処理を実行 ③ 処理の実行結果を同バトルの ルームに所属する client に broadcast 1 2 3 ReflectorNext
  54. • Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient

    • Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 54

  55. • Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient

    • Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 55

  56. 使用しているライブラリ:SocketIOSharp ReflectorNext 使用ライブラリ • Socket.IOプロトコルを処理するレイヤー • Reflector では Java の

    Socket.IO ライブラリを使用しており、 これのC#対応版として使用 56

  57. • Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient

    • Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 57

  58. 使用しているライブラリ:.NET HttpClient ReflectorNext 使用ライブラリ • HTTPクライアントで、非同期型でHTTPリクエストを送信できる • レスポンスはコールバックで処理 • HTTPコネクションプールの機能を持ち、利用する側はリクエストの完了を待たずに

    次のリクエストを送ることができる • ReflectorではJavaのApache http async clientを使用しており、 これのC#対応版として使用 58

  59. • Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient

    • Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 59

  60. 使用しているライブラリ:.Hazelcast .NET Client ReflectorNext 使用ライブラリ • Hazelcast を利用するために使用 • Java

    や .NETなど様々な言語の接続用クライアントライブラリがある • ReflectorではJavaのHazelcast Java Clientを使用しており、 これのC#対応版として使用 60

  61. • Socket.IO ◦ SocketIOSharp • http client ◦ .NET HttpClient

    • Hazelcast ◦ Hazelcast .NET Client • 監視 ◦ Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ一覧 61

  62. 使用しているライブラリ:Prometheus .NET、 Prometheus .NET dotnet Runtime ReflectorNext 使用ライブラリ • 内部の状況を確認するために使用

    • Counter/Gauge/Histogramなどの基本メトリクス収集機能SDK • dotnet Runtime で dotnet アプリケーションの runtime メトリクスを収集 • ex) GC, Thread, Network • .NET の既知の EventCounter も組み合わせて使用 62

  63. ReflectorNext におけるメトリクスの検討 63
 • 既存Reflector は稼働状況を正確に把握するための メトリクスが少なかったため、メトリクスの拡充を実施 • 取得するメトリクスで注視したポイント •

    処理のボトルネックを検知しやすくするために duration を細かく計測 • 異常検知を容易に行うために duration, rate を sucess / error 別に計測
  64. ReflectorNext におけるメトリクスの検討 64
 例1 Client ReflectorNext Hazelcast Logic Module app

    send message exec logic function exec API exec broadcast
  65. ReflectorNext におけるメトリクスの検討 65
 例1 Client ReflectorNext Hazelcast Logic Module app

    send message exec logic function exec API exec broadcast
  66. ReflectorNext におけるメトリクスの検討 66
 例1 Client ReflectorNext Hazelcast Logic Module app

    send message exec logic function exec API exec broadcast
  67. ReflectorNext におけるメトリクスの検討 67
 Client ReflectorNext Hazelcast Logic Module app send

    message exec logic function exec API exec broadcast Message Duration 例1
  68. ReflectorNext におけるメトリクスの検討 68
 Client ReflectorNext Hazelcast Logic Module app send

    message exec logic function exec API exec broadcast logic Duration 例1
  69. ReflectorNext におけるメトリクスの検討 69
 Client ReflectorNext Hazelcast Logic Module app send

    message exec logic function exec API exec broadcast http Duration 例1
  70. ReflectorNext におけるメトリクスの検討 70
 Client ReflectorNext Hazelcast Logic Module app send

    message exec logic function exec API exec broadcast broadcast Duration 例1
  71. ReflectorNext におけるメトリクスの検討 71
 例2 以下の実行回数/実行時間を 成功/失敗時 それぞれ別に 取得 • message

    event • http event • room event • broadcast event
  72. Reflector Next まとめ 72
 課題① 現在はJavaを使えるENが少ないためメンテナンスしづらい 課題② ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある 課題③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう

  73. Reflector Next まとめ 課題① 現在はJavaを使えるENが少ないためメンテナンスしづらい ⇒Unity で馴染みのある C# に変更することでメンテナンスがしやすくなる 課題②

    ソロとマルチが同じインゲームでも、別途PHPでロジックを書く必要がある ⇒ソロとマルチでインゲームが同じであれば、使用プログラム言語が同じため開発効率が上がる 課題③ Appサーバで処理を実行している仕組み上、サーバ費が大幅に増加してしまう ⇒ バトル中にDBを利用しないため、サーバコスト削減が見込める(コストの約20%カット) 73
 解決 解決 解決
  74. Reflector Next まとめ 74
 従来のポケラボ内製リアルタイム通信エンジンの 課題全てを解決できるのが Reflector Next

  75. 本日のアジェンダ 1. 現行のポケラボ内製リアルタイム通信エンジンの紹介 2. 運用における課題点について 3. 新たなポケラボ内製リアルタイム通信エンジンの紹介 4. 今後の展望 75


  76. 今後の展望 76
 ReflectorNextを ポケラボの新たな内製リアルタイム通信エンジンとし て運用できるよう準備中

  77. 現在の進捗 77
 ReflectorNext 本体の実装 
 マスタデータの取り扱い 
 負荷テスト準備(モニタリングシステム、テストシナリオなど) 
 負荷テスト実施、及び不具合修正とリスクの洗い出し

    
 開発を支援するデバッグ機能の作成 
 完 了 完 了 完 了 着 手 中 着 手 中
  78.  Reflector Next こんなことも将来的にはやっていきたい 78
  ゲームサーバ   バトルロジック      

    アプリ • 機械学習の導入 ◦ バトルバランスの調整サポート ◦ 賢いAIの創出 • バックオフィス上でバトルシミュレーション機能 ◦ 実機無しでバトルのバランス調整や 動作確認ができる
  79. None
  80. 80