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á.
Gerar solicitações de alocação manual de um servidor de jogos
Você pode iniciar manualmente as solicitações de alocação de correspondência do processo do servidor de jogos que está hospedando a sessão do jogo. O processo do servidor tem mais up-to-date informações sobre os jogadores conectados ao jogo e o status dos slots vazios.
Este tópico pressupõe que você já criou os componentes necessários do FlexMatch e adicionou com êxito os processos de criação de partidas ao seu servidor de jogos e ao serviço de jogo do lado do cliente. Para obter mais detalhes sobre como configurar o FlexMatch, consulte Roteiro: Adicionar criação de partidas a uma solução de hospedagem do Amazon GameLift Servers.
Para habilitar a alocação de correspondência para seu jogo, adicione as seguintes funcionalidades:
-
Enviar solicitações de alocação de criação de partidas a um marcador de jogos e acompanhar o status das solicitações.
-
Atualizar as informações de correspondência para a sessão do jogo. Consulte Atualizar dados de correspondência no servidor de jogo.
Assim como ocorre com outras funcionalidades do servidor, um servidor de jogos usa o SDK Server do Amazon GameLift Servers. Esse SDK está disponível em C++ e C #.
Para fazer solicitações de alocação de correspondência a partir do seu servidor de jogo, execute as seguintes tarefas.
-
Acione uma solicitação de alocação de correspondência. Geralmente, você inicia uma solicitação de alocação sempre que um jogo correspondente tem um ou mais slots de jogador vazios. Você pode vincular as solicitações de alocação a circunstâncias específicas, como preencher funções de personagens críticos ou equilibrar as equipes. Talvez você também queira limitar a atividade de alocação com base no tempo de uma sessão de jogo.
-
Crie uma solicitação de alocação. Adicione o código para criar e enviar solicitações de alocação de partida para um marcador de jogos do FlexMatch. As solicitações de preenchimento são tratadas usando estes servidores: APIs
Para criar uma solicitação de alocação, chame
StartMatchBackfillcom as informações a seguir. Para cancelar uma solicitação de alocação, chameStopMatchBackfillcom o ID do ticket de solicitação de alocação.-
ID de ticket: forneça um ID de ticket de marcação de jogo (ou faça com que ele seja gerado automaticamente). Você pode usar o mesmo mecanismo para atribuir tíquetes IDs às solicitações de matchmaking e de preenchimento. Os tíquetes para a criação de partidas e alocação são processados da mesma forma.
-
Matchmaker: identifique o marcador de jogo a ser usado para a solicitação de alocação. Geralmente, você usa o mesmo marcador de jogo usado para criar o jogo original. Essa solicitação usa um ARN de configuração de criação de partidas. Essas informações são armazenadas no objeto da sessão do jogo (GameSession), que foi fornecido ao processo do servidor Amazon GameLift Servers ao ativar a sessão do jogo. O ARN da configuração da marcação do jogo está incluído na propriedade
MatchmakerData. -
ARN da sessão de jogo: identifique a sessão do jogo que está sendo alocada. Você pode obter o ARN da sessão do jogo chamando a API do servidor GetGameSessionId(). Durante o processo de criação de partidas, os tickets para as novas solicitações não têm um ID de sessão de jogo, mas os tickets de solicitações de alocação têm. A presença de um ID de sessão do jogo é uma forma de saber a diferença entre os tickets de jogos novos e os tickets de alocações.
-
Dados do jogador: inclua as informações dos jogadores (Jogador) para todos os jogadores atuais na sessão de jogo que você está alocando. Essas informações permitem que o marcador de jogos localize as melhores correspondências possíveis entre jogadores para os jogadores presentes na sessão de jogo atual. Você deve incluir a composição da equipe para cada jogador. Não especifique uma equipe se você não estiver usando o preenchimento. Se o seu servidor de jogos estiver informando o status da conexão dos jogadores com precisão, você poderá obter esses dados da seguinte forma:
-
O processo do servidor que hospeda a sessão de jogo deve ter o máximo de up-to-date informações sobre quais jogadores estão atualmente conectados à sessão de jogo.
-
Para obter as atribuições do jogador IDs, dos atributos e da equipe, extraia os dados do jogador do objeto da sessão do jogo (GameSession),
MatchmakerDatada propriedade (consulteSobre os dados do marcador de jogos). Os dados do marcador de jogos incluem todos os jogadores que foram inseridos por correspondência na sessão do jogo. Portanto, você precisará obter os dados apenas dos jogadores conectados no momento. -
Para obter a latência do jogador, se o marcador de jogos fizer chamadas para os dados de latência, colete os novos valores de latência de todos os jogadores atuais e os inclua em cada objeto
Player. Se a latência de dados for omitida e o marcador de jogos tiver uma regra de latência, a correspondência dessa solicitação não será bem-sucedida. As solicitações de alocação exigem dados de latência somente para a região onde a sessão de jogo se encontra no momento. Você pode obter a região onde a sessão do jogo está na propriedadeGameSessionIddo objetoGameSession; este valor é um ARN, o que inclui a região.
-
-
-
Acompanhar o status de uma solicitação de alocação. O Amazon GameLift Servers atualiza o servidor de jogos com o status das solicitações de alocação usando a função de retorno de chamada do SDK Server
onUpdateGameSession(consulte Inicializar o processo do servidor).. Adicione o código para tratar as mensagens de status, assim como os objetos atualizados da sessão de jogo como resultado das solicitações de alocação bem-sucedidas, em Atualizar dados de correspondência no servidor de jogo.Um marcador de jogos pode processar apenas uma solicitação de alocação de correspondência de uma sessão de jogo por vez. Se precisar cancelar uma solicitação, ligue para StopMatchBackfill(). Se você precisar alterar uma solicitação, chame
StopMatchBackfille, em seguida, envie uma solicitação atualizada.