ゲーマーのためにシーンを設定しましょう:あなたは人生で最高のゲームをしています(そして、よりによって今日ストリーミングしていることを望みます)。完璧なヘッドショットを決め、勝利画面が表示されるのを想像している。あなたは対戦相手に倒された。ゲームオーバー。
リアルタイムプレイのちょっとした不具合で、栄光と勝利の瞬間を逃してしまった経験は誰にでもあるだろう。このような経験に対する不満から、プレイヤーとしての運命を自分でコントロールできるよう、完全にセルフホスティングされたゲームの人気が再燃している。しかし残念なことに、すべてのゲームやすべてのゲーマーにとって、セルフホストという選択肢があるわけではない。しかし、自分でハードウェアを購入し、メンテナンスすることなく、ラグを影の領域に追いやる方法があるとしたらどうだろう?
ほんの少しの開発で、サーバーをあなた(プレイヤー)に近づけ、独自の低遅延体験を作り出すことで、あなただけの分散型ゲームパラダイスを構築することができます。パワートリオの登場です: 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: つないで遊ぶ!- フラッグタイム
- Xonoticを起動:クライアントを起動します。
- マルチプレイヤーモード:Multiplayer "Go 。
- サーバー接続:手動でサーバーに参加することを選択します。
- IPとポートを入力します: で取得したIPアドレスとポートを入力する。
kubectl get gs
コマンドのアウトプットに置き換えられます。 - ゲームに参加接続し、低遅延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.
コメント