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á.
GameLift Servidor Amazon SDK para Go: ações
Use a referência SDK 5.x do servidor Amazon GameLift Go para integrar seu jogo multijogador para hospedagem na Amazon GameLift. Para obter orientação sobre o processo de integração, consulteAdicione GameLift a Amazon ao seu servidor de jogos.
GameLiftServerAPI.go
define as SDK ações do servidor Go.
GameLift Servidor Amazon SDK para Go: tipos de dados
Ações
- GetSdkVersion()
- Iniciar SDK ()
- ProcessReady()
- ProcessEnding()
- ActivateGameSession()
- UpdatePlayerSessionCreationPolicy()
- GetGameSessionId()
- GetTerminationTime()
- AcceptPlayerSession()
- RemovePlayerSession()
- DescribePlayerSessions()
- StartMatchBackfill()
- StopMatchBackfill()
- GetComputeCertificate()
- GetFleetRoleCredentials()
- Destroy()
GetSdkVersion()
Retorna o número da versão atual do processo SDK incorporado ao servidor.
Sintaxe
func GetSdkVersion() (string, error)
Valor de retorno
Se for bem-sucedido, retornará a SDK versão atual como uma string. A string retornada inclui o número da versão (exemplo, 5.0.0
). Se não for bem-sucedido, retornará uma mensagem de erro como common.SdkVersionDetectionFailed
.
Exemplo
version, err := server.GetSdkVersion()
Iniciar SDK ()
Inicializa a Amazon GameLift SDK. Chame esse método na inicialização, antes que qualquer outra inicialização relacionada à Amazon GameLift ocorra. Esse método configura a comunicação entre o servidor e o GameLift serviço da Amazon.
Sintaxe
func InitSDK(params ServerParameters) error
Parâmetros
- ServerParameters
-
Para inicializar um servidor de jogos em uma Amazon GameLift Anywhere frota, construa um
ServerParameters
objeto com as seguintes informações:-
O URL WebSocket usado para se conectar ao seu servidor de jogo.
-
O ID do processo usado para hospedar o servidor de jogos.
-
O ID do computador que hospeda os processos do seu servidor de jogos.
-
O ID da GameLift frota da Amazon que contém sua Amazon GameLift Anywhere computar.
-
O token de autorização gerado pela GameLift operação da Amazon.
Para inicializar um servidor de jogo em uma EC2 frota GameLift gerenciada pela Amazon, construa um
ServerParameters
objeto sem parâmetros. Com essa chamada, o GameLift agente da Amazon configura o ambiente computacional e se conecta automaticamente ao GameLift serviço da Amazon para você. -
Valor de retorno
Se for bem-sucedido, retornará um erro nil
para indicar que o processo do servidor está pronto para ser chamado ProcessReady().
nota
Se as chamadas para InitSDK()
estiverem falhando para compilações de jogos implantadas em frotas do Anywhere, verifique o parâmetro ServerSdkVersion
usado ao criar o recurso de compilação. Você deve definir explicitamente esse valor para a SDK versão do servidor em uso. O valor padrão desse parâmetro é 4.x, o que não é compatível. Para resolver esse problema, crie uma nova versão e implante-a em uma nova frota.
Exemplo
Amazon GameLift Anywhere exemplo
//Define the server parameters serverParameters := ServerParameters { WebSocketURL: "
wss://us-west-1.api.amazongamelift.com
", ProcessID: "PID1234
", HostID: "HardwareAnywhere
", FleetID: "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa
", AuthToken: "1111aaaa-22bb-33cc-44dd-5555eeee66ff
" } //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)
EC2Exemplo GameLift gerenciado pela Amazon
//Define the server parameters serverParameters := ServerParameters {} //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)
ProcessReady()
Notifica a Amazon de GameLift que o processo do servidor está pronto para hospedar sessões de jogo. Chame esse método após invocar Iniciar SDK (). Esse método deve ser chamado apenas uma vez por processo.
Sintaxe
func ProcessReady(param ProcessParameters) error
Parâmetros
- ProcessParameters
-
Um objeto ProcessParameters transmite as seguintes informações sobre o processo do servidor:
-
Os nomes dos métodos de retorno de chamada implementados no código do servidor do jogo que o GameLift serviço da Amazon invoca para se comunicar com o processo do servidor.
-
O número da porta em que o processo de servidor está escutando.
-
O tipo de LogParameters dados que contém o caminho para qualquer arquivo específico da sessão de jogo que você deseja que GameLift a Amazon capture e armazene.
-
Valor de retorno
Retorna um erro com uma mensagem de erro se o método falhar. Se o método for bem-sucedido, ele retornará nil
.
Exemplo
Este exemplo ilustra as implementações das funções de chamada e delegação ProcessReady().
// Define the process parameters processParams := ProcessParameters { OnStartGameSession: gameProcess.OnStartGameSession, OnUpdateGameSession: gameProcess.OnGameSessionUpdate, OnProcessTerminate: gameProcess.OnProcessTerminate, OnHealthCheck: gameProcess.OnHealthCheck, Port:
port
, LogParameters: LogParameters { // logging and error example []string {"C:\\game\\logs", "C:\\game\\error"
} } } err := server.ProcessReady(processParams)
ProcessEnding()
Notifica a Amazon de GameLift que o processo do servidor está sendo encerrado. Chame esse método depois de todas as outras tarefas de limpeza (incluindo o encerramento da sessão ativa do jogo) e antes de encerrar o processo. Dependendo do resultado ProcessEnding()
, o processo sai com sucesso (0) ou erro (-1) e gera um evento de frota. Se o processo for encerrado com um erro, o evento de frota gerado seráSERVER_PROCESS_TERMINATED_UNHEALTHY
.
Sintaxe
func ProcessEnding() error
Valor de retorno
Retorna um código de erro 0 ou um código de erro definido.
Exemplo
// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }
ActivateGameSession()
Notifica a Amazon de GameLift que o processo do servidor ativou uma sessão de jogo e agora está pronto para receber conexões de jogadores. Essa ação é chamada como parte da função de retorno de chamada onStartGameSession()
, após toda a inicialização da sessão do jogo.
Sintaxe
func ActivateGameSession() error
Valor de retorno
Retorna um erro com uma mensagem de erro se o método falhar.
Exemplo
Este exemplo mostra chamado ActivateGameSession()
como parte da função de delegação onStartGameSession()
.
func OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // Activate when ready to receive players err := server.ActivateGameSession(); }
UpdatePlayerSessionCreationPolicy()
Atualiza a capacidade da sessão do jogo atual para aceitar novas sessões de jogador. Atualiza a capacidade da sessão do jogo atual para aceitar novas sessões de jogador.
Sintaxe
func UpdatePlayerSessionCreationPolicy(policy model.PlayerSessionCreationPolicy) error
Parâmetros
- playerSessionCreationPolítica
-
Valor de string que indica se a sessão do jogo aceita novos jogadores.
Os valores válidos são:
-
model.AcceptAll
– Aceite todas as novas sessões de jogador. -
model.DenyAll
– Recuse todas as novas sessões de jogador.
-
Valor de retorno
Retorna um erro com uma mensagem de erro se ocorrer uma falha.
Exemplo
Este exemplo define a política de ingresso da sessão do jogo atual para aceitar todos os jogadores.
err := server.UpdatePlayerSessionCreationPolicy(
model.AcceptAll
)
GetGameSessionId()
Recupera o ID da sessão de jogo hospedada pelo processo do servidor ativo.
Sintaxe
func GetGameSessionID() (string, error)
Parâmetros
Essa ação não tem um parâmetro.
Valor de retorno
Se bem-sucedido, retornará o ID da sessão de jogo e nenhum erro. Para processos inativos que ainda não foram ativados com uma sessão de jogo, a chamada retorna uma string vazia e um erro nil
.
Exemplo
gameSessionID, err := server.GetGameSessionID()
GetTerminationTime()
Retorna a hora em que um processo do servidor está programado para ser desligado se essa informação estiver disponível. Um processo de servidor executa essa ação depois de receber um onProcessTerminate()
retorno de chamada da Amazon GameLift. A Amazon GameLift liga onProcessTerminate()
pelos seguintes motivos:
-
Quando o processo do servidor relatou problemas de saúde ou não respondeu à Amazon GameLift.
-
Ao encerrar a instância durante um evento de redução.
-
Quando uma instância é encerrada devido a uma interrupção na instância spot.
Sintaxe
func GetTerminationTime() (int64, error)
Valor de retorno
Se for bem-sucedido, retornará o registro de data e hora em segundos em que o processo do servidor está programado para ser encerrado e um erro nil
de encerramento. O valor é o tempo de rescisão, expresso em tiques decorridos de 0001 00:00:00
. Por exemplo, o valor da data e hora 2020-09-13 12:26:40 -000Z
é igual aos tiques 637355968000000000
. Se nenhum horário de rescisão estiver disponível, o retornará uma mensagem de erro.
Exemplo
terminationTime, err := server.GetTerminationTime()
AcceptPlayerSession()
Notifica a Amazon de GameLift que um jogador com o ID de sessão de jogador especificado se conectou ao processo do servidor e precisa de validação. A Amazon GameLift verifica se o ID da sessão do jogador é válido. Depois que a sessão do jogador é validada, a Amazon GameLift altera o status do slot do jogador de RESERVED
paraACTIVE
.
Sintaxe
func AcceptPlayerSession(playerSessionID string) error
Parâmetros
playerSessionId
-
ID exclusivo emitido pela Amazon GameLift quando uma nova sessão de jogador é criada.
Valor de retorno
Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.
Exemplo
Este exemplo trata de uma solicitação de conexão que inclui a validação e a rejeição de uma sessão de jogador inválida. IDs
func ReceiveConnectingPlayerSessionID(conn Connection, playerSessionID string) { err := server.AcceptPlayerSession(
playerSessionID
) if err != nil { connection.Accept() } else { connection.Reject(err.Error()) } }
RemovePlayerSession()
Notifica a Amazon de GameLift que um jogador se desconectou do processo do servidor. Em resposta, a Amazon GameLift altera o slot do jogador para disponível.
Sintaxe
func RemovePlayerSession(playerSessionID string) error
Parâmetros
playerSessionId
-
ID exclusivo emitido pela Amazon GameLift quando uma nova sessão de jogador é criada.
Valor de retorno
Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.
Exemplo
err := server.RemovePlayerSession(
playerSessionID
)
DescribePlayerSessions()
Recupera dados da sessão do jogador, que incluem configurações, metadados da sessão e dados do jogador. Use esse método para obter informações sobre o seguinte:
-
Uma sessão para um jogador
-
Todas as sessões de jogador em uma sessão de jogo
-
Todas as sessões de jogadores associadas a um único ID de jogador
Sintaxe
func DescribePlayerSessions(req request.DescribePlayerSessionsRequest) (result.DescribePlayerSessionsResult, error) { return srv.describePlayerSessions(&req) }
Parâmetros
- DescribePlayerSessionsRequest
-
Um objeto
DescribePlayerSessionsRequest
descreve quais sessões de jogador recuperar.
Valor de retorno
Se bem-sucedido, retorna um objeto DescribePlayerSessionsResult
que contém um conjunto de objetos de sessão do jogador que atendem aos parâmetros de solicitação.
Exemplo
Este exemplo solicita todas as sessões de jogador conectadas ativamente a uma sessão de jogo especificada. Ao omitir NextTokene definir o valor limite como 10, a Amazon GameLift retorna os primeiros registros de sessão de 10 jogadores que correspondam à solicitação.
// create request describePlayerSessionsRequest := request.NewDescribePlayerSessions() describePlayerSessionsRequest.GameSessionID, _ = server.GetGameSessionID() // get ID for the current game session describePlayerSessionsRequest.Limit =
10
// return the first 10 player sessions describePlayerSessionsRequest.PlayerSessionStatusFilter = "ACTIVE
" // Get all player sessions actively connected to the game session describePlayerSessionsResult, err := server.DescribePlayerSessions(describePlayerSessionsRequest)
StartMatchBackfill()
Envia uma solicitação para encontrar novos jogadores para vagas abertas em uma sessão de jogo criada com FlexMatch. Para obter mais informações, consulte o recurso FlexMatch de preenchimento.
Esta ação é assíncrona. Se novos jogadores forem combinados, a Amazon GameLift fornece dados atualizados do matchmaker usando a função de retorno de chamada. OnUpdateGameSession()
Um processo de servidor pode ter apenas uma solicitação de alocação de correspondência ativa por vez. Para enviar uma nova solicitação, primeiro chame StopMatchBackfill() para cancelar a solicitação original.
Sintaxe
func StartMatchBackfill(req request.StartMatchBackfillRequest) (result.StartMatchBackfillResult, error)
Parâmetros
- StartMatchBackfillRequest
-
Um StartMatchBackfillRequest objeto comunica as seguintes informações:
-
ID do tíquete a ser atribuído à solicitação de alocação. Essas informações são opcionais; se nenhum ID for fornecido, a Amazon GameLift gerará um.
-
O marcador de jogos para o qual a solicitação é enviada. A configuração completa ARN é necessária. Esse valor está nos dados do marcador de jogos da sessão de jogo.
-
O ID da sessão de jogo a ser preenchida.
-
Os dados disponíveis de marcação para os jogadores atuais da sessão do jogo.
-
Valor de retorno
Retorna um objeto StartMatchBackfillResult
com o ID do tíquete de alocação de correspondência ou um falha com uma mensagem de erro.
Exemplo
// form the request startBackfillRequest := request.NewStartMatchBackfill() startBackfillRequest.RequestID = "
1111aaaa-22bb-33cc-44dd-5555eeee66ff
" // optional startBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig
" var matchMaker model.MatchmakerData if err := matchMaker.UnmarshalJSON([]byte(gameSession.MatchmakerData)); err != nil { return } startBackfillRequest.Players = matchMaker.Players res, err := server.StartMatchBackfill(startBackfillRequest) // Implement callback function for backfill func OnUpdateGameSession(myGameSession model.GameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }
StopMatchBackfill()
Cancela uma solicitação de alocação de correspondência ativa. Para obter mais informações, consulte o recurso FlexMatch de preenchimento.
Sintaxe
func StopMatchBackfill(req request.StopMatchBackfillRequest) error
Parâmetros
- StopMatchBackfillRequest
-
Um StopMatchBackfillRequest objeto que identifica o tíquete de matchmaking a ser cancelado:
-
O ID do ticket atribuído à solicitação de alocação.
-
O marcador de jogo que recebeu a solicitação de alocação.
-
A sessão do jogo associada à solicitação de alocação.
-
Valor de retorno
Retorna um resultado genérico que consiste em sucesso ou falha com uma mensagem de erro.
Exemplo
stopBackfillRequest := request.NewStopMatchBackfill() // Use this function to create request stopBackfillRequest.TicketID = "
1111aaaa-22bb-33cc-44dd-5555eeee66ff
" stopBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig
" //error err := server.StopMatchBackfill(stopBackfillRequest)
GetComputeCertificate()
Recupera o caminho para o TLS certificado usado para criptografar a conexão de rede entre o servidor do jogo e o cliente do jogo. Você pode usar o caminho do certificado ao registrar seu dispositivo computacional em um Amazon GameLift Anywhere frota. Para obter mais informações, consulte RegisterCompute.
Sintaxe
func GetComputeCertificate() (result.GetComputeCertificateResult, error)
Valor de retorno
Retorna um objeto GetComputeCertificateResult
que contém o seguinte:
-
CertificatePath: o caminho para o TLS certificado em seu recurso computacional. Ao usar uma frota GameLift gerenciada pela Amazon, esse caminho contém:
-
certificate.pem
: o certificado do usuário final. A cadeia completa de certificados é a combinação decertificateChain.pem
anexados a esse certificado. -
certificateChain.pem
: a cadeia de certificados que contém o certificado raiz e os certificados intermediários. -
rootCertificate.pem
: o certificado raiz. -
privateKey.pem
: a chave privada para o certificado do usuário final.
-
-
ComputeName: o nome do seu recurso computacional.
Exemplo
tlsCertificate, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
GetFleetRoleCredentials()
Recupera as credenciais da função de serviço que você cria para estender as permissões à sua outra pessoa Serviços da AWS na Amazon. GameLift Essas credenciais permitem que seu servidor de jogo use seus recursos AWS . Para obter mais informações, consulte Configurar uma função IAM de serviço para a Amazon GameLift.
Sintaxe
func GetFleetRoleCredentials( req request.GetFleetRoleCredentialsRequest, ) (result.GetFleetRoleCredentialsResult, error) { return srv.getFleetRoleCredentials(&req) }
Parâmetros
- GetFleetRoleCredentialsRequest
-
Credenciais de função que ampliam o acesso limitado aos seus AWS recursos no servidor do jogo.
Valor de retorno
Retorna um objeto GetFleetRoleCredentialsResult
que contém o seguinte:
-
AssumedRoleUserArn - O Amazon Resource Name (ARN) do usuário ao qual a função de serviço pertence.
-
AssumedRoleId - O ID do usuário ao qual a função de serviço pertence.
-
AccessKeyId - O ID da chave de acesso para autenticar e fornecer acesso aos seus AWS recursos.
-
SecretAccessKey - O ID da chave de acesso secreta para autenticação.
-
SessionToken - Um token para identificar a sessão ativa atual interagindo com seus AWS recursos.
-
Expiração – A quantidade de tempo até que suas credenciais de sessão expirem.
Exemplo
// form the customer credentials request getFleetRoleCredentialsRequest := request.NewGetFleetRoleCredentials() getFleetRoleCredentialsRequest.RoleArn = "
arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction
" credentials, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
Destroy()
Libera o servidor de GameLift jogos da Amazon SDK da memória. Como melhor prática, chame esse método antes ProcessEnding()
e depois de encerrar o processo. Se você estiver usando uma frota Anywhere e não estiver encerrando os processos do servidor após cada sessão de jogo, ligue Destroy()
e reinicialize antes de notificar InitSDK()
a Amazon de GameLift que o processo está pronto para hospedar uma sessão de jogo. ProcessReady()
Sintaxe
func Destroy() error { return srv.destroy() }
Valor de retorno
Retorna um erro com uma mensagem de erro se o método falhar.
Exemplo
// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }