Início rápido do Game Saves
O PlayFab Game Saves permite que os jogadores continuem seu progresso de forma contínua entre dispositivos, sincronizando os dados salvos com a nuvem. Este guia de início rápido orienta você na implementação de uma solução completa de jogos salvos para as plataformas XBOX e Windows.Pré-requisitos
Antes de começar, verifique se você:- Foi integrado ao Game Saves
- Revisou os requisitos de implementação na seção de visão geral
- Concluiu os requisitos listados abaixo
- (Opcional) Clonou ou revisou o exemplo do Game Saves completo para Windows no GitHub: PlayFabGameSaveSample-Windows. O exemplo demonstra os fluxos de inicialização, sincronização, tratamento de conflitos e upload mencionados neste início rápido.
O que você aprenderá
Neste guia, você aprenderá a:- Inicializar o sistema do Game Saves
- Baixar os dados salvos existentes da nuvem
- Carregar os dados salvos locais na nuvem
- Tratar conflitos e retornos de chamada de interface do usuário
- Gerenciar cenários de dispositivo ativo
Requisitos de desenvolvimento
Requisitos de software
- Uma conta de desenvolvedor do PlayFab
- O Visual Studio 2019 ou o Visual Studio 2022 é recomendado para o desenvolvimento com o Gaming Runtime. Consulte https://learn.microsoft.com/en-us/gaming/gdk/docs/gdk-dev/get-started/overviews/sdk-and-tools#install-visual-studio para obter detalhes.
- Acesso ao Microsoft Game Development Kit (GDK) mais recente
Visão geral do fluxo do Game Saves
O sistema do Game Saves segue um padrão simples que funciona perfeitamente entre dispositivos:Configuração inicial (uma vez por sessão de jogo)
- Inicializar os serviços: configure os módulos PlayFab Core e Game Saves
- Autenticar o usuário: conecte o jogador usando a autenticação do XBOX
- Baixar os salvamentos existentes: sincronize os dados salvos de outros dispositivos com o dispositivo local
- Obter o local de salvamento: obtenha a pasta raiz de salvamento local em que seu jogo deve gravar os arquivos salvos
Durante o jogo
- Gravar os arquivos salvos: seu jogo grava os dados salvos na pasta raiz de salvamento local, como de costume
- Carregar as alterações: carregue periodicamente na nuvem os arquivos salvos modificados
- Continuar jogando: repita as etapas 5 e 6 conforme necessário durante a sessão de jogo
Fim da sessão
- Upload final: carregue as alterações finais antes que o jogador saia
- Sincronização em segundo plano: no XBOX/Windows, o sistema trata automaticamente os uploads finais quando o jogo é fechado
Principais benefícios
- Suporte offline: os jogadores podem começar a jogar mesmo sem conexão com a Internet
- Resolução automática de conflitos: a interface do usuário integrada trata os conflitos de salvamento entre dispositivos
- Uploads incrementais: somente os arquivos alterados são carregados, melhorando o desempenho
- Continuidade entre dispositivos: experiência contínua ao trocar de dispositivo
Detalhes da implementação
As seções a seguir fornecem exemplos de código detalhados para cada etapa:Etapa 1: inicializar o Game Saves
O Game Saves foi projetado para funcionar online e offline, o que o diferencia de outras APIs do PlayFab. Ele mantém uma identidade de usuário local persistente que funciona mesmo quando o dispositivo é iniciado offline.Conceitos principais
- PFLocalUserHandle: um identificador de usuário persistente que funciona offline
- PFServiceConfigHandle: a configuração do seu título do PlayFab
- Design com prioridade para o modo offline: o sistema funciona imediatamente, mesmo sem conectividade com a Internet
Pré-requisitos
Antes de inicializar o Game Saves, verifique se você:- Chamou
XGameRuntimeInitialize()para inicializar o runtime do XBOX - Chamou
XUserAddAsync()para conectar um usuário e obter umXUserHandle - Tem a ID do título do PlayFab do Game Manager
Implementação
Substitua
<titleId> pela ID real do seu título do PlayFab no Game Manager. O xuserHandle deve ser obtido de uma chamada bem-sucedida a XUserAddAsync.Plataformas alternativas
Para plataformas sem autenticação do XBOX e sem suporte offline, use outras versões dePFLocalUserCreateHandle ou PFLocalUserCreateHandleWithPersistedLocalId. Consulte a documentação específica da plataforma para obter os detalhes de implementação.
Por exemplo:
Etapa 2: sincronizar os dados salvos da nuvem
Após a inicialização, adicione o usuário ao sistema do Game Saves para sincronizar os dados salvos existentes de outros dispositivos. Esta etapa também configura a pasta raiz de salvamento local em que seu jogo lerá e gravará os arquivos salvos.Quando chamar
- Uma vez por sessão de jogo, após a autenticação do usuário
- Quando o usuário retorna ao menu principal do jogo
- Ao retomar após a suspensão/execução em segundo plano
O que esta etapa faz
- Baixa os salvamentos existentes de outros dispositivos (somente arquivos novos ou alterados)
- Preserva os carimbos de data/hora dos arquivos, quando possível, para o controle de versão adequado
- Trata os conflitos automaticamente por meio da interface do usuário integrada
- Define o dispositivo como ativo para este usuário
- Fornece o caminho da pasta de salvamento em que seu jogo deve gravar os arquivos
Limitações importantes
- Só pode ser chamado uma vez com êxito por sessão do Game Saves
- Exige a reinicialização do sistema do Game Saves para ser chamado novamente
- Dispara prompts de interface do usuário para conflitos, problemas de armazenamento e disputa de dispositivos
Implementação
Próximas etapas
Depois que esta chamada for concluída com êxito:- Seu jogo poderá ler os arquivos salvos existentes no diretório
saveFolder - Gravar novos arquivos salvos e criar subdiretórios conforme necessário
- O dispositivo passará a ser considerado “ativo” para este usuário
- Outros dispositivos mostrarão um aviso se o usuário tentar sincronizar neles
Etapa 3: carregar os dados salvos na nuvem
Depois que seu jogo gravar arquivos salvos e subpastas na pasta raiz de salvamento local, use esta etapa para carregar as alterações na nuvem. O sistema detecta e carrega automaticamente apenas os arquivos e subpastas que foram alterados desde o último upload. As exclusões de arquivos e pastas também são sincronizadas automaticamente com a nuvem.Momentos sugeridos para o upload
- Após um progresso significativo: quando o jogador chega a um checkpoint ou conclui um nível
- Antes de transições de menu: ao retornar ao menu principal ou trocar de modo de jogo
- Ao sair do jogo: antes que o jogador saia do jogo
- Salvamentos periódicos: a cada poucos minutos durante sessões de jogo longas
Opções de upload
KeepDeviceActive: o dispositivo permanece ativo, permitindo uploads adicionais mais tardeReleaseDeviceAsActive: libera o dispositivo como ativo, permitindo uma sincronização contínua em outros dispositivos
Comportamento da plataforma
- XBOX/Windows: o upload continua em segundo plano após o jogo ser fechado
- Outras plataformas (Steam Deck etc.): o upload deve ser concluído antes de sair do jogo; caso contrário, os dados salvos não chegarão à nuvem
Implementação
Quando posso gravar na pasta de salvamento novamente?
Durante o upload, o sistema lê e compacta seus arquivos salvos locais antes de carregá-los. Quando o estado de sincronização passa paraUploading (relatado por meio de PFGameSaveFilesUiProgressCallback), o sistema terminou de ler seus arquivos, e é seguro gravar na pasta de salvamento novamente. Você não precisa aguardar a conclusão do upload completo antes de retomar os salvamentos.
Se você não estiver usando o retorno de chamada de progresso, aguarde a conclusão do XAsyncBlock antes de gravar novos dados salvos.
Práticas recomendadas
- Trate as falhas adequadamente: problemas de rede não devem fazer seu jogo falhar
- Use as opções apropriadas:
- Use
KeepDeviceActivedurante o jogo para uploads adicionais - Use
ReleaseDeviceAsActivequando o jogador estiver saindo ou retornando ao menu
- Use
- Avise os usuários em plataformas que não são XBOX: informe os jogadores para não sair durante o upload
Considerações sobre a frequência
- Vários uploads por sessão têm suporte e são eficientes
- Somente os arquivos alterados são carregados, minimizando o uso de largura de banda
- Consulte a documentação de limites para conhecer as cotas e restrições específicas
Etapa 4: tratar os retornos de chamada de interface do usuário (opcional)
O Game Saves fornece uma interface do usuário integrada para as plataformas XBOX e Windows. Em outras plataformas (como o Steam Deck), seu jogo deve fornecer sua própria interface do usuário tratando os retornos de chamada. Os retornos de chamada de interface do usuário são disparados durantePFGameSaveFilesAddUserWithUiAsync e PFGameSaveFilesUploadWithUiAsync. Cada retorno de chamada pausa a operação assíncrona até que seu jogo responda; o retorno de chamada do XAsyncBlock só é disparado depois que todos os retornos de chamada de interface do usuário forem resolvidos.
Entendendo os conflitos de salvamento
Os conflitos de salvamento ocorrem quando os mesmos dados do jogo foram modificados em vários dispositivos. O Game Saves trata cada subpasta de nível raiz como uma unidade atômica para a resolução de conflitos, e os jogadores podem optar por manter os dados locais ou da nuvem quando surgirem conflitos. Para obter cenários detalhados de tratamento de conflitos e práticas recomendadas, consulte Conflitos do Game Saves.Entendendo o modo offline do Game Saves
O Game Saves funciona online e offline. Quando conectado à nuvem, todas as APIs funcionam normalmente. Quando offline ou desconectado, os salvamentos locais continuam funcionando, mas as operações na nuvem retornamE_PF_GAMESAVE_DISCONNECTED_FROM_CLOUD.
Use PFGameSaveFilesIsConnectedToCloud() para verificar o status da conexão e implemente retornos de chamada de falha de sincronização para tratar adequadamente os problemas de rede.
Para obter detalhes sobre o comportamento offline e práticas recomendadas, consulte Modo offline do Game Saves.
