Vamos imaginar o cenário para um jogador: você está tendo o jogo da sua vida (e gostaria de estar transmitindo hoje, mais do que nunca). Está preparando o tiro perfeito para a vitória e já está imaginando a tela da vitória aparecendo... e então o jogo fica lento. Você é derrotado pelo seu oponente. Fim do jogo.
Todos nós já passamos por isso, quando uma pequena falha em um jogo em tempo real lhe custou o momento de glória e a volta da vitória. A frustração com essa experiência exata levou a um ressurgimento da popularidade dos jogos totalmente auto-hospedados para que você possa controlar seu próprio destino como jogador. Mas, infelizmente, a hospedagem própria não é uma opção para todos os jogos ou para todos os jogadores. Mas e se disséssemos que existe uma maneira de banir o lag para o reino das sombras sem precisar comprar e manter seu próprio hardware?
Com apenas um pouco de desenvolvimento, você pode criar seu próprio paraíso de jogos distribuídos, aproximando o servidor de você (o jogador) e criando sua própria experiência de baixa latência. Entre no power trio: Xonotic, K3se o poder da computação de borda com o Nuvem da Akamai.
Afinal, qual é a vantagem?
Em vez de depender de data centers maciços e centralizados que podem estar a centenas (ou até milhares) de quilômetros de distância, a computação de borda aproxima o poder de processamento da fonte de dados - nesse caso, você. Isso reduz drasticamente a latência que cria o temido atraso, simplesmente porque os dados não precisam ir tão longe.
Por que o K3s? Mantendo-o leve e ágil
O K3s é uma distribuição leve do Kubernetes. Pense no Kubernetes (ou K8s) como um gerenciador incrivelmente inteligente e eficiente para seus aplicativos que lida com a implantação, o dimensionamento e garante que tudo funcione sem problemas. O K3s é um desdobramento do K8s projetado especificamente para ambientes com recursos limitados. Ele é pequeno, rápido e incrivelmente eficaz - e pode ser seu ajudante de infraestrutura de jogos.
E Agones? O maestro do servidor de jogos
O Agones é um projeto de código aberto nativo do Kubernetes, projetado especificamente para gerenciar servidores de jogos dedicados. Ele lida com as complexidades do dimensionamento, da alocação e da execução de instâncias de servidores de jogos para que você possa se concentrar em fragmentar, e não em mexer nas configurações do servidor.
Vamos começar a construir! (A parte divertida)
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.
Etapa 1: Tempo Terraform - Estabelecendo a base
Terraform é a nossa ferramenta de "Infraestrutura como código". Ele nos permite definir a configuração do nosso servidor em um arquivo, tornando-a repetível e fácil de gerenciar. Primeiro, instale-o:
brew install terraform
(Observação: se você não estiver usando o macOS, consulte o siteTerraform para obter instruções de instalação para seu sistema operacional).

Etapa 2: Configuração do projeto - seu QG de jogos
Vamos criar um diretório para o nosso projeto:
mkdir xonotic
cd xonotic
Etapa 3: O script Terraform - Criando seu servidor (e firewall!)
Crie um arquivo chamado main.tf
e cole o código a seguir.
É aqui que a mágica acontece! Estamos definindo nossa instância do Linode, configurando um firewall e configurando tudo o que precisamos.
Nesse caso, estamos implantando uma instância de computação dedicada em Denver, uma das regiões de computação distribuída da Akamai. Recomendamos usar a instância dedicada de 8 GB, que tem 4 vCPUs, o que é apropriado para vários desafiantes.
Observação: você precisará obter acesso às regiões de computação distribuída que estão atualmente em disponibilidade limitada para que este código de amostra funcione como está.
# 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
}
Agora, crie um arquivo chamado terraform.tfvars
e adicione seu token de API do Linode e uma senha de root (não se esqueça de substituir os espaços reservados!):
linode_token = "your_linode_api_token"
root_password = "your_root_password"
admin_ip = "your_ipv4_address/32"
Observação de segurança importante: Mantenha seu terraform.tfvars
arquivo seguro e nunca faça o commit em um repositório público!
Se não tiver certeza do seu endereço IP atual, use o comando a seguir, que retornará o endereço IP público atual.
curl http://whatismyip.akamai.com
Etapa 4: inicializar e aplicar - deixe Terraform fazer suas coisas!
Primeiro, inicialize Terraform:
terraform init
Isso faz o download do provedor do Linode. Em seguida, aplique a configuração:
terraform apply
Você será solicitado a confirmar as alterações. Digite yes
e pressione Enter. Terraform agora provisionará sua instância do Linode e configurará o firewall. Isso pode levar alguns minutos. Pegue um café (ou, você sabe, pratique sua pontaria...).
Etapa 5: SSH In - seu servidor está esperando!
Quando Terraform for concluído, ele produzirá o endereço IP de sua instância. Você também pode encontrar o nome DNS reverso na guia de rede da sua instância recém-criada no Linode Cloud Manager. Use o SSH para se conectar:
ssh root@your_instance_ip_or_dns
Substitua your_instance_ip_or_dns
com o endereço IP real ou o nome DNS. Será solicitada a senha de root que você definiu em terraform.tfvars
.
Etapa 6: Instale o K3s - a potência leve do Kubernetes
Isso é surpreendentemente fácil! Basta executar este comando em sua instância do Linode:
curl -sfL https://get.k3s.io | sh -
Isso faz o download e instala o K3s. Isso levará um ou dois minutos.
Etapa 7: Instale o Agones - Hora da orquestração do servidor de jogos!
Agora, instalaremos o Agones, que gerenciará nossos servidores de jogos Xonotic. Execute estes comandos:
kubectl create namespace agones-system
kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml
Isso cria um namespace dedicado para o Agones e o implementa em seu cluster do K3s.
Etapa 8: Confirme se o Agones está em execução - Verifique o status
Vamos nos certificar de que tudo esteja funcionando sem problemas:
kubectl describe --namespace agones-system pods
Você deverá ver uma saída indicando que os pods do Agones estão em execução.
Etapa 9: implante e obtenha o status do Xonotic Game Server.
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
watch kubectl describe gameserver
Etapa 10: Obter o IP do servidor de jogos - Pronto para conectar!
Obtenha uma lista de seus servidores de jogos e seus endereços IP:
kubectl get gs
Etapa 11: Cliente Xonotic - Faça o download e instale
Se ainda não o tiver, faça o download do cliente Xonotic para seu sistema operacional em https://xonotic.org/.
Etapa 12: Conecte-se e jogue! - Hora do Frag!
- Iniciar o Xonotic: inicie o cliente.
- Modo multijogador: Go para "Multiplayer".
- Conexão com o servidor: Escolha entrar em um servidor manualmente.
- Digite o IP e a porta: Insira o endereço IP e a porta que você obteve do
kubectl get gs
comando. - Entre no jogo: Conecte-se e aproveite sua experiência Xonotic de baixa latência!
Limpeza (quando você terminar de dominar)
Para remover a frota Agones e as instâncias do servidor de jogos:
kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
Você pode então usar terraform destroy
em seu diretório de projeto para remover a instância do Linode e o firewall para evitar custos adicionais.
Conclusão: O futuro dos jogos está em suas mãos
Você acabou de criar uma configuração de jogos avançada e de baixa latência usando computação de borda, K3s e Agones. Isso demonstra como você pode deixar de depender totalmente de servidores de propriedade de provedores de jogos e trazer sua experiência de jogo para mais perto de casa. Isso torna os jogos mais suaves, mais responsivos e mais divertidos - e não há mais perdas induzidas pela latência.
A Akamai tem mais de 25 regiões de computação central distribuídas globalmente disponíveis para nossos clientes de computação em nuvem. Para trazer as cargas de trabalho ainda mais perto de casa, você pode aproveitar nossas regiões de computação distribuída para implantar instâncias dedicadas em grandes metrópoles não atendidas por provedores de nuvem, incluindo Auckland, Joanesburgo e Bogotá. Inscreva-se em uma conta, confira a lista completa de regiões distribuídas disponíveis e entre em contato com nossos consultores de nuvem para ver se você está qualificado para acessar recursos em sua localidade ou criar um tíquete de suporte.
If you want to learn more, check out our guide on how to set up a Xonotic server with K3s and Agones.
Comentários