Visão geral do design
Para integrar o MPA ao PlayFab Lobby e Match ou a serviços semelhantes, um título ou serviço do título precisa consultar as informações relevantes no estado do lobby e, em seguida, migrar essas informações para o serviço MPA. O serviço MPA não se destina a informações de estado de lobby ou de sessão.Atividade
Para a Atividade do MPA, a fonte das informações deve ser as informações do lobby subjacente. Um título ou serviço precisa definir as informações relevantes nos campos de conteúdo da Atividade do MPA seguindo estas práticas recomendadas:-
Frequência de atualização
A migração de estado dos dados do lobby deve ser realizada em uma frequência razoável para refletir alterações, como atualizações nas informações de
CurrentPlayers. As chamadas de atualização não devem exceder os limites de chamadas descritos em Limitação de taxa refinada. A Atividade do MPA também não deve ser excluída e recriada para atualizar informações. -
Identidade de usuário do XBOX (XUID)
O XUID de um jogador normalmente é uma informação não validada em serviços fora dos serviços do XBOX e não é o identificador principal de serviços entre redes. O PlayFab Lobby usa um ID de entidade de usuário do PlayFab entre redes para os jogadores, que pode ser convertido em um XUID para o usuário ativo por meio de chamadas de API ou de serviço. Para obter mais detalhes, consulte o Tutorial: obter um perfil de jogador do PlayFab. Somente esse XUID resolvido deve ser considerado seguro.
O XUID de outros jogadores não pode ser recuperado dessa forma. Como solução, os XUIDs podem ser fornecidos como propriedades de cadeia de caracteres personalizadas de um jogador no Lobby. Essas cadeias de caracteres não devem ser consideradas seguras e devem sempre ser validadas por meio do serviço PlayFab usando
PFAccountManagementClientGetPlayFabIDsFromXboxLiveIDsGetResultpara comparar o ID de entidade de usuário do PlayFab esperado e o real de um XUID. Uma incompatibilidade indica um XUID incorreto. Para todos os serviços, XUIDs fornecidos como cadeias de caracteres não seguras não são seguros e podem levar a ataques de representação sem validação. -
Cadeia de conexão
Para integrar com o serviço PlayFab Lobby, a cadeia de conexão de uma atividade do MPA deve ser definida como a cadeia de conexão do Lobby, que pode ser recuperada por meio de
PFLobbyGetConnectionString. Outros serviços devem usar uma cadeia de entrada equivalente. -
Refletindo a disponibilidade de entrada no lobby
Uma Atividade se destina a permitir que os jogadores ingressem em experiências de jogabilidade e precisa corresponder à disponibilidade de entrada do estado do lobby subjacente. Uma Atividade deixa de aceitar entradas automaticamente quando está cheia (
CurrentPlayersatinge o valor deMaxPlayers). Títulos que desejam impedir temporariamente as entradas em uma Atividade também podem usar esse comportamento. Uma Atividade só deve ser excluída quando nenhuma entrada futura for possível. Observe que alterar a configuração de privacidade da Atividade apenas restringe as entradas, mas não pode bloquear todas elas. Devido à latência das entradas por meio de Atividades, os títulos devem sempre considerar fluxos em que as entradas são feitas em sessões cheias ou que não aceitam entradas e fornecer os erros apropriados ao jogador. - Refletindo alterações de privacidade O estado e as alterações da privacidade da atividade por meio das Join Restrictions devem espelhar a Access Policy definida para o PlayFab Lobby subjacente. O mesmo se aplica a serviços semelhantes e pode exigir o mapeamento de valores de privacidade.
Convites
Para os Convites do MPA, a fonte recomendada também deve ser as informações do lobby subjacente. Essa abordagem recomendada é mais confiável do que um convite para uma malha de rede como o PlayFab Party e pode fornecer informações de estado por meio dos dados do lobby imediatamente. Para integrar com o serviço PlayFab Lobby, a cadeia de conexão de um convite do MPA deve ser definida como a cadeia de conexão do Lobby. Essa cadeia de caracteres pode ser recuperada por meio dePFLobbyGetConnectionString. Além disso, o valor apropriado de entrada multiplataforma deve ser definido para o convite.
