Skip to content

Instantly share code, notes, and snippets.

@guitarrapc
Created April 12, 2023 09:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guitarrapc/6c7ff2c19fb8228932f250209f8c604c to your computer and use it in GitHub Desktop.
Save guitarrapc/6c7ff2c19fb8228932f250209f8c604c to your computer and use it in GitHub Desktop.
2023年4月の Agones 事情

Agones

Kubernetes 上に Agones Controller (+ Agones Allocator) を配置して、DGS (Dedicated Game Server = Agones で管理する専用Pod) を確保する。

  • セルフホスト: 自分の Kubernetes Cluster (GKE、EKS、AKS どれでもOK) に Agones をインストールして、Agones Controller 経由でリクエストを投げて DGS を管理していく。
  • マネージド: オワコン気配

Managed Agones

GCPお得意のサービス終了させた気配がある。アナウンスはないようだが、サイレントにしれっと終了っぽい。

https://cloud.google.com/solutions/gaming?hl=ja にある、 Google Cloud Game Servers のリンクがすべて 404

2023年の3月、4月のGCP ゲームブログでも Agones は言及あるけど Managed Agones は言及なし。

Agones と DGS を外部クラスターで管理して接続を振り分ける手法

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

Agones と Dirakis Matchmaking の考え方

Dairakis という MatchMaking を用いて、Agones の DGS との通信を行う場合、次のような構成が考えらえる。

https://cloud.google.com/blog/ja/products/gaming/agones-diarkis-matchmaker

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment