As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Crie uma GameLift Anywhere frota da Amazon
Use GameLift a Amazon para integrar o hardware do seu ambiente à sua hospedagem de GameLift jogos na Amazon. A Amazon GameLift Anywhere registra seu hardware GameLift na Amazon em uma Anywhere frota. É possível integrar Anywhere e gerencie frotas EC2 em filas de marcador de jogos e sessões de jogos para gerenciar a marcação de jogos e o posicionamento de jogos.
Para obter mais informações sobre como testar seus servidores de jogos com a Amazon GameLift Anywhere, consulteTeste sua integração usando frotas Anywhere do Amazon GameLift.
Para começar, use a Suporte ao desenvolvimento com a Amazon GameLift versão 5 ou superior e analise os seguintes conceitos para usar uma GameLift Anywhere frota da Amazon.
- Localizações personalizadas
-
GameLift AnywhereAs frotas da Amazon usam locais personalizados para representar os locais físicos da sua infraestrutura.
- Criar uma política personalizada
-
Para que uma GameLift Anywhere frota da Amazon se comunique com seus recursos computacionais, primeiro registre seu dispositivo. Você pode concluir o registro do dispositivo a partir do Amazon GameLift AWS SDK usando a
RegisterCompute
operação. Essa operação usa o endereço IP do dispositivo para associá-lo a uma localização da frota e se comunicar com a Amazon GameLift. - Tokens de autenticação
-
Quando você inicializa um servidor de jogos em seu computador, o Amazon GameLift Server SDK usa um token de autenticação para autenticar seu servidor de jogos na Amazon. GameLift É possível reutilizar o mesmo token de autenticação para todos os servidores de jogos no mesmo computador, até o prazo de expiração do token de autenticação. Para recuperar o token de autenticação, chame o comando
get-compute-auth-token
AWS Command Line Interface (AWS CLI). Passe o token para cada servidor do jogo conforme necessário. - Sessões de jogos
-
Cada sessão de jogo em um computador usa o mesmo token de autenticação criado ao registrar o computador em um local da frota.
O diagrama a seguir mostra uma fila de sessões de jogo que usa FlexMatch matchmaking e várias frotas. As frotas incluem uma frota EC2 com instâncias C5, uma frota Anywhere com um laptop de desenvolvimento e uma frota Anywhere com um rack de servidor hospedado pelo cliente.
![Um diagrama de uma fila de sessões de jogo que usa uma frota EC2 gerenciada e duas frotas Anywhere.](images/qs_hosting_flow_anywhere.png)
Tópicos
Criar uma política personalizada
Para começar a hospedar jogos em seus recursos de computação, crie um local personalizado descrevendo onde o computador reside.
Criar uma frota
Use o GameLift console da Amazon
Depois de criar uma nova frota Anywhere, o status da frota passa de NEW
para ACTIVE
. Quando atinge o status é ACTIVE
, a frota está pronta para hospedar sessões de jogo. Para obter ajuda com problemas de criação de frotas, consulte Depurar problemas com a frota do Amazon GameLift.
Registrar seu computador
Para registrar seu recurso de computação na frota criada, use o comando register-compute
pelo fleet-id
fleet-id
devolvido na etapa anterior ou pelo ARN da frota encontrado na página de detalhes da sua frota no console. Substitua o
e compute-name
pelo endereço IP do seu recurso de computação.ip-address
nota
Recomendamos chamar os get-compute-auth-token
comandos register-compute
e a partir de um script ou gerenciador de processos separado do servidor do jogo.
aws gamelift register-compute \ --compute-name
HardwareAnywhere
\ --fleet-idarn:aws:gamelift:us-east-1:111122223333:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445
\ --ip-address10.1.2.3
\ --locationcustom-location-1
Exemplo de saída
{ "Compute": { "FleetId": "fleet-cebb4da2-52a8-4c27-9b85-587f945c6445", "FleetArn": "arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445", "ComputeName": "HardwareAnywhere", "ComputeArn": "arn:aws:gamelift:us-east-1:111122223333:compute/HardwareAnywhere", "IpAddress": "10.1.2.3", "ComputeStatus": "Active", "Location": "custom-location-1", "CreationTime": "2023-02-23T18:09:26.727000+00:00", "GameLiftServiceSdkEndpoint": "wss://us-east-1.api.amazongamelift.com" } }
Executar um processo de servidor
-
Obtenha o token de autenticação para o recurso de computação da frota criada.
Seu servidor de jogo usa o token de autenticação para se autenticar na Amazon GameLift. Cada token de autenticação tem um prazo de validade. Para continuar usando o recurso de computação para hospedar o servidor de jogos, recupere um novo token de autenticação antes da expiração.
nota
GameLift A Amazon recomenda chamar os
get-compute-auth-token
comandosregister-compute
e a partir de um script ou gerenciador de processos separado do seu servidor de jogo.No exemplo a seguir, substitua
fleet-id
o pelo ARN ou ID da frota criada nas etapas anteriores. Substitua ocompute-name
pelo nome da computação criada usando o comandoregister-compute
em uma etapa anterior.aws gamelift get-compute-auth-token \ --fleet-id
arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445
\ --compute-nameHardwareAnywhere
Resultado do exemplo:
{ "FleetId": "fleet-cebb4da2-52a8-4c27-9b85-587f945c6445", "FleetArn": "arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445", "ComputeName": "HardwareAnywhere", "ComputeArn": "arn:aws:gamelift:us-east-1:111122223333:compute/HardwareAnywhere", "AuthToken": "0c728041-3e84-4aaa-b927-a0fb202684c0", "ExpirationTimestamp": "2023-02-23T18:47:54+00:00" }
-
Execute uma instância do executável do servidor de jogos.
Para executar o servidor de jogos, inicialize seu servidor de jogos chamando
InitSDK()
e transmitindo seus parâmetros de servidor. Para ter mais informações, consulte Parâmetros do servidor.Entrada do SDK do servidor:
//Define the server parameters ServerParameters serverParameters = new ServerParameters( webSocketUrl=
wss://us-east-1.api.amazongamelift.com
, processId=PID1234
, hostId=HardwareAnywhere
, fleetId=arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445
, authToken=0c728041-3e84-4aaa-b927-a0fb202684c0
); //InitSDK establishes a connection with GameLift's websocket server for communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters); -
Depois que o processo do servidor estiver pronto para hospedar uma sessão de jogo, ligue
ProcessReady()
do seu servidor de jogos para a Amazon GameLift. Para obter mais informações sobre parâmetros de processo, consulte ProcessParameters// Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnStartGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnUpdateGameSession, port=
1024
, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs
", "C:\\game\\error
" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);
Criar sessões de jogos
-
Adicione lógica ao servidor de jogo para que o processo do servidor responda à mensagem
onStartGameSession()
comActivateGameSession()
. Essa operação não tem parâmetros, mas envia uma confirmação à Amazon de GameLift que seu servidor recebeu e aceitou a mensagem de criação da sessão de jogo.void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }
-
No serviço de back-end do seu cliente de jogo, inicie sua sessão de jogo usando o comando
start-matchmaking
, start-game-session-placement
ou create-game-session
. aws gamelift create-game-session \ --fleet-id
arn:aws:gamelift:us-east-1:682428703967:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445
\ --nameGameSession1
\ --maximum-player-session-count2
\ --locationcustom-location-1
Resultado do exemplo:
GameSession { FleetId = arn:aws:gamelift:us-east-1:682428703967:fleet/fleet-cebb4da2-52a8-4c27-9b85-587f945c6445, GameSessionId = 4444-4444, Name = GameSession1, Location = custom-location-1, IpAddress = 10.2.3.4, Port = 1024, ... }
GameLift A Amazon envia uma
onStartGameSession()
mensagem para seu processo de servidor registrado. A mensagem contém o objetoGameSession
da etapa anterior com propriedades do jogo, dados das sessões do jogo, dados do marcador de jogos e mais sobre a sessão do jogo. -
Quando a sessão do jogo estiver concluída, finalize o processo do servidor do jogo.
Entrada do SDK do servidor:
var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);
-
Inicie outro processo do servidor de jogos ao chamar
ProcessReady(processParams)
.
Migre para o EC2 gerenciado
Depois de desenvolver seu servidor de jogos e estar pronto para se preparar para a produção, você pode fazer com que a Amazon GameLift gerencie seu hardware. Para migrar para uma frota EC2 gerenciada, faça o upload da sua compilação para a Amazon GameLift e crie uma frota EC2 gerenciada. Para obter mais informações sobre como fazer o upload de sua compilação e configurar uma frota, consulte Fazer upload de uma compilação de servidor personalizada para o Amazon GameLift e Criar uma frota gerenciada pelo Amazon GameLift.