Pré-requisitos
Para tratar os privilégios de usuário no seu aplicativo cliente dos serviços do XBOX, configure seu jogo para autenticação com os serviços do XBOX. Para obter mais informações, consulte a visão geral da autenticação e da entrada e a visão geral dos privilégios de usuário dos serviços do XBOX.Tratamento no lado do cliente e a experiência do jogador para privilégios e upsell
Os aplicativos cliente estão sujeitos aos XBOX Requirements (XR), que exigem privilégios para controlar uma parte do jogo, como o XR-045: XBOX network and Account Privileges. Para obter mais informações, consulte XR-045: XBOX network and Account Privileges. Para jogos controlados por privilégios, você pode usar APIs. XUserCheckPrivilege determina se um jogador tem um privilégio específico. XUserResolvePrivilegeWithUiAsync exibe uma interface do usuário (UI) que ajuda os jogadores a resolver problemas relacionados ao privilégio especificado. A interface explica por que o jogador não tem um privilégio. Por exemplo, um jogo sujeito ao privilégioXPRIVILEGE_MULTIPLAYER_SESSIONS tem o fluxo a seguir.
- O jogador vê uma opção para iniciar uma sessão multiplayer e tenta iniciar uma partida selecionando a opção apropriada na interface.
-
O jogo verifica a “dica” usando a API
XUserCheckPrivilege.- Se ela estiver presente, presuma que o jogador tem o privilégio e prossiga.
- Se não estiver, vá para a próxima etapa.
As APIs dos serviços do XBOX retornam um código de status 403 (HTTP_E_STATUS_FORBIDDEN) quando o acesso a um recurso é negado devido à ausência de um privilégio no XToken. Todos os pontos de extremidade dos serviços do XBOX aplicam o controle de acesso baseado em privilégios conforme apropriado. -
Em resposta ao código de falha, o jogo chama
XUserResolvePrivilegeWithUiAsynccom o ID de privilégio apropriado para aquele que você está tentando resolver. Essa função chama os serviços do XBOX para verificar se o jogador tem o privilégio e, em seguida, informa ao jogador por que a ação falhou ou mostra ao jogador a interface para resolver o problema. Os resultados a seguir podem decorrer dessa chamada à API.- Mostrar a interface relacionada ao status de aplicação de medidas do jogador emitido pelos moderadores de políticas e aplicação dos serviços do XBOX.
- Mostrar a interface relacionada aos controles parentais.
- Promover um serviço de assinatura aplicável, como uma assinatura XBOX Game Pass Essential.
- Retornar o resultado ao jogo (sucesso ou falha, com um motivo).
Se os serviços do XBOX ou a rede estiverem inacessíveis,XUserResolvePrivilegeWithUiAsyncfalhará. Essa falha deve ser tratada como se o jogador não tivesse o privilégio. -
No retorno de
XUserResolvePrivilegeWithUiAsync:- Se for retornada uma falha, o jogo precisa permitir que o jogador continue selecionando o botão, porque (por exemplo) os banimentos do jogador podem expirar ou os controles parentais podem mudar.
- Se for retornado sucesso, o problema do jogador foi corrigido, e seu jogo pode tentar a ação novamente.
O token do jogador conterá os privilégios necessários como parte da correção executada por
XUserResolvePrivilegeWithUiAsync.
Os privilégios são verificações de nível macro que respondem à pergunta: “Posso?” Por exemplo: “Este jogador pode acessar os recursos multiplayer?” No entanto, os privilégios não são a única permissão que seu jogo precisa verificar.Para obter mais informações sobre quais privilégios se aplicam ao seu título, consulte XR-045: XBOX network and Account Privileges.
Código de exemplo
Use o exemplo de código a seguir para verificar o privilégio de multiplayer de um jogador antes que seu título conceda a ele acesso à funcionalidade multiplayer.OnMultiplayerAllowed e OnMultiplayerDenied são funções definidas pelo seu título. O exemplo relata cada resultado por meio de uma delas e habilita o multiplayer somente após uma verificação bem-sucedida ou uma resolução de privilégio bem-sucedida. O exemplo requer XUser.h, XAsync.h e <memory>. Os identificadores userHandle e queue devem permanecer válidos até que os callbacks de conclusão sejam executados.
Práticas recomendadas para o tratamento de privilégios no lado do aplicativo
Ao tratar os privilégios de usuário no seu título, verifique se está aplicando as práticas recomendadas a seguir.Frequência de resolução de privilégios no aplicativo
Para as verificações de privilégio, o requisito é garantir, uma vez por inicialização, que o jogador tenha os privilégios apropriados e resolvê-los. Recomendamos verificar a cada sessão lógica e ação discreta. Sua definição de sessão pode variar muito dependendo do uso do seu aplicativo. Veja a seguir exemplos de práticas recomendadas.- Para aplicativos de streaming de mídia, como players de vídeo, resolva as verificações de privilégio uma vez a cada seleção do botão Play (início do stream) ou no início de uma playlist (para vários streams, como uma playlist de música).
- Para aplicativos de mensagens, verifique os privilégios uma vez, na primeira mensagem enviada.
- Para jogos multiplayer que usam serviços de partida de terceiros, resolva as verificações de privilégio no início de cada sessão (partida).
Nunca presuma o nível de assinatura de um usuário
Historicamente, as declarações do XBOX 360 forneciam informações sobre o nível de assinatura do jogador (como o status do XBOX Game Pass Essential). Essa declaração foi preterida com a introdução da família XBOX One e posteriores. Certifique-se de tomar suas decisões usando privilégios. O nível do usuário, ou a forma como ele adquiriu um privilégio, precisa ser opaco para o aplicativo.Modo offline
SeXUserCheckPrivilege retornar que o serviço está fora do ar ou inacessível, trate esse resultado como se a verificação de privilégio tivesse retornado uma falha.
Fazendo isso, seu jogo tem uma proteção contra falhas para se manter em conformidade com os XRs.
Direcionando ao jogador correto
Recomendamos sempre referenciar o jogador que está agindo, caso outro jogador não seja especificado para a verificação de privilégio. Se o seu jogo oferecer suporte à designação de um usuário, use o usuário designado no momento. Por exemplo, há três jogadores conectados: Bill, Bob e Beth. Seu jogo oferece suporte à troca entre “jogadores ativos” para designar de quem são as recomendações, o histórico e as configurações a serem usados. Beth iniciou seu aplicativo. Com o jogo em execução, o jogador ativo foi trocado para Bob. Bob tem um perfil, um conjunto de recomendações e um histórico separados. ChameXUserCheckPrivilege para iniciar uma verificação de privilégio para Bob.
Verificando sem interface ou com a interface fora de foco
Há casos em que seu jogo não pode apresentar uma janela modal, de modo que a experiência do usuário de uma verificação de privilégio fica bloqueada. Por exemplo, quando o jogo está tocando música em segundo plano ou durante chamadas recebidas enquanto o aplicativo Skype está em execução em segundo plano. No entanto, seu jogo ainda precisa verificar o privilégio. Recomendamos chamarXUserCheckPrivilege.
XUserCheckPrivilege retorna o estado de permissão atual do usuário, ou uma falha aplicável, em vez de apresentar a interface.
Seu jogo pode afetar o jogador, conforme definido pelos privilégios dele, e informá-lo sobre a verificação
de privilégio quando o jogo voltar a ter foco.
Por outro lado, seu título pode mostrar ao jogador informações de erro não modais ou outra experiência, conforme desejado.
Quando for apropriado mostrar ao jogador uma experiência bloqueante, chame XUserResolvePrivilegeWithUiAsync novamente para mostrar a experiência adequada, como upsell ou status de aplicação de medidas.
Testando o controle de acesso baseado em privilégios nos seus jogos
Os privilégios são calculados com base nas seguintes entradas.- Direitos de assinatura efetivos do jogador
- Direitos de privilégio efetivos do dispositivo
- Direitos de privilégio efetivos da plataforma cliente
- Direitos de privilégio efetivos do jogo atual
- É possível empacotar um jogo com um conjunto de privilégios para que todos os jogadores do jogo recebam automaticamente esses privilégios para uso no jogo em execução. Se o seu jogo exigir esse recurso, entre em contato com seu gerente de conta da Microsoft.
- Controles parentais, para que os pais decidam quais privilégios adicionar ou remover para as crianças da família
- Os moderadores do XBOX podem banir privilégios de jogadores ou dispositivos identificados como abusivos com o serviço
Gerenciando e verificando os privilégios e as permissões dos jogadores
As configurações de privacidade do jogador podem ser acessadas de duas maneiras.- No PC: acesse https://aka.ms/XboxPrivSettings.
- No XBOX: acesse Configurações -> Geral -> Segurança online e família -> Privacidade e segurança online -> Privacidade do XBOX
Privilégios verificados com XUserCheckPrivilege
XUserPrivilege::CrossPlay
- Descrição: permite que um jogador participe de uma sessão de jogo com outros jogadores reais que não estão conectados aos serviços do XBOX em cenários como: jogo síncrono jogador contra jogador na mesma sessão, jogo assíncrono baseado em turnos, jogo em equipe, matchmaking iniciado pelo usuário, envio ou aceitação de convites e sessões com entrada em andamento.
- Requisito: XR-045 - XBOX services and Account Privileges
- ID do privilégio: 185
- Configuração no PC: Você pode jogar com pessoas fora dos serviços do XBOX
- Configuração no XBOX: Você pode participar de jogos entre redes
XUserPrivilege::Sessions
- Descrição: permite que um jogador participe de experiências conectadas para um jogador em ambientes compartilhados ou em cenários em que um título é híbrido, com partes gratuitas e multiplayer pago, e usa esse privilégio para controlar essas experiências nos consoles XBOX. As experiências para um jogador não podem ter nenhum recurso coberto pelos privilégios 252 ou 254 (Comunicação e Multiplayer, respectivamente). O uso deste privilégio é uma funcionalidade de título que exige a aprovação da plataforma.
- Requisito: XR-045 - XBOX services and Account Privileges
- ID do privilégio: 189
- Configuração no PC: Você pode participar de jogos multiplayer
- Configuração no XBOX: Você pode participar de jogos multiplayer
XUserPrivilege::Multiplayer
- Descrição: permite que um jogador participe de sessões de jogo multiplayer online com usuários reais (não bots) em cenários como: jogo síncrono jogador contra jogador na mesma sessão, jogo assíncrono baseado em turnos, jogo em equipe, matchmaking iniciado pelo usuário, envio ou aceitação de convites e sessões com entrada em andamento. Observe que esse privilégio não se aplica a jogos multiplayer locais executados no mesmo dispositivo.
- Requisito: XR-045 - XBOX services and Account Privileges
- ID do privilégio: 254
- Configuração no PC: Você pode participar de jogos multiplayer
- Configuração no XBOX: Você pode participar de jogos multiplayer
XUserPrivilege::UserGeneratedContent
- Descrição: permite que um jogador veja o UGC de outros usuários online, baixe o UGC de outros usuários ou compartilhe o próprio UGC online. Isso não restringe o uso de UGC baixado anteriormente.
- Requisito: XR-045 - XBOX services and Account Privileges
- ID do privilégio: 247
- Configuração no PC: Você pode ver e carregar criações da comunidade
- Configuração no XBOX: Você pode ver e carregar criações da comunidade
XUserPrivilege::SocialNetworkSharing
- Descrição: somente consoles XBOX: permite que um jogador compartilhe informações, incluindo o progresso no jogo, conteúdo gerado pelo Kinect, clipes de jogo e assim por diante, fora da rede XBOX.
- Requisito: XR-045 - XBOX services and Account Privileges
- ID do privilégio: 220
- Configuração no XBOX: Você pode compartilhar fora do XBOX
XUserPrivilege::Communications
- Descrição: permite que um jogador se comunique com quaisquer outros usuários dos serviços do XBOX por voz ou texto.
- Requisito: XR-045 - XBOX services and Account Privileges
- ID do privilégio: 252
- Configuração no PC: Outras pessoas podem se comunicar por voz, texto ou convites
- Configuração no XBOX: Outras pessoas podem se comunicar por voz, texto ou convites
Permissões verificadas com XblPrivacyCheckPermissionAsync
Os títulos também podem usar XblPrivacyBatchCheckPermissionAsync quando as permissões precisarem ser verificadas em relação a vários usuários e XblPrivacyCheckPermissionForAnonymousUserAsync ao verificar permissões em relação a um usuário que não é dos serviços do XBOX.XblPermission::CommunicateUsingText
- Descrição: verifica se o jogador pode ou não enviar uma mensagem com conteúdo de texto ao usuário de destino. Esse valor não muda se o jogador tiver silenciado o usuário de destino; nesse caso, use CommunicateUsingVoice. Esse valor será false se, por exemplo, você tiver definido suas comunicações apenas para amigos e o destino não for um amigo. Esse valor será false se, por exemplo, o jogador de destino tiver bloqueado você. Esse valor será false se, por exemplo, você tiver definido suas configurações de comunicação como Bloqueado.
- Requisito: XR-015 - Managing Player Communication
- Ao verificar outro usuário dos serviços do XBOX
- Configuração no PC: Outras pessoas podem se comunicar por voz, texto ou convites
- Configuração no XBOX: Outras pessoas podem se comunicar por voz, texto ou convites
- Ao verificar um usuário anônimo
- Configuração no PC: Você pode se comunicar fora dos serviços do XBOX por voz e texto
- Configuração no XBOX: Você pode se comunicar fora do XBOX por voz e texto
- Ao verificar outro usuário dos serviços do XBOX
XblPermission::CommunicateUsingVoice
- Descrição: verifica se o jogador pode ou não se comunicar por voz com o usuário de destino. Será false se o jogador tiver silenciado o usuário de destino.
- Requisito: XR-015 - Managing Player Communication
- Ao verificar outro usuário dos serviços do XBOX
- Configuração no PC: Outras pessoas podem se comunicar por voz, texto ou convites
- Configuração no XBOX: Outras pessoas podem se comunicar por voz, texto ou convites
- Ao verificar um usuário anônimo
- Configuração no PC: Você pode se comunicar fora dos serviços do XBOX por voz e texto
- Configuração no XBOX: Você pode se comunicar fora do XBOX por voz e texto
- Ao verificar outro usuário dos serviços do XBOX
Testando os privilégios fornecidos por assinaturas
Você pode criar contas de teste com uma assinatura XBOX Game Pass Essential usando o Partner Center. Use essas contas para testar sua lógica de privilégios para os privilégios oferecidos por meio de uma assinatura XBOX Game Pass Essential. Você pode comprar outras assinaturas usando sua conta de teste em um cliente de desenvolvimento.A assinatura precisa estar publicada em uma área restrita de desenvolvimento em que sua conta ou seu dispositivo esteja autorizado, e a conta no cliente de desenvolvimento precisa estar ativa na mesma área restrita.
Testando os privilégios fornecidos pelo jogo em execução
Se quiser configurar um jogo para emitir privilégios automaticamente quando os jogadores estiverem no jogo, entre em contato com seu gerente de conta da Microsoft. Testar esse cenário exige configurar seu jogo para a autenticação dos serviços do XBOX e executá-lo com jogadores conectados.Testando os privilégios removidos pelo controle parental
Para testar sua lógica de privilégios com privilégios que podem ser removidos por controles parentais (comoXPRIVILEGE_COMMUNICATIONS), configure contas familiares no dispositivo cliente.
Pais ou responsáveis podem usar o dispositivo para restringir os privilégios das crianças da família.
Também é possível que um jogador restrinja os privilégios da própria conta.
Recomendamos usar esse método para testar cenários que exigem que os privilégios de um usuário sejam restritos.
No momento, o Partner Center não oferece uma maneira de criar famílias de contas de teste.
IDs de privilégio a verificar
Seu título precisa verificar os IDs de privilégio a seguir. Para obter mais informações, consulte XR-045: XBOX network and Account Privileges.
Para obter mais informações sobre os privilégios disponíveis, consulte XUserPrivilege.
Lógica de cálculo dos privilégios
Os privilégios são calculados de forma independente para cada jogador conectado simultaneamente a um console ou outro dispositivo. Os privilégios são adicionados a partir dos direitos efetivos do usuário, do dispositivo, do título em execução no momento e da plataforma. Em seguida, os privilégios são removidos de cada jogador com base nos controles parentais, no status de políticas e aplicação de medidas dos serviços do XBOX e no status de convidado de cada usuário. Os direitos efetivos podem resultar de assinaturas compradas pelo usuário, compradas por outros usuários conectados ao mesmo tempo ou de assinaturas associadas diretamente a um dispositivo. Os direitos efetivos também podem resultar de ofertas promocionais, como eventos de “Fim de semana de multiplayer gratuito”.Direitos de privilégio resultantes do tipo de dispositivo
Determinados tipos de dispositivos (como consoles da família XBOX One e consoles XBOX Series, Windows PC ou dispositivos móveis) concedem automaticamente um conjunto de privilégios a qualquer jogador que se conecte aos serviços do XBOX a partir da plataforma.Direitos de privilégio efetivos resultantes de assinaturas
Os produtos de assinatura podem fornecer um conjunto de privilégios aos usuários aplicáveis. Os cenários a seguir são formas pelas quais um jogador recebe efetivamente privilégios baseados em assinatura.- O jogador comprou o produto de assinatura.
- Outro jogador ativo no mesmo dispositivo comprou o produto de assinatura.
- O produto de assinatura está associado ao dispositivo que o jogador está usando no momento.
Direitos promocionais
Os direitos promocionais adicionam privilégios por um período limitado aos usuários que atendem a determinados critérios dinâmicos. Por exemplo, uma promoção pode oferecer o privilégio de multiplayer a determinados usuários durante um fim de semana. Promoções históricas, como um “Fim de semana gratuito do XBOX Game Pass Essential”, seguem o modelo de direitos promocionais.Seus serviços e títulos não precisam estar diretamente cientes de promoções como essas.
Privilégios removidos de contas de convidado patrocinado
Os convidados patrocinados são contas de convidado conectadas aos serviços do XBOX. Os convidados patrocinados só existem na presença de pelo menos um outro jogador ativo no dispositivo cliente, como em um jogo multiplayer em tela dividida com apenas um jogador conectado. Essas contas são usuários autenticados e recebem um token como qualquer outro usuário autenticado. Os convidados patrocinados têm privilégios, mas alguns privilégios são retidos para jogadores convidados, independentemente dos direitos efetivos do convidado patrocinado ou do jogo em execução no momento. Para verificar os privilégios de convidados patrocinados, chameXUserCheckPrivilege. Isso não tenta a resolução.
Você não precisa exibir uma interface de resolução nem chamar XUserResolvePrivilegeWithUiAsync, porque os convidados patrocinados não podem ser “resolvidos”. Diferentemente das contas ativas do XBOX, os convidados patrocinados não têm como fazer compras, sofrer ações de aplicação de medidas nem ter um conjunto exclusivo de privilégios ou restrições.
Se um jogador não estiver conectado no momento (como no caso de um “convidado puro”), nenhum token será emitido para o usuário.
Isso significa que nenhum privilégio efetivo é calculado para nenhum jogador no dispositivo.
O XR-045 exige que seu título verifique o privilégio 220 usando XPRIVILEGE_SOCIAL_NETWORK_SHARING ou XUserPrivilege::SocialNetworkSharing. Esse é um dos privilégios removidos dos convidados.
Segurança online e aplicação de medidas pela Microsoft
Os moderadores de políticas e aplicação de medidas dos serviços do XBOX podem remover privilégios de usuários ou dispositivos abusivos.Controles parentais
Os pais podem remover privilégios das contas de criança da família, independentemente da assinatura da criança ou do título em execução no momento. Isso é gerenciado pelo console XBOX ou pelo aplicativo XBOX Family Settings.Privilégios para assinantes do XBOX Game Pass Essential
As políticas de direitos de privilégio de uma determinada assinatura são dinâmicas e mudarão com o tempo. Lembre-se de que, mesmo que um assinante tenha direito a um privilégio, ele poderá perdê-lo devido a alterações nos controles parentais ou a políticas de aplicação de medidas.Os privilégios não são um reflexo preciso da assinatura atual de um usuário.
XPRIVILEGE_MULTIPLAYER_SESSIONS ou XUserPrivilege::Multiplayer. Esse é um dos privilégios a que os assinantes do XBOX Game Pass Essential têm direito.
Assinaturas de parceiros e privilégios
É possível configurar assinaturas de parceiros para fornecer um conjunto de privilégios dos serviços do XBOX. As assinaturas de parceiros só são usadas para calcular os privilégios de um jogador quando ele está conectado a jogos explicitamente associados à assinatura. Para configurar assinaturas de parceiros, entre em contato com seu gerente de conta da Microsoft. As assinaturas de parceiros podem ser testadas em áreas restritas de desenvolvimento antes de serem lançadas. Somente usuários e dispositivos autorizados a usar essas áreas restritas de desenvolvimento podem comprar essas assinaturas.Títulos free-to-play e privilégios de multiplayer
Para títulos configurados especificamente para operar em um modelo free-to-play (F2P), o privilégioXPRIVILEGE_MULTIPLAYER_SESSIONS / XUserPrivilege::Multiplayer precisa ser verificado, como de costume. No entanto, com essa configuração, os usuários terão o privilégio de multiplayer, tenham ou não uma assinatura XBOX Game Pass Essential. Esse privilégio só será negado se um jogador estiver banido/bloqueado ou tiver alguma restrição de idade. O uso deste privilégio é uma funcionalidade de título que exige a aprovação da plataforma. Trabalhe com seu gerente da Microsoft ou com o Developer Partner Manager (DPM) para habilitar essa funcionalidade no seu título.
Títulos híbridos e privilégios de multiplayer
Para títulos configurados especificamente para operar em um modelo híbrido — ou seja, títulos que contêm cenários multiplayer que exigem uma assinatura paga, mas também contêm cenários que podem ser jogados gratuitamente —, o processo de verificação de privilégios é um pouco diferente. Para o conteúdo que exige uma assinatura paga, o privilégioXPRIVILEGE_MULTIPLAYER_SESSIONS / XUserPrivilege::Multiplayer precisa ser verificado. No entanto, para cenários multiplayer gratuitos, é verificado o privilégio XPRIVILEGE_SESSIONS / XUserPrivilege::Sessions. Esse privilégio só será negado se um jogador estiver banido/bloqueado ou tiver alguma restrição de idade. O privilégio Multiplayer também será negado por esses motivos, mas, além disso, exige uma assinatura paga para ser concedido. O uso deste privilégio é uma funcionalidade de título que exige a aprovação da plataforma. Trabalhe com seu gerente da Microsoft ou com o DPM para habilitar essa funcionalidade no seu título.
