[Unite2019] Google Cloud for Games 〜オープンソースからマネージドサービスへ〜
動画・スライド:なし
※ スライドが公開されてないためメモ書き程度の内容になっています
学んだ知見
- agones
- k8sを活用したサービスの場合スケールアウトをより負担なくできる
- open match
- リアルタイムマッチング機能開発を新しくする場合に使える
講演概要
フォーカスしていること
googleだからこそ
- クロスプラットフォーム
- オープンソース
- ML&データ分析
- One Google
次世代マルチプレイヤーゲーム
- real-time multiplayer experiences
- planet-scale matchmaking
1.real-time multiplayer experiences
ゲームサーバとは?
- イベントを受け持つサーバ
- 正しいゲーム世界を表示するためにゲームの状態に関するデータを送受信
- リアルタイムかつ信頼できる方法で完了しなければならない
クライアント
- PC, コンソール、モバイル
- 単一プレイヤー サーバ
- Host, VM
- 対戦プレイヤー
ゲームサーバが行うこと
- 入力を受信
- 位置トラック
- 衝突、異動管理
- 物理演算
- ゲーム状態をプレイヤーに送信
毎秒120回にも及んで処理をしている!
よく使うP2Pモデル
なぜ専用サーバが必要か?
- すでにP2Pがあるし、無料
しかし、マルチスケールしない、チート対策できない
平均以下の体験になってしまう
専用サーバモデル
- 一貫性
- スケーラブル
- セキュア
ワールドクラスの体験
最近はこちらが主流(fort night, apexなど)
→ Dedicated Game Server
典型的なアーキテクチャ
クライアント → Matchmaker ←→ Server Manager ←→ 複数のDedicated Game Server
↓
Dedicated Game Server
自前で作ると…
- 外部依存なし
- コンテナ不要
- コーディング必須
- メンテの必要性
専用サーバのデプロイ
Gameserverをたくさんよういしてやる
もう1つのやり方、コンテナ化
agonesを利用?
Agonesについて
ゲームサーバのあれこれをコンテナで正しく動作させるために作られた
SDKの機能
- ゲームサーバのライフサイクル管理
- レディネス&停止
- ヘルスチェック
- アクセスと監視の設定
- 構成値を設定
agonesを使うと、スケールダウンについて起動中のセッションを落とさずに実行できる!!
k8sだけだと起動中のものも落ちてしまう
一般的にアロケートされたものを解除したいときは、APIで解除のメソッドを呼べばallocated → readyになる
Agonesのアーキテクチャ
クライアント → Custom Matchmaker → k8s API ←→ Agones → Dedicated Game Server
Google Cloud Game Servers(agones + Google Cloud)
フルマネージドAgones
Google Cloudで グローバル&リアルタイム&マルチプレイヤー
ゲームをローンチする最もかんたんな方法
高いパフォーマンスも発揮できる
2. planet-scale matchmaking
open match
- マッチメイクフレームワーク
- 柔軟性、スケーラビリティ、拡張性にフォーカス
doodle ハロウィンで初めて利用された
アーキテクチャ
player ←→ Game Frontend → Hosted Environment(open match) ← director → Servers
Game Frontend: チート対策のために、open matchを直セスアクセスさせない(ロビーでプレイヤー情報を確認する)
director: マッチングをトリガーするプロセス
fake player0/1 → create ticket
match
return assignment to open match by director
return assignment to fake player0/1 by open match
ticker: 試合をリクエストしているプレイヤー
assignment: open matchからチケット作成者に情報が返る
現状のopen matchはv0.7
open matchの事例
- kick flight
- 360ど空中対戦アクションゲーム
- 4vs4のリアルタイムバトル