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 serviço de backend
Como alternativa ao envio de solicitações de alocação a partir de um servidor de jogos, você pode enviá-las a partir de um serviço de jogo do lado do cliente. Para usar essa opção, o serviço do lado do cliente deve ter acesso aos dados atuais sobre as atividades da sessão de jogo e as conexões dos jogadores; se o seu jogo usa um serviço de diretório de sessão, essa pode ser uma boa opção.
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 acontece com outras funcionalidades do cliente, um serviço de jogos do lado do cliente usa o AWS SDK com API. Amazon GameLift Servers Este SDK está disponível em C++, C# e em diversas outras linguagens. Para uma descrição geral do cliente APIs, consulte a Referência da Amazon GameLift Servers API, que descreve a API de serviço para Amazon GameLift Servers ações e links para guias de referência específicos do idioma.
Para configurar um serviço de jogo do lado do cliente para alocar jogos correspondentes, execute as tarefas a seguir.
-
Acione uma solicitação de alocação. Geralmente, um jogo 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 alocação com base no tempo de uma sessão de jogo. Independentemente da forma como acionará a solicitação, você precisará ao menos das informações a seguir. Você pode obter essas informações do objeto de sessão de jogo (GameSession) chamando DescribeGameSessionscom um ID de sessão de jogo.
-
Número de slots de jogador vazios no momento. Esse valor pode ser calculado a partir do limite máximo de jogadores de uma sessão de jogo e da contagem atual de jogadores. O número atual de jogadores é atualizado sempre que o seu servidor de jogos entra em contato com o serviço Amazon GameLift Servers para validar a conexão de um novo jogador ou para informar que um jogador saiu.
-
Política de criação. Essa configuração indica se a sessão do jogo está aceitando novos jogadores no momento.
O objeto da sessão do jogo contém outras informações potencialmente úteis, incluindo o horário de início da sessão do jogo, as propriedades de jogos personalizados e os dados do marcador de jogos.
-
-
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 clientes: APIs
Para criar uma solicitação de alocação, chame
StartMatchBackfillcom as informações a seguir. Uma solicitação de alocação é semelhante a uma solicitação de criação de partidas (consulte Solicitar criação de partidas para jogadores), mas também identifica a sessão do jogo existente. Para cancelar uma solicitação de alocação, chameStopMatchmakingcom 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 nome de uma configuração de criação de partidas para usar. Geralmente, você usa o mesmo marcador de jogo para alocar que foi usado para criar a correspondência original. Essas informações estão em um objeto de sessão de jogo (GameSession),
MatchmakerDatapropriedade, sob a configuração de matchmaking ARN. O valor de nome é a string que aparece logo após ""criação de partidasconfiguration/". (Por exemplo, no valor do ARN "arn:aws:gamelift:us-west-2:111122223333:criação de partidasconfiguration/MM-4v4", o nome da configuração de criação de partidas é "MM-4v4".) -
ARN da sessão do jogo: especifique a sessão do jogo que está sendo alocada. Use a propriedade
GameSessionIddo objeto de sessão do jogo; esse ID usa o valor do ARN de que você precisa. Tíquetes de matchmaking (MatchmakingTicket) para solicitações de preenchimento têm o ID da sessão do jogo enquanto são processados; ingressos para novas solicitações de matchmaking não recebem um ID de sessão de jogo até que a partida seja realizada; a presença do ID da sessão de jogo é uma forma de saber a diferença entre ingressos para novas partidas e ingressos para preenchimento. -
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 de jogadores possíveis 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:
-
Ligue para DescribePlayerSessions() com o ID da sessão do jogo para descobrir todos os jogadores que estão atualmente conectados à sessão do jogo. Cada sessão de jogador inclui um ID de jogador. Você pode adicionar um filtro de status para recuperar somente as sessões de jogador ativas.
-
Extraia dados do jogador do objeto da sessão de jogo (GameSession),
MatchmakerDatapropriedade (consulteSobre os dados do marcador de jogos. Use o player IDs adquirido na etapa anterior para obter dados somente dos jogadores atualmente conectados. Como os dados do marcador de jogos não são atualizados quando os jogadores abandonam o jogo, você precisa extrair os dados apenas para os jogadores atuais. -
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 no 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.
-
-
-
Acompanhe o status da solicitação de alocação. Adicione o código para seguir as atualizações de status do ticket de criação de partidas. Você pode usar a configuração do mecanismo para acompanhar os tickets das novas solicitações de criação de partidas (consulte Rastrear eventos de criação de partidas) usando a notificação de evento (de preferência) ou a sondagem. Embora você não precise acionar a atividade de aceitação de jogadores com solicitações de alocação e as informações dos jogadores sejam atualizadas no servidor de jogos, você ainda precisa monitorar o status do ticket para tratar as falhas de solicitação e as solicitações que foram reenviadas.
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 você precisar cancelar uma solicitação, chame StopMatchmaking. Se você precisar alterar uma solicitação, chame
StopMatchmakinge, em seguida, envie uma solicitação atualizada.Assim que uma solicitação de alocação é bem-sucedida, o servidor de jogos recebe um objeto
GameSessionatualizado e processa as tarefas necessárias para incluir os novos jogadores na sessão do jogo. Veja mais em Atualizar dados de correspondência no servidor de jogo.