クイックスタート: オープンソースのゲームタイトル用のサーバーのデプロイ

オープンソースのゲームタイトル用のサーバーのデプロイ

このクイックスタートでは、Game Servers で Google Cloud CLI を使用して、Game Servers のレルム、クラスタ、デプロイメント、構成ファイル、ロールアウトを行う方法について説明します。


このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、[ガイドを表示] をクリックしてください。

ガイドを表示


始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. Game Services API が有効になっていることを確認します。
  7. Game Services API を有効にする

シェルを選択する

このクイックスタートを完了するには、Cloud Shell またはローカルシェルを使用します。

Google Cloud Shell は、Google Cloud でホストされているリソースを管理するためのシェル環境です。Cloud Shell には、gcloud コマンドライン ツールがプリインストールされています。gcloud CLI には、Game Servers のプライマリ コマンドライン インターフェースが備わっています。

Cloud Shell

Cloud Shell を起動するには、次の手順に従います。

  1. Google Cloud Console に移動します。

    Google Cloud Console

  2. コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン をクリックします。

コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud コマンドを実行します。

ローカルシェル

gcloud CLI をインストールします。

Google Cloud CLI に必要なデフォルトのプロジェクトが設定されていることを確認します(設定されていない場合、後でコマンドごとに --project フラグを明示的に指定する必要があります)。

gcloud config list project

デフォルト プロジェクトを設定していない場合は、次のコマンドを実行して、デフォルト プロジェクトを設定します。PROJECT_ID は、設定するプロジェクト ID に置き換えてください。

gcloud config set project PROJECT_ID

次のコマンドを実行して、Google Cloud CLI のバージョンを確認します。Game Servers には、gcloud CLI のバージョン 306.0.0 以降が必要です。

gcloud version

インストールを更新するには、次のコマンドを実行します。

gcloud components update

ローカルシェルを選択した場合は、Kubernetes コマンドライン ツール kubectl のインストールが必要な場合があります。

gcloud components install kubectl

Google Kubernetes Engine クラスタの作成

Google Kubernetes Engine クラスタを作成するには:

  1. Cloud Console で、Kubernetes Engine API を有効にします。

    API の有効化

  2. 次のコマンドを実行して、us-central1-a ゾーンにノードが 1 つあるコスト最適化されたクラスタを作成します。

    gcloud container clusters create gcgs-quickstart \
    --cluster-version=1.23 \
    --tags=game-server \
    --scopes=gke-default \
    --num-nodes=1 \
    --no-enable-autoupgrade \
    --machine-type=e2-standard-2 \
    --zone=us-central1-a
    
  3. 次のコマンドを実行して、前のステップで作成した GKE クラスタの認証情報を取得します。

    gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
    

    kubectl はこれらの認証情報を使用して、Kubernetes クラスタでコマンドを実行します。詳しくは、kubectl 用のクラスタ アクセスの構成をご覧ください。

GKE への Agones のインストール

このセクションでは、オープンソースの Agones ゲーム インフラストラクチャ プラットフォームをインストールします。以下の手順で、Agones をインストールします。

  1. 次のコマンドを実行して agones-system Namespace を作成します。

    kubectl create namespace agones-system
    
  2. 次のコマンドを実行して Agones をインストールします。

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
    
  3. Kubernetes Pod のステータスを確認することで、Agones システムが稼働していることを確認できます。

    kubectl get --namespace agones-system pods
    

    すべての Pod は Running 状態になっています。

    NAME                                 READY   STATUS    RESTARTS   AGE
    agones-allocator-6694dcc89-7r75d     1/1     Running   0          28s
    agones-allocator-6694dcc89-m7ghq     1/1     Running   0          28s
    agones-allocator-6694dcc89-qp6cm     1/1     Running   0          28s
    agones-controller-56c98db844-llzzc   1/1     Running   0          22s
    agones-ping-d9d74c5c6-8kmt6          1/1     Running   0          24s
    agones-ping-d9d74c5c6-xwn4h          1/1     Running   0          24s
    

Game Servers リソースの作成

Game Servers リソースを作成するには、次のようにします。

  1. GKE クラスタと同じロケーションにレルムを作成します。

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. Agones GKE クラスタを Game Servers に登録し、前の手順で作成したレルムに接続します。

    gcloud game servers clusters create cluster-quickstart \
    --realm=realm-quickstart \
    --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \
    --namespace=default \
    --location us-central1 \
    --no-dry-run
    
  3. Game Servers のデプロイを作成します。作成したデプロイを使用して、すべてのゲームサーバー構成を保存し、Game Servers クラスタにロールアウトします。

    gcloud game servers deployments create deployment-quickstart
    

    Game Servers のデプロイメントを作成していますので、gcloud CLI を使用して Game Servers 構成を追加できます。

  4. 次の Agones フリート仕様マニフェストの例を、現在のディレクトリ内の fleet_configs.yaml という名前の新しいファイルにコピーします。

    - name: fleet-spec-1
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              foo: bar
          spec:
            ports:
            - name: default
              portPolicy: Dynamic
              containerPort: 7654
            template:
              spec:
                containers:
                - name: simple-game-server
                  image: gcr.io/agones-images/simple-game-server:0.3
    
  5. Game Servers 構成ファイルを作成するには、次のコマンドを実行します。

    gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    
  6. ロールアウトを更新するには、次のコマンドを実行します。

    gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
    
  7. デフォルトの Namespace にある 1 つのフリートのロールアウトを検証するには、次のコマンドを実行します。

    kubectl get fleet
    

    以下の出力が想定されます。

    NAME                                     SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-deployment-quickstart-config-1   Packed       2         2         0           2       4s
    

    この出力により、クラスタに接続を受け入れる準備が整っている 2 つのシンプルな UDP サーバー レプリカを含むフリートがデプロイされたことが確認できます。

Game Servers への接続をテストする

Game Servers への接続をテストするには、次を実行します。

  1. クラスタへの接続に必要な UDP ポートを開くファイアウォール ルールを作成します。

    gcloud compute firewall-rules create gcgs-quickstart-firewall \
    --allow udp:7000-8000 \
    --target-tags game-server \
    --description "Firewall to allow game server udp traffic"
    
  2. 次に、個々の Game Servers の IP アドレスとポート番号を取得します。

    kubectl get gameserver
    

    このコマンドでは、次のような出力が返されます。

    NAME                                                 STATE   ADDRESS          PORT   NODE                                             AGE
    fleet-deployment-quickstart-config-1-nndvr-5gvch   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    fleet-deployment-quickstart-config-1-nndvr-vqwpl   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    
  3. 接続をテストするには、Netcat コマンドを実行します。Netcat を Linux にインストールするには、次のコマンドを実行します。

    sudo apt install netcat
    
  4. テストを開始するには、次のコマンドを実行します。

    nc -u IP_ADDRESS PORT_NUMBER
    
  5. 次に「Hello」と入力すると、コマンドは次のような出力を返します。

    Hello
    > ACK: Hello
    
  6. Ctrl+C キーを押して、出力を停止します。

(省略可)オープンソースのゲームタイトル用のサーバーのデプロイ

ロールアウトを更新して、クラスタに 2 つのオープンソース ゲームサーバー レプリカを持つフリートをデプロイできます。これらのゲームサーバーは、レーシング ゲーム SuperTuxKart のマルチプレーヤー バージョンをサポートしています。

  1. 既存の fleet_configs.yaml ファイルを、次の Agones フリート仕様で上書きします。

    - name: supertuxkart
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              version: "1.0"
          spec:
            ports:
            - name: default
              containerPort: 8080
            health:
              initialDelaySeconds: 30
              periodSeconds: 60
            template:
              spec:
                containers:
                - name: supertuxkart
                  image: gcr.io/agones-images/supertuxkart-example:0.3
    
  2. 既存のゲームサーバーの構成は変更できないため、更新できません。更新されたフリート仕様マニフェストを参照する新しい構成を作成します。

    gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    

  3. 新しい構成でロールアウトを更新します。

    gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
    

  4. 個々のゲームサーバーの IP アドレスとポート番号を取得します。

    kubectl get gameserver
    

  5. SuperTuxKart クライアントをダウンロードします

  6. SuperTuxKart クライアントを起動します。

  7. メインメニューの [Online] ボタンをクリックし、[Enter server address] ボタンをクリックします。

  8. 個々のゲームサーバーの IP アドレスとポート番号を(前のステップから)入力します。

  9. [Start race] をクリックしてゲームを開始します。

他のプラットフォームに SuperTuxKart クライアントをダウンロードして同じサーバーに接続し、レースに参加できます。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

このクイックスタートで作成したリソースを保持しない場合は、プロジェクトを削除できます。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

または、プロジェクトを保持する場合は、次の手順を実施して、このクイックスタートで作成したリソースを手動で削除します。

  1. ファイアウォール ルールを削除するには、次のコマンドを実行します。

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. デフォルトのロールアウトを消去するには、次のコマンドを実行します。

    gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
    
  3. Game Servers 構成ファイルを削除するには、次のコマンドを実行します。

    gcloud game servers configs delete config-1 --deployment deployment-quickstart
    

    省略可能なセクションを完了したら、追加のゲームサーバー構成を削除します。

    gcloud game servers configs delete stk-1 --deployment deployment-quickstart
    
  4. Game Servers デプロイを削除するには、次のコマンドを実行します。

    gcloud game servers deployments delete deployment-quickstart
    
  5. Game Servers クラスタを削除するには、次のコマンドを実行します。

    gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
    
  6. レルムを削除するには、次のコマンドを実行します。

    gcloud game servers realms delete realm-quickstart --location=us-central1
    
  7. Game Services API を無効にするには、次のコマンドを実行します。

    gcloud services disable gameservices.googleapis.com
    
  8. GKE クラスタを削除するには、次のコマンドを実行します。

    gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
    

次のステップ

Game Servers のコンセプトの技術的な概要について、Game Servers の概要を確認する。

入門ガイドで、特定の Game Servers タスクについて確認する。

Terraform デプロイメントのサンプル プロジェクトを確認する。