#gc_inside
奈良岡 仁
Customer Engineer
Google Cloud Game Servers 徹底入門
自己紹介
奈良岡 仁
Google Cloud Japan G.K.
Customer Engineer
外資系クラウドベンダーのコンサルタント、ゲーム会社のネット
ワークインフラエンジニアを経て現職。
お客様が Google Cloud を利用したシステム構築を行う際の
ご提案や課題解決など、主に技術面から支援を行なっていま
す。
最近やってるゲームは Mount & Blade II: Bannerlord と
FF7R。
ゲームサーバーとは?
ゲームサーバーはマルチプレイヤーゲーム内の イベ
ントを受け持つサーバー
クライアントが正しいゲーム世界を表示するために
ゲームの状態に関するデータを送信
またゲームサーバーは 各プレイヤーからの
入力を受け取って処理
これらはすべて高い信頼性でタイムリーに
完了しなければならない
ゲームサーバーとは?
プレイヤーからの
入力を受信
プレイヤーの位置
をトラック
ゲーム世界の
物理演算
(重力や速度など)
オブジェクト
の移動や衝
突を処理
ゲーム世界の
状態をプレイ
ヤーに送信
ゲームサーバー運用の課題
● インフラのスケールアウト / スケールイン
○ 使用中のゲームサーバーをどう守るか
● コスト効率とパフォーマンス
○ ゲームサーバーをどれだけ載せるか
○ IP、ポートの割当て
● モニタリングとロギング
● 新しいバージョンのロールアウト
数千にも及ぶマシン / ゲームサーバーを管理するには?
Agones
Openness
Google が立ち上げたオープンソースプロジェクトでベン
ダーロックインなし
Flexibility
ローカル、オンプレ、(マルチ)クラウドなど環境を選ばずに
ゲームサーバーを動作させることが可能
Simplicity
Kubernetes 上でゲームサーバーと他機能の API などを動
作させることで、ゲームの全てのバックエンドを 1 つのプラッ
トフォームに
Agones は Kubernetes 上に構築さ
れる、マルチプレイヤー向けのゲー
ムサーバーをデプロイ / ホスト / ス
ケーリングするためのオープンソース
のプラットフォーム
Agones の主な特徴
メトリクス
ゲームサーバーセッションで
起きていることを把握・可視化
するためのログ集約とメトリク
ス機能をビルトインで提供
コスト最適化
ゲームサーバーのスケジュー
リングとアロケーションによっ
てコストの最適化を実現
SDK
ヘルスチェックや状態管理、
設定などゲームサーバーのラ
イフサイクル管理をSDK で
オートスケール
オートスケール機能がゲーム
サーバーの数を調整し、プレ
イヤーが常にプレイ可能な状
態を維持
Kubernetes ツール
標準的なKubernetes の
ツールとAPI を使用して
Kubernetes 内の専用ゲーム
サーバをスケール
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes node
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes node
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
ご参考:Open Match
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes node
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes node
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes node
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
Kubernetes node
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
Kubernetes node
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones の構成
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
Kubernetes node
Fleet Autoscaler
Agones Controller
Matchmaker
Kubernetes API
Agones のリソース - Game Server
apiVersion: "agones.dev/v1"
kind: GameServer
metadata:
name: "gamex"
spec:
ports:
- name: default
portPolicy: Dynamic
containerPort: 7654
template:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.19
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Agones のリソース - Fleet
apiVersion: "agones.dev/v1"
kind: Fleet
metadata:
name: gamex
spec:
replicas: 4
template:
spec:
ports:
- name: default
portPolicy: Dynamic
containerPort: 7654
template:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.19
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Agones のリソース - Fleetautoscaler
apiVersion: "autoscaling.agones.dev/v1"
kind: FleetAutoscaler
metadata:
name: gamex-autoscaler
spec:
fleetName: gamex
policy:
type: Buffer
buffer:
bufferSize: 2
minReplicas: 2
maxReplicas: 10
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Fleet Autoscaler
Agones Controller
Agones のデモ - インストール
Kubernetes Cluster
Kubernetes node
Agones Controller
デモ
Agones のデモ - gameserver のデプロイ
Kubernetes Cluster
Kubernetes node
GameServer
GameServer
Agones Controller
デモ
Agones のデモ - fleet
Kubernetes Cluster
Kubernetes node
Fleet
GameServer
GameServer
Agones Controller
GameServer
GameServer
Allocated
デモ
複数クラスターになると?
Kubernetes Cluster
Fleet Autoscaler
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes Cluster
Fleet Autoscaler
Kubernetes node
Fleet
GameServer
GameServer
Kubernetes Cluster
Fleet Autoscaler
Kubernetes node
Fleet
GameServer
GameServer
Google Cloud Game Servers (GCGS)
GCGS はクラスター管理のマネージ
ドなコントロールプレーンを提供。
Agones を拡張し ゲームサーバーの
マルチクラスターを管理を簡単に。
インフラの選択
GKE (Beta)、オンプレミス (coming soon)、他クラウド上の
Kubernetes クラスター (coming soon) を利用可能
シンプル
プレビュー機能によって、グローバルな環境に対しても新しい設
定を簡単、安全にデプロイ
モニタリング
Cloud Console から管理 UI とメトリクスを提供
柔軟性
任意のタイミングでオプトイン / アウト可能(ロックインなし)
GCGS の構成
Game Server Deployment
Realm 1: “US”
Game Server Cluster
GKE
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe” Realm 3: “Japan”
Game Server Cluster
On-Prem
Game Server Cluster
GKE
Game Server Cluster
Other Cloud
Game Server Cluster
GKE
GCP プロジェクト。
ゲームにおける「本番環境」や「テスト環境」など単一
の環境ごとに用意する。
GCGS のリソース - Project
Game Server Deployment
Realm 1: “US”
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe”
Game Server Cluster
GKE
Game Server Cluster
GKE
Game Server Cluster
On-Prem
Game Server Cluster
Other Cloud
GCGS によって管理される Agones が動作している
Kubernetes クラスタ。
GCGS のリソース - Game Server Cluster
Game Server Deployment
Realm 1: “US”
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe”
Game Server Cluster
GKE
Game Server Cluster
On-Prem
Game Server Cluster
GKE
Game Server Cluster
Other Cloud
GCGS のリソース - Realm
Game Server Deployment
Realm 1: “US”
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe”
ユーザーが定義する Game Server Cluster のグルー
プ。
基本的にはゲームのレイテンシ要件にあわせて、大
陸やリージョンといったレベルでグルーピングする。
Game Server Cluster
GKE
Game Server Cluster
GKE
Game Server Cluster
On-Prem
Game Server Cluster
Other Cloud
GCGS のリソース - Game Server Deployment
Game Server Deployment
Realm 1: “US”
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe”
Game Server Cluster にデプロイされる 1 つ以上の
ゲームサーバー設定を持つプレースホルダ。
Game Server Config(後述)と Rollout(後述)の親リ
ソース。
Game Server Cluster
GKE
Game Server Cluster
GKE
Game Server Cluster
On-Prem
Game Server Cluster
Other Cloud
GCGS のリソース - Game Server Config
Game Server Deployment
Realm 1: “US”
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe”
Fleet config と Scaling config から作成されるゲーム
サーバーの設定。Scaling config はさらに Fleet
Autoscaler 設定とスケジュール設定から構成される。
Game Server Deployment のサブリソース。
Game Server Cluster
GKE
Game Server Cluster
GKE
Game Server Cluster
On-Prem
Game Server Cluster
Other Cloud
Time-based Policies
● GCGS は時間に基づいた自動スケーリングの設定が可能
● 2 種類の時間ベースのスケーリングをサポート
○ Realm イベント:各 Realm のタイムゾーンでスケーリングを実施
○ Global イベント :グローバルにスケーリングを実施
Global Event:
startTime: '2020-05-01 15:00:00 PST'
endTime: '2020-05-01 18:00:00 PST'
Realm Event:
cronSpec: '0 21 * * 1-5'
cronDuration: '4h'
GCGS のリソース - Rollout
Game Server Deployment
Realm 1: “US”
GCP Project - “Game X”
Game Server Config: v2Game Server Config: v1
Rollout
Realm 2: “Europe”
Game Server Config をどの Realm にデプロイする
かを紐付けるためのリソース。
Game Server Deployment のサブリソース。
Game Server Cluster
GKE
Game Server Cluster
GKE
Game Server Cluster
On-Prem
Game Server Cluster
Other Cloud
GCGS の使用フロー
Game Server Deployments
のテストとロールアウト
Game Server Cluster また
は Realm 上の変更をプレ
ビューし、新しい
Deployment を簡単にロール
アウト / バック
5
Config を作成
ゲームサーバーのバージョン
やスケーリングの設定となる
Game Server Config を作成
4
Realm を定義
ゲームのレイテンシー要件に
基づき、地理的なグルーピン
グとしてRealm を作成しクラ
スターを登録
3
Game Services API を使用
して登録
クラスターを登録するために
Cloud Console から Game
Service API を有効化
2
Agones のセットアップ
GCGS から管理する
Kunbernetes クラスタを用意
し、各クラスタにAgones をイ
ンストールする
1
GCGS のデモ - Realm の作成
Realm 1:
“united-states”
GCP Project - “Game X”
Realm 2: “japan”
Game Server Deployment
デモ
GCGS のデモ - クラスタの登録
Realm 1: “US”
Realm 1:
“united-states”
GCP Project - “Game X”
Realm 2: “japan”
GKE Game Server
Cluster
GKE Game Server
Cluster
デモ
GCGS のデモ - Game Server Deployment の作成
Realm 1:
“united-states”
GCP Project - “Game X”
Realm 2: “japan”
GKE Game Server
Cluster
Game Server Deployment
GKE Game Server
Cluster
デモ
GCGS のデモ - Game Server Config の作成
Realm 1:
“united-states”
GCP Project - “Game X”
Realm 2: “japan”
GKE Game Server
Cluster
Game Server Deployment
GKE Game Server
Cluster
Game Server
Config: v1
デモ
GCGS のデモ - Rollout
Realm 1:
“united-states”
GCP Project - “Game X”
Realm 2: “japan”
GKE Game Server
Cluster
Game Server Deployment
GKE Game Server
Cluster
Game Server
Config: v1
Rollout
GS: v1 GS: v1
デモ
GCGS のデモ - 新しいバージョンのリリース
Realm 1:
“united-states”
GCP Project - “Game X”
Realm 2: “japan”
GKE Game Server
Cluster
Game Server Deployment
GKE Game Server
Cluster
Game Server
Config: v1
Rollout
GS: v1 GS: v2
Game Server
Config: v2
デモ
GCGS の今後の展開
Phase 1
GCP Only
● GKE クラスタのみをサポート
● 基本的なポリシーを提供
Phase 2
Hybrid/Multi Cloud
● オンプレミスと他クラウドをサポート
まとめ
● IP アドレスとポートの割当、スケーリング、ゲームサーバー
の保護などゲームサーバー運用にまつわる様々な課題を
Agones と Kubernetes で解決
● グローバル展開など マルチクラスターの Agones は
Google Cloud Game Servers を使うことで簡単に実現
○ Time-based Policy や Rollout のプレビューなど
シングルクラスターでもメリット大
Thank you
#gc_inside
#gc_inside
今すぐ参加登録 ↑
ビジネスをサポートするGoogle Cloud ソリューションを学ぶ。
Google Cloud Day: Digital
2020 年 6 月 9 日 (火) - 11 日 (木) ライブ配信
2020 年 6 月 9 日 (火) - 30 日 (火) 開催
Google Cloud トレーニング無料提供 キャンペーンのご案内
Qwiklabs、Pluralsight(英語のみ)、対象 のCoursera のコースを1 か月間無料でご提供
お申込み期限は、5 月 20 日まで
(Pluralsight のみ 4 月 30 日まで)
goo.gle/TrainingOffer
詳細・お申込みはこちら ↑

Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online