メインコンテンツにスキップ
ブログコンピュートラグなし、オールフラグ:Xonotic、K3s、エッジコンピューティングでゲームをレベルアップ

ラグなし、オールフラッグ:Xonotic、K3s、エッジコンピューティングでゲームをレベルアップ

ノーラグ・オールフラッグ・レベルアップ・ゲーム

ゲーマーのためにシーンを設定しましょう:あなたは人生で最高のゲームをしています(そして、よりによって今日ストリーミングしていることを望みます)。完璧なヘッドショットを決め、勝利画面が表示されるのを想像している。あなたは対戦相手に倒された。ゲームオーバー。

リアルタイムプレイのちょっとした不具合で、栄光と勝利の瞬間を逃してしまった経験は誰にでもあるだろう。このような経験に対する不満から、プレイヤーとしての運命を自分でコントロールできるよう、完全にセルフホスティングされたゲームの人気が再燃している。しかし残念なことに、すべてのゲームやすべてのゲーマーにとって、セルフホストという選択肢があるわけではない。しかし、自分でハードウェアを購入し、メンテナンスすることなく、ラグを影の領域に追いやる方法があるとしたらどうだろう?

ほんの少しの開発で、サーバーをあなた(プレイヤー)に近づけ、独自の低遅延体験を作り出すことで、あなただけの分散型ゲームパラダイスを構築することができます。パワートリオの登場です: Xonotic, K3sそして アカマイクラウド.

そもそもエッジとは何か?

数百マイル(あるいは数千マイル)離れた巨大な集中型データセンターに依存する代わりに、エッジコンピューティングは処理能力をデータソースに近づけます。これにより、データが遠くまで移動する必要がなくなるため、遅延が劇的に減少します。

なぜK3Sなのか?軽量化と軽快さを維持

K3sは軽量なKubernetesディストリビューションです。Kubernetes(またはK8s)は、デプロイ、スケーリング、そしてすべてがスムーズに動くことを確認する、アプリケーションのための信じられないほどスマートで効率的なマネージャーだと考えてください。K3sはK8sの派生版で、特にリソースに制約のある環境向けに設計されています。小さく、速く、信じられないほど効果的で、あなたのインフラ なります。

アゴネスは?ゲームサーバーのマエストロ

AgonesはオープンソースのKubernetesネイティブプロジェクトで、ゲーム専用サーバーの管理に特化して設計されています。ゲームサーバーインスタンスのスケーリング、割り当て、実行の複雑さを処理するので、サーバーの設定に煩わされることなく、フラグ作成に集中することができます。

ビルを建てよう!(楽しい部分)

We’re going to set up a Xonotic server (a fast-paced, free, open-source FPS) on a Linode instance, managed by K3s and Agones. Get ready to experience Xonotic like never before! If you’d like to follow our full guide, go to the docs.

ステップ1:Terraform Time - 基礎作り

Terraformは私たちの「コードとしてのインフラ」ツールです。Terraformを使うことで、サーバーのセットアップをファイルに定義することができる。まずはインストールしましょう:

brew install terraform

(注:macOSをお使いでない場合は、Terraform ウェブサイトでお使いのOSのインストール方法をご確認ください)

ステップ2:プロジェクトのセットアップ - ゲーミングHQ

プロジェクト用のディレクトリを作成しよう:

mkdir xonotic

cd xonotic

ステップ3:Terraform スクリプト - サーバー(とファイアウォール!)の構築

という名前のファイルを作成する。 main.tf をクリックし、次のコードを貼り付ける。 

ここでマジックが起こります!Linodeインスタンスを定義し、ファイアウォールを設定し、必要なものをすべて設定します。 

このケースでは、アカマイの分散型コンピュートリージョンのひとつであるデンバーに専用コンピュートインスタンスを配置しています。複数の挑戦者に適した 4 つの vCPU を持つ 8GB の専用インスタンスを使用することをお勧めします。

注:このサンプルコードをそのまま動作させるには、現在限定的に提供されている分散コンピュート・リージョンにアクセスする必要がある。

# Specify the required Terraform provider

terraform {

  required_providers {

    linode = {

      source = "linode/linode"

      version = ">= 1.27.0"  # Ensure a version that supports metadata

    }

  }

}

# Define variables for sensitive information

variable "linode_token" {

  description = "Linode API token"

  type        = string

  sensitive   = true

}

variable "root_password" {

  description = "Root password for the instance"

  type        = string

  sensitive   = true

}

variable "admin_ip" {

  description = "IPv4 address to be used to access the instance"

  type        = string

  sensitive   = true

}

# Configure the Linode provider

provider "linode" {

  token = var.linode_token

}

# Define the cloud-init configuration

data "template_file" "cloud_init" {

  template = <<EOF

#cloud-config

package_update: true

package_upgrade: true

runcmd:

  - apt update -y

  - apt upgrade -y

EOF

}

# Create a 8GB dedicated Linode instance in Denver

resource "linode_instance" "my_instance" {

  label     = "xonotic-game-server"

  region    = "us-den-1"

  type      = "g6-dedicated-edge-4"

  image     = "linode/ubuntu20.04"

  root_pass = var.root_password

  booted    = true

  metadata {

    user_data = base64encode(data.template_file.cloud_init.rendered)

  }

}

# Create a firewall to allow incoming traffic on port 22 and 7000-8000

resource "linode_firewall" "my_firewall" {

  label = "xonotic-firewall"

# Drop everything that is not covered by an explicitly rule

  inbound_policy = "DROP"

# Allow all outbound traffic

  outbound_policy = "ACCEPT"

  # Rule to allow SSH (port 22)

  inbound {

    label    = "allow-ssh"

    action   = "ACCEPT"

    protocol = "TCP"

    ports    = "22"

    ipv4     = [var.admin_ip]

  }

  # Rule to allow custom port range (7000-8000)

  inbound {

    label    = "allow-custom-ports"

    action   = "ACCEPT"

    protocol = "UDP"

    ports    = "7000-8000"

    ipv4     = ["0.0.0.0/0"]

    ipv6     = ["::/0"]

  }

  # Rule to allow Agones port 8080

  inbound {

    label    = "allow-custom-ports"

    action   = "ACCEPT"

    protocol = "TCP"

    ports    = "8080"

    ipv4     = ["0.0.0.0/0"]

    ipv6     = ["::/0"]

  }

  # Associate the firewall with the instance

  linodes = [linode_instance.my_instance.id]

}

# Output the instance's IP address

output "instance_ip" {

  value = linode_instance.my_instance.ip_address

}

という名前のファイルを作成する。 terraform.tfvars を追加し、Linode APIトークンとrootパスワードを追加します(プレースホルダを置き換えるのを忘れないでください!):

linode_token  = "your_linode_api_token"

root_password = "your_root_password"

admin_ip = "your_ipv4_address/32"

重要なセキュリティ上の注意 あなたの terraform.tfvars ファイルの安全性と 決して それを公開リポジトリにコミットする!

現在のIPアドレスがわからない場合は、以下のコマンドを使えば、現在のパブリックIPアドレスを返してくれる。

curl http://whatismyip.akamai.com

ステップ4: 初期化と適用 -Terraform 任せよう!

まず、Terraform初期化する:

terraform init

これでLinode Providerがダウンロードされます。その後、設定を適用します:

terraform apply

変更を確認するプロンプトが表示されます。タイプ yes と入力してEnterを押します。Terraform Linodeインスタンスをプロビジョニングし、ファイアウォールを設定します。数分かかるかもしれません。コーヒーでも飲んで(あるいは狙いを定めて練習して...)。

ステップ 5: SSH接続 - サーバーが待っています!

Terraform 終了すると、インスタンスのIPアドレスが出力されます。逆引きDNS名はLinode Cloud Managerの新しく作成したインスタンスのネットワークタブでも確認できます。SSHを使って接続します:

ssh root@your_instance_ip_or_dns

交換 your_instance_ip_or_dns を実際のIPアドレスまたはDNS名で入力してください。で設定したルート・パスワードの入力を求められます。 terraform.tfvars.

ステップ6: K3sのインストール - 軽量Kubernetesパワーハウス

これは驚くほど簡単です!Linodeインスタンスでこのコマンドを実行するだけです:

curl -sfL https://get.k3s.io | sh -

これでK3sがダウンロードされ、インストールされる。1、2分かかります。

ステップ 7: Agonesをインストールします!

次に、Xonoticゲームサーバーを管理するAgonesをインストールします。以下のコマンドを実行してください:

kubectl create namespace agones-system

kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml

これにより、Agones専用の名前空間が作成され、K3sクラスタにデプロイされます。

ステップ8:Agonesが稼動していることを確認する - ステータスをチェックする

すべてがスムーズに進んでいることを確認しよう:

kubectl describe --namespace agones-system pods

Agonesポッドが起動していることを示す出力が表示されるはずです。

ステップ9:Xonotic Game Serverをデプロイし、ステータスを取得します。

kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml

 watch kubectl describe gameserver

ステップ10:ゲームサーバーIPの取得 - 接続準備完了!
ゲームサーバーのリストとIPアドレスを取得します:

kubectl get gs

ステップ 11: Xonotic クライアントのダウンロードとインストール

まだお持ちでない場合は、https://xonotic.org/ からお使いのオペレーティングシステム用の Xonotic クライアントをダウンロードしてください。

ステップ12: つないで遊ぶ!- フラッグタイム

  1. Xonoticを起動:クライアントを起動します。
  2. マルチプレイヤーモード:Multiplayer "Go 。
  3. サーバー接続:手動でサーバーに参加することを選択します。
  4. IPとポートを入力します: で取得したIPアドレスとポートを入力する。 kubectl get gs コマンドのアウトプットに置き換えられます。
  5. ゲームに参加接続し、低遅延Xonotic体験をお楽しみください!

後始末(支配を終えたら)

アゴネス艦隊とゲームサーバーのインスタンスを削除する:

kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml

を使用することができます。 terraform destroy にあるLinodeインスタンスとファイアウォールを削除して、これ以上コストがかからないようにします。

結論ゲームの未来はあなたの手の中にある

エッジコンピューティング、K3、Agonesを使用して、パワフルで低レイテンシーのゲームセットアップを構築しました。これは、ゲームプロバイダー所有のサーバーに完全に依存することなく、ゲーム体験をより身近なものにする方法を示しています。これにより、ゲームはよりスムーズで、より反応が良く、より楽しくなり、レイテンシーによる損失もなくなります。 

アカマイは、クラウドコンピューティングのお客様にご利用いただける、グローバルに分散された 25 以上のコアコンピュートリージョンを提供しています。ワークロードをより身近に するため、オークランド、ヨハネスブルグ、ボゴタなど、クラウドプロバイダーが十分にサービスを提供していない主要都市に、アカマイの分散型コンピュートリージョンを活用して専用インスタンスを導入することができます。アカウントにサインアップして、利用可能な分散型リージョンの全リストをチェックし、クラウドコンサルタントにご連絡ください

If you want to learn more, check out our guide on how to set up a Xonotic server with K3s and Agones.

コメント 

コメントを残す

あなたのメールアドレスは公開されません。必須項目には*印がついています。