Kubernetes 上に Agones Controller (+ Agones Allocator) を配置して、DGS (Dedicated Game Server = Agones で管理する専用Pod) を確保する。
- セルフホスト: 自分の Kubernetes Cluster (GKE、EKS、AKS どれでもOK) に Agones をインストールして、Agones Controller 経由でリクエストを投げて DGS を管理していく。
- マネージド: オワコン気配
GCPお得意のサービス終了させた気配がある。アナウンスはないようだが、サイレントにしれっと終了っぽい。
https://cloud.google.com/solutions/gaming?hl=ja にある、 Google Cloud Game Servers のリンクがすべて 404
- 404: https://www.publickey1.jp/blog/20/google_cloud_game_servers.html
- 404: https://cloud.google.com/game-servers/docs/quickstart
2023年の3月、4月のGCP ゲームブログでも Agones は言及あるけど Managed Agones は言及なし。
- https://cloud.google.com/blog/products/containers-kubernetes/making-online-containerized-games-with-managed-services?hl=en
- https://cloud.google.com/blog/ja/products/gaming/how-google-cloud-for-games-enables-live-service-games
API から CloudRun 経由で、DGS の GKWクラスターに Allocation リクエストを投げて接続先を取得している。 既存の接続先管理は、Aria Allocator がやってるのかな。Agones Allocator に FindOrAllocate API で問い合わせ、Allocated なサーバーにあればそれを使う、なければあとケートして、接続先とのマッチングをしている気配。 確保された音声サーバが内部で SDK 経由でメタデータの更新を watch して、内部のコンフィグを更新。
- CustomFasSyncInterval で、FleetAutoscaler の30秒間隔を早めている
- StateAllocationFilter で、AgonesAlocation API でアロケート一覧取得時に Allocated なサーバーも取得してそう。結果、Allocate されたサーバーを管理するマン。は不要で、そのバトルの接続先だけ管理でよさそう。
- NodeExternalDNS: iOS からの接続を受け入れるために DNS に変換して、 NAT64/DNS64 で疑似IPv6 対応
ボイスチャットをGKE+Agonesで実現する技術 | MIXI DEVELOPERS https://mixi-developers.mixi.co.jp/stble-voicechat-with-agones-aec5cbebe4a4
agones 上に作る QUIC を使った音声通信機能【MIXI TECH CONFERENCE 2023】 - Speaker Deck https://speakerdeck.com/mixi_engineers/voice-communication-function-using-quic-which-created-on-agones?slide=14
任天堂プラットフォーム向け汎用ゲームサーバー - YouTube https://www.youtube.com/watch?v=HN5yDW-Vi8A
Dairakis という MatchMaking を用いて、Agones の DGS との通信を行う場合、次のような構成が考えらえる。
https://cloud.google.com/blog/ja/products/gaming/agones-diarkis-matchmaker