Pular para o conteúdo principal

Identidade de vinculação principal

O primeiro requisito de qualquer estratégia de progressão entre plataformas é determinar qual identidade do jogador abrangerá as plataformas de jogo. O jogador precisa conseguir entrar com essa identidade em qualquer dispositivo em que o jogo esteja disponível. Para um título first-party, geralmente é a conta Microsoft (MSA)/conta XBOX. Para muitos terceiros, provavelmente é uma identidade do publicador exposta por meio de uma implementação do OpenID Connect. Os dois requisitos para essa identidade do jogador são:
  1. Estar disponível para os jogadores em todas as plataformas nas quais eles possam jogar o jogo
  2. Ter suporte de uma chamada de login existente do PlayFab, como LoginWithXbox ou LoginWithOpenIdConnect
Além desses dois requisitos, é útil que a identidade dê suporte a algum tipo de cache baseado no dispositivo e a uma entrada silenciosa nas próximas inicializações do jogo. Isso não é um requisito obrigatório, mas pode reduzir a complexidade do fluxo de trabalho e/ou o atrito para o jogador.

Identidade nativa da plataforma

Uma identidade nativa da plataforma é o sistema de contas fornecido pela plataforma na qual o jogador está executando o jogo. Os exemplos incluem:
  • Steam: conta da Steam e tíquete de autenticação (ISteamUser::GetAuthTicketForWebApi)
  • XBOX no PC/console: XUserHandle da MSA/XBOX e token XSTS
  • PlayStation: ID online/conta da PSN
  • Nintendo: Nintendo Service Account/ID do dispositivo
Essas identidades normalmente são usadas para criar e reutilizar um PFLocalUserHandle para o jogador ativo em um determinado dispositivo (por exemplo, PFLocalUserCreateHandleWithSteamUser ou encapsulando um XUserHandle). Elas também podem ser usadas para autenticar por meio de APIs de login do PlayFab específicas do provedor (por exemplo, LoginWithSteam, LoginWithXbox), quando apropriado. Em cenários de progressão entre plataformas, as identidades nativas da plataforma são vinculadas à identidade de vinculação principal, para que o progresso e os direitos acompanhem o jogador entre plataformas. Os fluxos de trabalho recomendados neste documento usam a identidade nativa da plataforma como contexto do usuário local e a identidade de vinculação principal como âncora entre plataformas.

Opções de estratégia de vinculação

Este documento explora duas estratégias relacionadas:
  1. Todos os jogadores são obrigados a vincular sua identidade nativa da plataforma à sua identidade de vinculação principal antes de jogar.
  2. A vinculação entre a identidade nativa da plataforma e a identidade de vinculação principal é opcional, mas fortemente incentivada antes de jogar.
A primeira estratégia é mais fácil de implementar e evita decisões difíceis para os jogadores envolvendo possível perda de progresso no futuro. Ela aumenta o atrito inicial para começar o jogo e pode gerar sentimentos negativos nos casos em que os jogadores não veem valor suficiente no requisito de vinculação antecipada. Ela é especialmente inadequada para muitos jogos free-to-play e móveis, que dependem de barreiras extremamente baixas para atrair o maior número possível de jogadores. A segunda estratégia melhora a experiência inicial do jogador em troca de possíveis conflitos e decisões difíceis no futuro, além de aumentar a complexidade do código para os desenvolvedores. Os jogadores podem começar sem nenhum requisito adicional de entrada. Eles podem até começar completamente offline, se o jogo der suporte a isso. Essa flexibilidade pode criar um problema mais adiante, quando eles decidirem vincular. É possível que a identidade à qual eles se vinculam já tenha progresso em outra plataforma. Nesse caso, estabelecer o vínculo pode envolver o abandono de progresso ou uma mesclagem confusa que o jogo precisará tratar. Mesmo que os jogos escolham essa estratégia, eles são incentivados a promover a vinculação o mais cedo possível, descrever os benefícios da vinculação e alertar sobre os possíveis riscos de não vincular. Em última análise, a escolha entre essas estratégias deve ser orientada por uma perspectiva de negócios. Nenhuma é claramente superior à outra. Há evidências claras do mercado de que a transição da opção 2 para a opção 1 após o lançamento gera insatisfação nos jogadores. Isso indica a importância de fazer essa escolha corretamente desde o início e projetar em torno dela desde o começo.

Estado desejado

Independentemente da estratégia, o objetivo final é colocar todos os jogadores no mesmo estado. A identidade de vinculação principal deles deve estar vinculada à identidade nativa da plataforma em todos os dispositivos em que eles jogam. Nesse estado, o progresso fica consistentemente ligado à identidade de vinculação principal, e as identidades nativas da plataforma também podem ser usadas como uma identidade substituta eficaz da identidade principal em todas as plataformas. Em algumas plataformas, é possível que a identidade de vinculação principal seja a identidade nativa da plataforma (jogos first-party em execução em um XBOX). Nesses casos, atingir o estado desejado se torna trivial. Este documento não explora esses casos em profundidade, pois as orientações existentes de entrada e vinculação são adequadas.

LocalUser versus login

É importante diferenciar dois conceitos relacionados, mas separados, que existem no SDK do PlayFab. Uma chamada LocalUserCreate constrói um objeto de usuário local e retorna um PFLocalUserHandle sem realizar nenhuma autenticação. Ela identifica e armazena em cache o usuário por uma ID local específica da plataforma ou persistida (por exemplo, encapsulando um XUserHandle), para que você possa reutilizar o mesmo contexto local entre operações e instâncias do jogo. Essa operação é puramente local: ela não faz solicitações de rede, não obtém um token de entidade nem cria uma conta do PlayFab. Por outro lado, uma chamada de login autentica o usuário local no PlayFab e estabelece uma entidade autenticada, incluindo tokens e IDs. A chamada de login faz solicitações de rede (como /Client/LoginWithXbox) e respeita sinalizadores como createAccount; depois de bem-sucedida, o resultado é armazenado em cache para que as chamadas subsequentes possam reutilizar o estado autenticado. Em resumo, criar um usuário local configura a identidade local e o gerenciamento de identificadores necessários para o PlayFab Game Saves, enquanto o login é a etapa que entra em contato com o PlayFab para autenticar e habilitar as APIs que exigem uma entidade.

Estratégia 1: vinculação obrigatória da identidade principal

Para ilustrar essa estratégia, vamos discutir um jogo first-party do XBOX lançado na Steam. O jogo usa XBOX/MSA como sua identidade de vinculação principal. Ele exige que todos os jogadores entrem com sua conta XBOX/MSA antes de qualquer jogabilidade. Ele ainda usa um LocalUserHandle baseado na identidade da Steam, mas bloqueia o login real até que o jogador tenha criado e vinculado uma identidade XBOX. Nas próximas inicializações, ele pode prosseguir diretamente usando a identidade da Steam, pois ela foi verificada como vinculada.

Resumo de alto nível

  • O jogador deve entrar com a identidade entre plataformas (XBOX/MSA) antes de jogar.
  • Crie um jogador local a partir da conta da plataforma (Steam), mas suspenda o jogo online até que a entrada com XBOX/MSA seja concluída.
  • Após a entrada com XBOX/MSA, vincule a conta da plataforma à conta entre plataformas.
  • Atualize o perfil local da plataforma para que ele fique conectado à conta entre plataformas.
  • As próximas inicializações são contínuas: o jogador pode ir direto para o jogo porque o vínculo está estabelecido.

Passo a passo detalhado

Criar um identificador de usuário local da Steam
  • Chame PFLocalUserCreateHandleWithSteamUser(serviceConfigHandle, customContext, outLocalUserHandle).
  • Resultado: PFLocalUserHandle; ainda sem autenticação.
Tentar ficar online
  • Chame PFLocalUserLoginAsync(localUserHandle, /*createAccount*/ false, async).
  • Na conclusão, se PFLocalUserLoginGetResult falhar com E_PF_ACCOUNT_NOT_FOUND, dispare a entrada com o XBOX para inicializar a conta.
  • Se PFLocalUserLoginGetResult tiver êxito, já temos uma conta no estado desejado e ela está online. Fluxo de trabalho concluído.
Se o seu título exigir que a identidade entre plataformas permaneça vinculada ao usuário atual (por exemplo, o jogo exige a entrada com o XBOX e espera que o vínculo XBOX da entidade corresponda à conta XBOX conectada no momento), um login bem-sucedido na plataforma por si só não é suficiente. Chame PFAccountManagementClientGetAccountInfoAsync após o login para verificar se o vínculo entre plataformas corresponde ao usuário atual. Se não corresponder, a entidade pode estar ligada a uma identidade entre plataformas desatualizada; siga as etapas Entrar via XBOX e Vincular a Steam abaixo para realinhar.
Entrar via XBOX
  • Crie PFAuthenticationLoginWithXUserRequest:
    • Defina createAccount=true para criar a conta do PlayFab, se necessário.
    • Forneça o XUserHandle do seu usuário XBOX conectado no PC.
  • Chame PFAuthenticationLoginWithXUserAsync(serviceConfigHandle, request, async).
  • Conclua com PFAuthenticationLoginWithXUserGetResultSize(...) e PFAuthenticationLoginWithXUserGetResult(...) para obter PFEntityHandle.
  • Observação: use PFAuthenticationLoginWithXbox se a variante LoginWithXUser não estiver disponível. Isso exige que você mesmo extraia o token XSTS do XUserHandle.
Vincular a Steam à conta do PlayFab autenticada (baseada no XBOX)
  • Crie uma solicitação de vínculo de cliente com o tíquete de autenticação atual da Steam (de ISteamUser::GetAuthTicketForWebApi ou equivalente na sua integração; confirme o nome exato da função no seu código).
  • Chame PFAccountManagementClientLinkSteamAccountAsync(entityHandle, linkRequest, async).
  • Observação: “LinkSteamAccount” fica em Account Management, não em Authentication.
  • Após o êxito, a identidade da Steam do jogador estará vinculada à conta do PlayFab baseada no XBOX.
Associar o usuário local da Steam a uma entidade (após a vinculação)
  • Chame PFLocalUserLoginAsync(steamLocalUserHandle, /*createAccount*/ false, async) novamente.
  • PFLocalUserLoginGetResult agora tem êxito; o PFEntityHandle resultante fica associado ao usuário local da Steam.
Operação normal daqui em diante
  • O Game Save e outras APIs online usam o PFEntityHandle autenticado.
  • As próximas inicializações do jogo podem ir direto para o jogo, pois toda a vinculação está estabelecida.
Observações
  • PFLocalUserCreateHandleWithSteamUser não faz login sozinho, mas tentar chamar PFGameSaveFilesAddUserWithUiAsync resulta em uma tentativa de login. Verifique se você passou pelo fluxo de vinculação de contas antes dessa chamada.

Tratamento de conflitos de vínculo

Dois conflitos distintos podem surgir ao vincular a Steam à entidade baseada no XBOX. Cada um exige uma solução diferente: Fluxo recomendado:
  • Após a entrada com o XBOX, chame PFAccountManagementClientGetAccountInfoAsync(xboxEntity, getInfoRequest, async) para buscar as informações da conta e inspecionar as identidades vinculadas.
  • Se a entidade já tiver uma conta da Steam diferente vinculada:
    • Avise o jogador que prosseguir removerá a antiga associação da Steam desta entidade. Obtenha o consentimento.
    • Chame PFAccountManagementClientUnlinkSteamAccountAsync(xboxEntity, unlinkRequest, async) para remover o vínculo existente da Steam.
    • Em seguida, chame PFAccountManagementClientLinkSteamAccountAsync com o tíquete atual da Steam.
  • Se a chamada de vínculo retornar E_PF_LINKED_ACCOUNT_ALREADY_CLAIMED (a conta da Steam pertence a outra entidade):
    • Avise o jogador que esta conta da Steam está associada a uma conta do PlayFab diferente e que vinculá-la aqui removerá essa associação.
    • Tente novamente com forceLink=true após o consentimento.
Isso preserva a autonomia do jogador e evita substituir vínculos sem intenção, ao mesmo tempo em que fornece um caminho claro para reconciliar as identidades.

Exemplo de fluxo em C++ (bloqueio inicial com Steam, inicialização com XBOX, vinculação da Steam, novo login com Steam):

Este exemplo usa variáveis static XAsyncBlock para simplificar o gerenciamento do tempo de vida. O código de produção deve alocar os blocos assíncronos dinamicamente (por exemplo, como parte do struct de contexto) para dar suporte a chamadas simultâneas ou reentrantes.
Observações de implementação:
  • Use E_PF_ACCOUNT_NOT_FOUND para decidir o caminho de inicialização com o XBOX; trate os outros erros separadamente.
  • Continue usando o PFLocalUserHandle da Steam; o login específico do provedor XBOX retorna um entityHandle usado apenas para vincular a Steam.
  • Após a vinculação, faça login com a Steam novamente para associar a entidade ao LocalUser.
  • Obtenha um tíquete novo da Steam para a vinculação.
  • Feche os identificadores quando não forem mais necessários (PFLocalUserCloseHandle, PFEntityCloseHandle).

Estratégia 2: vinculação opcional da identidade principal

Neste cenário, o jogo é executado na Steam e usa XBOX/MSA como a identidade de vinculação principal. Os jogadores podem começar a jogar sem entrar imediatamente com XBOX/MSA. O jogo incentiva a vinculação antecipada com benefícios e avisos claros, mas a jogabilidade inicial não é bloqueada.

Resumo de alto nível

  • Crie um jogador local usando a conta da plataforma (Steam) e tente jogar online sem criar uma nova conta.
  • Se o modo online funcionar, continue; caso contrário, ofereça uma escolha:
    • Entrar com a identidade entre plataformas (XBOX/MSA) para criar uma conta unificada, ou
    • Criar agora uma conta somente da plataforma e começar a jogar imediatamente.
  • Incentive a vinculação antecipada ao XBOX/MSA explicando os benefícios e os riscos.
  • Quando o jogador optar por vincular:
    • Se a vinculação tiver êxito diretamente, continue jogando com uma conta unificada.
    • Se a conta XBOX/MSA já tiver progresso em outro lugar, pause e pergunte qual progresso manter (reconciliação):
      • Manter o progresso do XBOX/MSA e anexar a conta atual da plataforma.
      • Manter o progresso atual da plataforma e adiar a vinculação.
  • Após a vinculação, atualize o perfil local da plataforma para que ele fique conectado à conta unificada.
  • As próximas inicializações são contínuas: o jogador pode ir direto para o jogo (supondo que a vinculação não tenha sido adiada).

Passo a passo detalhado

Criar um identificador de usuário local da Steam
  • Chame PFLocalUserCreateHandleWithSteamUser(serviceConfigHandle, customContext, outLocalUserHandle).
  • Resultado: PFLocalUserHandle; ainda sem autenticação.
Tentar ficar online (caminho silencioso da Steam)
  • Chame PFLocalUserLoginAsync(localUserHandle, /*createAccount*/ false, async).
  • Na conclusão:
    • Se PFLocalUserLoginGetResult tiver êxito, use o PFEntityHandle resultante e prossiga online.
      • Verifique se a conta baseada na Steam já está vinculada ao XBOX/MSA. Chame PFAccountManagementClientGetAccountInfoAsync(entityHandle, getInfoRequest, async) e inspecione as identidades vinculadas. Se não estiver vinculada, solicite que o jogador vincule o XBOX usando o fluxo abaixo (sem bloqueio), para que a progressão entre plataformas futura funcione perfeitamente.
    • Se PFLocalUserLoginGetResult falhar com E_PF_ACCOUNT_NOT_FOUND, o jogador permanecerá offline até que uma conta seja criada. Ofereça duas opções:
      • Criar agora uma conta do PlayFab baseada no XBOX: entrar com XBOX/MSA (por exemplo, PFAuthenticationLoginWithXUserAsync).
      • Entrar com a Steam agora e começar a jogar: chame PFLocalUserLoginAsync(localUserHandle, /*createAccount*/ true, async) para criar uma conta do PlayFab baseada na Steam associada ao identificador local; em caso de êxito, use o PFEntityHandle resultante para prosseguir online imediatamente.
    • Para outros erros, trate-os adequadamente (nova tentativa/retirada).
Solicitar a vinculação do XBOX (sem bloqueio)
  • Apresente os benefícios da vinculação (progressão entre plataformas, portabilidade dos direitos).
  • Ofereça a entrada com XBOX/MSA.
Entrar via XBOX (inicialização ou vinculação posterior com detecção de reconciliação)
  • Se o jogador estiver iniciando a vinculação do XBOX mais tarde (ele já tem um PFEntityHandle baseado na Steam da sessão atual):
    • Não crie uma nova conta baseada no XBOX.
    • Tente vincular a identidade XBOX diretamente à conta atual baseada na Steam chamando a API de vínculo apropriada (por exemplo, PFAccountManagementClientLinkXboxAccountAsync(currentSteamEntity, linkRequest, async)).
    • Se a vinculação tiver êxito, a identidade XBOX/MSA agora estará vinculada; continue a operação normal.
    • Se a vinculação falhar com um erro de vínculo/conflito preexistente (identidade XBOX já vinculada em outro lugar), entre no modo de reconciliação de contas. Execute imediatamente a entrada com XBOX/MSA com createAccount=false (por exemplo, PFAuthenticationLoginWithXUserAsync) para obter o PFEntityHandle baseado no XBOX e, em seguida, busque os metadados do perfil para dar contexto antes de perguntar ao jogador. Após o consentimento, prossiga para as decisões de vinculação.
  • Se o jogador não tiver uma conta existente para o XBOX (caminho de inicialização):
    • Primeiro, tente entrar com XBOX/MSA com createAccount=false usando PFAuthenticationLoginWithXUserAsync (ou PFAuthenticationLoginWithXboxAsync, quando LoginWithXUser não estiver disponível).
      • Se a entrada tiver êxito: a conta XBOX/MSA já tem uma conta do PlayFab e provavelmente progresso existente. Entre no modo de reconciliação de contas para escolher qual progresso manter.
      • Se a entrada falhar com E_PF_ACCOUNT_NOT_FOUND: prossiga para criar a conta do PlayFab entrando novamente com createAccount=true.
    • Conclua com PFAuthenticationLoginWithXUserGetResultSize(...) e PFAuthenticationLoginWithXUserGetResult(...) para obter PFEntityHandle.
Vincular a Steam à conta do PlayFab autenticada (baseada no XBOX)
  • Aplicável quando você acabou de criar uma nova conta do PlayFab baseada no XBOX (sem vínculos existentes da Steam).
  • Se você entrou no modo de reconciliação de contas anteriormente, as decisões de vinculação e quaisquer ações de forceLink necessárias são tratadas lá; ignore esta etapa.
  • Crie uma solicitação de vínculo de cliente com o tíquete de autenticação atual da Steam (de ISteamUser::GetAuthTicketForWebApi ou da sua integração).
  • Chame PFAccountManagementClientLinkSteamAccountAsync(entityHandle, linkRequest, async) com forceLink=false (padrão). Espera-se que isso tenha êxito para uma conta nova.
  • Se a vinculação falhar, trate isso como uma condição de erro (conflito inesperado ou falha de autenticação). Exiba um erro ao jogador e considere solicitar que ele entre novamente antes de tentar outra vez.
  • Após o êxito, a identidade da Steam do jogador estará vinculada à conta do PlayFab baseada no XBOX.
Associar o usuário local da Steam a uma entidade (após a vinculação)
  • Chame PFLocalUserLoginAsync(steamLocalUserHandle, /*createAccount*/ false, async) novamente.
  • PFLocalUserLoginGetResult agora tem êxito; o PFEntityHandle resultante fica associado ao usuário local da Steam.
Operação normal daqui em diante
  • O Game Save e outras APIs online usam o PFEntityHandle autenticado.
  • As próximas inicializações do jogo poderão ir direto para o jogo, pois toda a vinculação está estabelecida.
Observações
  • Não bloqueie a jogabilidade inicial com a entrada com XBOX/MSA; solicite cedo, mas permita que os jogadores adiem.
  • PFLocalUserCreateHandleWithSteamUser não faz login sozinho. Verifique se os fluxos de vinculação foram concluídos antes de chamar APIs que disparam o login, como PFGameSaveFilesAddUserWithUiAsync.

Reconciliação de contas (progresso existente no XBOX/MSA)

Quando um jogador entra com uma conta XBOX/MSA que já tem progresso (por exemplo, do console ou de outra plataforma), você deve evitar criar cegamente uma nova conta ou substituir os vínculos existentes. Use uma abordagem cautelosa em duas fases para detectar e reconciliar.
Texto voltado ao jogador: na documentação para desenvolvedores, usamos “reconciliação”. Na interface do usuário do jogador, prefira termos mais claros, como “Seleção de perfil de jogo”, “Escolher progresso” ou “Manter o progresso existente”, para reduzir a confusão e enfatizar que o jogador está selecionando um perfil para continuar (e não mesclando).

Fase de detecção

  • A reconciliação pode ser iniciada por dois caminhos:
    1. Conta XBOX/MSA existente detectada: tente entrar com XBOX/MSA com createAccount=false.
      • Se a entrada tiver êxito, a identidade XBOX/MSA já tem uma conta do PlayFab e provavelmente progresso existente; entre na reconciliação.
      • Se a entrada falhar com E_PF_ACCOUNT_NOT_FOUND, prossiga com a inicialização (createAccount=true). Não é necessário entrar na reconciliação.
    2. Conflito de vinculação posterior detectado: ao vincular XBOX/MSA à conta atual baseada na Steam, a vinculação falha com um erro de vínculo/conflito preexistente (identidade XBOX já vinculada a uma identidade da Steam diferente).
      • Execute imediatamente a entrada com XBOX/MSA com createAccount=false (por exemplo, PFAuthenticationLoginWithXUserAsync) para obter o PFEntityHandle baseado no XBOX.
      • Busque os metadados do perfil (por exemplo, progressão recente, slots de salvamento, carimbos de data/hora) para apresentar o contexto.
      • Entre na reconciliação para decidir qual progresso manter.

Fase de reconciliação

  • Recomende a opção direta: manter o progresso do XBOX/MSA (identidade de vinculação principal) e abandonar o progresso local da Steam. Isso preserva a âncora entre plataformas e evita mesclagens complexas.
  • Na prática, os jogadores têm três opções (os jogos podem optar por oferecer apenas 1 ou 2 delas):
    1. Manter o progresso do XBOX/MSA (recomendado): prossiga para vincular a conta atual da Steam à conta do PlayFab existente baseada no XBOX.
    2. Manter o progresso atual da Steam e cancelar a vinculação: continue com a conta baseada na Steam por enquanto; não vincule nem substitua os dados do XBOX/MSA. Ofereça a vinculação novamente na próxima vez.
    3. Manter o progresso atual da Steam e abandonar o progresso do XBOX: mude para a conta baseada na Steam e descarte intencionalmente o progresso do XBOX/MSA. Esse caminho exige uma consideração explícita do design do jogo e não deve ser tentado levianamente, especialmente se outras identidades nativas da plataforma já estiverem anexadas à conta XBOX. Este documento não aborda os detalhes de implementação desse cenário.
  • Antes de confirmar:
    • Chame PFAccountManagementClientGetAccountInfoAsync para a entidade XBOX para inspecionar os vínculos de provedores existentes e verificar se já existe um vínculo da Steam.
    • Se a entidade tiver uma conta da Steam diferente vinculada, avise o jogador que essa associação existente da Steam será removida da entidade antes que a nova possa ser adicionada. Isso exige chamar PFAccountManagementClientUnlinkSteamAccountAsync antes de vincular a conta atual da Steam. forceLink não resolve esse cenário.
    • Se a conta atual da Steam estiver vinculada a uma entidade diferente, chamar PFAccountManagementClientLinkSteamAccountAsync retornará E_PF_LINKED_ACCOUNT_ALREADY_CLAIMED. Avise que a vinculação moverá a identidade da Steam para longe da outra entidade e tente novamente com forceLink=true após o consentimento.

Ações de confirmação (com base na escolha do jogador)

  • O jogador escolhe o progresso do XBOX/MSA:
    • Garanta que a entidade da entrada com XBOX seja obtida (execute PFAuthenticationLoginWithXUserAsync com createAccount=false, se ainda não tiver sido feito durante a detecção).
    • Se a entidade XBOX já tiver uma conta da Steam diferente vinculada, chame PFAccountManagementClientUnlinkSteamAccountAsync para removê-la primeiro.
    • Vincule a Steam atual à conta baseada no XBOX. Se a chamada retornar E_PF_LINKED_ACCOUNT_ALREADY_CLAIMED (a Steam está em outra entidade), tente novamente com forceLink=true após o consentimento.
    • Faça login novamente com o usuário local da Steam (PFLocalUserLoginAsync(..., /*createAccount*/ false, ...)) para associar a entidade.
  • O jogador escolhe o progresso da Steam:
    • Se ainda não existir uma conta do PlayFab para a Steam, crie/associe via PFLocalUserLoginAsync(..., /*createAccount*/ true, ...).
    • Adie o vínculo do XBOX; permita a jogabilidade imediatamente. Ofereça a vinculação novamente na próxima vez.

Observações

  • Sempre busque e exiba contexto suficiente para embasar a decisão do jogador.
  • Registre telemetria dos resultados da reconciliação para melhorar os prompts e os padrões ao longo do tempo.

Diagrama de fluxo da Estratégia 2

O diagrama a seguir mostra a árvore de decisão completa. Todos os caminhos convergem para um único nó terminal, em que o jogador atinge um estado jogável. Diagrama de fluxo da Estratégia 2 mostrando a árvore de decisão completa, desde a criação do usuário local da Steam até os caminhos de login, vinculação de contas e reconciliação.

Confira também

Última modificação em 8 de outubro de 2026