

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á.

# Jogos existentes em preenchimento com o FlexMatch
<a name="match-backfill"></a>

A alocação de correspondência usa os mecanismos do FlexMatch para encontrar novos jogadores para as sessões de jogos existentes correspondentes. Embora você possa sempre adicionar jogadores em qualquer jogo (consulte [Incluir um jogador em uma sessão de ogo](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#gamelift-sdk-client-api-join)), a alocação de correspondência garante que os novos jogadores atendem aos mesmos critérios de correspondência que os jogadores atuais. Além disso, a alocação de correspondência atribui os novos jogadores às equipes, gerencia a aceitação de jogadores e envia informações atualizadas sobre correspondência para o processo do servidor de jogos. Saiba mais sobre a alocação de correspondência em [Processo de combinação do FlexMatch](gamelift-match-howitworks.md).

**nota**  
O preenchimento do FlexMatch não está disponível no momento para jogos que usam o Amazon GameLift Servers Realtime.

Existem dois tipos de mecanismos de alocação:
+ Habilite a alocação automática para preencher sessões de jogos que começam com menos jogadores do que o máximo permitido. O preenchimento automático não preenche os jogadores que entram no jogo e depois desistem.
+ Configure um mecanismo de alocação manual para substituir jogadores que desistem de uma sessão de jogo em andamento. Esse mecanismo deve ser capaz de detectar um slot aberto e gerar uma solicitação de preenchimento para preenchê-lo. 

# Ativar a alocação automática
<a name="match-backfill-auto"></a>

Com a alocação automática de correspondência, o Amazon GameLift Servers acionará automaticamente uma solicitação de alocação sempre que uma sessão de jogo começar com um ou mais slots de jogadores não preenchidos. Este recurso permite que os jogos comecem assim que o número mínimo de jogadores combinados for encontrado e preenche os slots restantes mais tarde, à medida que jogadores adicionais forem combinados. É possível optar por interromper a alocação automática a qualquer momento. 

Como exemplo, considere um jogo que pode conter de seis a dez jogadores. o FlexMatch localiza inicialmente seis jogadores, forma o jogo e inicia uma nova sessão de jogo. Com a alocação automática, a nova sessão de jogo pode solicitar imediatamente mais quatro jogadores. Dependendo do estilo do jogo, podemos permitir que novos jogadores entrem a qualquer momento durante a sessão do jogo. Como alternativa, é possível interromper a alocação automática após a fase inicial de configuração e antes do início do jogo.

Para adicionar uma alocação automática ao seu jogo, faça as seguintes atualizações no seu jogo.

1. **Habilite a alocação automática.** A alocação automática é gerenciada em uma configuração de criação de partidas. Quando ativada, é usada com todas as sessões de jogos correspondentes criadas com esse marcador de jogos. O Amazon GameLift Servers começa a gerar solicitações para alocação em uma sessão de jogo não completa assim que a sessão inicia em um servidor de jogos.

   Para ativar a alocação automática, abra uma correspondência de configuração e defina o modo de alocação como "AUTOMÁTICO". Para obter mais detalhes, consulte [Criar uma configuração de criação de partidas](match-create-configuration.md)

1. **Ative a priorização do preenchimento**. Personalize o processo de criação de partidas para priorizar o preenchimento de solicitações de preenchimento antes de criar novos jogos. Em seu conjunto de regras de criação de partidas, adicione um componente de algoritmo e defina a prioridade de preenchimento como “alta”. Consulte mais detalhes em [Personalize o algoritmo de correspondência](match-rulesets-components-algorithm.md).

1. **Atualizar a sessão do jogo com novos dados do marcador.** Amazon GameLift Servers atualiza o servidor de jogos com informações de correspondência usando a função de retorno de chamada do Server SDK `onUpdateGameSession` (consulte [Inicializar o processo do servidor](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize)). Adicione o código ao seu servidor de jogos para manipular os objetos de sessão de jogo atualizado como resultado da atividade de alocação. Saiba mais em [Atualizar dados de correspondência no servidor de jogo](match-backfill-server-data.md). 

1. **Desative a alocação automática para uma sessão de jogo.** Você pode optar por interromper a alocação automática a qualquer momento durante uma sessão de jogo individual. Para interromper o preenchimento automático, adicione código ao cliente ou servidor do jogo para fazer a chamada [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)à Amazon GameLift Servers API. Essa chamada requer o ID do ticket. Use o ID de ticket de alocação da última solicitação. Você pode obter essas informações nos dados de marcação da sessão do jogo, que são atualizados conforme descrito na etapa anterior.

# Gerar solicitações de alocação manual de um servidor de jogos
<a name="match-backfill-server"></a>

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](match-tasks.md). 

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](match-backfill-server-data.md).

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\$1\$1 e C \$1. 

Para fazer solicitações de alocação de correspondência a partir do seu servidor de jogo, execute as seguintes tarefas.

1. **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. 

1. **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
   + [ StartMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-startmatchbackfill)
   + [ StopMatchBackfill()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-stopmatchbackfill)

   Para criar uma solicitação de alocação, chame `StartMatchBackfill` com as informações a seguir. Para cancelar uma solicitação de alocação, chame `StopMatchBackfill` com 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), 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()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_Player.html)) 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: 

     1. 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. 

     1. 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), `MatchmakerData` da propriedade (consulte[Sobre os dados do marcador de jogos](match-server.md#match-server-data)). 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. 

     1. 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 propriedade `GameSessionId` do objeto `GameSession`; este valor é um ARN, o que inclui a região. 

1. **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](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize)).. 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](match-backfill-server-data.md). 

   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()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-stopmatchbackfill). Se você precisar alterar uma solicitação, chame `StopMatchBackfill` e, em seguida, envie uma solicitação atualizada.

# Gerar solicitações de alocação manual de um serviço de backend
<a name="match-backfill-client"></a>

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](match-tasks.md). 

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](match-backfill-server-data.md)

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\$1\$1, C\$1 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.

1. **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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)) chamando [DescribeGameSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)com 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. 

1. **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
   + [StartMatchBackfill](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartMatchBackfill.html)
   + [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)

   Para criar uma solicitação de alocação, chame `StartMatchBackfill` com 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](match-client-start.md)), mas também identifica a sessão do jogo existente. Para cancelar uma solicitação de alocação, chame `StopMatchmaking` com 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), `MatchmakerData` propriedade, 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 `GameSessionId` do objeto de sessão do jogo; esse ID usa o valor do ARN de que você precisa. Tíquetes de matchmaking ([MatchmakingTicket](https://docs.aws.amazon.com/gamelift/latest/apireference/API_MatchmakingTicket.html)) 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_Player.html)) 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: 

     1. Ligue para [DescribePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html) 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.

     1. Extraia dados do jogador do objeto da sessão de jogo ([GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)), `MatchmakerData` propriedade (consulte[Sobre os dados do marcador de jogos](match-server.md#match-server-data). 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.

     1. 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 propriedade `GameSessionId` do objeto `GameSession`; este valor é um ARN, o que inclui a região. 

1. **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](match-client-track.md)) 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](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html). Se você precisar alterar uma solicitação, chame `StopMatchmaking` e, em seguida, envie uma solicitação atualizada.

   Assim que uma solicitação de alocação é bem-sucedida, o servidor de jogos recebe um objeto `GameSession` atualizado 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](match-backfill-server-data.md). 

# Atualizar dados de correspondência no servidor de jogo
<a name="match-backfill-server-data"></a>

Independentemente de como você inicia as solicitações de alocação de correspondência em seu jogo, o servidor de jogos deve ser capaz de processar as atualizações da sessão do jogo que o Amazon GameLift Servers fornece como resultado das solicitações de alocação de correspondência.

Quando o Amazon GameLift Servers conclui uma solicitação de preenchimento de jogo, com sucesso ou não, ele chama seu servidor de jogo usando a função de retorno de chamada `onUpdateGameSession`. Essa chamada tem três parâmetros de entrada: um ID de tíquete de preenchimento de partida, uma mensagem de status e um GameSession objeto contendo a maioria dos dados de up-to-date matchmaking, incluindo informações do jogador. Você precisa adicionar o código a seguir ao seu servidor de jogos como parte da integração do servidor de jogos: 

1. Implemente a função `onUpdateGameSession`. Esta função deve ser capaz de processar as seguintes mensagens de status (`updateReason`): 
   + MATCHMAKING\$1DATA\$1UPDATED: a correspondência dos novos jogadores com a sessão do jogo foi bem-sucedida. O objeto `GameSession` contém os dados atualizados do marcador de jogos, incluindo dados dos jogadores existentes e dos jogadores recém-incluídos por correspondência. 
   + BACKFILL\$1FAILED: a tentativa de alocação de correspondência falhou devido a um erro interno. O objeto `GameSession` não é alterado.
   + BACKFILL\$1TIMED\$1OUT: o marcador de jogos não encontrou uma correspondência para alocar dentro do limite de tempo. O objeto `GameSession` não é alterado.
   + BACKFILL\$1CANCELLED — A solicitação de preenchimento de correspondência foi cancelada por uma chamada para StopMatchmaking (cliente) ou (servidor). StopMatchBackfill O objeto `GameSession` não é alterado.

1. Para que as correspondências de alocação sejam bem-sucedidas, use os dados atualizados do marcador de jogos para processar os novos jogadores quando eles se conectarem à sessão do jogo. No mínimo, você precisará usar as atribuições da equipe para os novos jogadores, bem como outros atributos de jogadores que são necessários para que o jogador possa começar a jogar.

1. Na chamada do servidor do jogo para a ação do SDK do Servidor [ ProcessReady()](https://docs.aws.amazon.com/gamelift/latest/developerguide/integration-server-sdk-cpp-ref-actions.html#integration-server-sdk-cpp-ref-processready), adicione o nome do método de `onUpdateGameSession` retorno de chamada como parâmetro do processo.