- Início do título
- Verificação de conexão
- Verificação de propriedade dos dados
- Sincronizando dados com a nuvem
- Loop de jogo
- Fim da sessão
Início do título
Quando o título é iniciado, a primeira etapa é determinar o usuário para o qual o Game Saves está sendo gerenciado. Se o usuário tiver uma sessão de jogo ativa em outro dispositivo, uma caixa de diálogo do sistema solicitará que o usuário troque de dispositivo. Se o usuário trocar, o outro dispositivo sincronizará seus dados locais mais recentes do Game Saves com o novo dispositivo. Se você quiser que os dados sejam locais e vinculados ao dispositivo, poderá usar um provedor somente de máquina. Essa opção passa um identificador de usuárionull para as APIs do Game Saves.
Depois que o título seleciona o usuário, ele inicializa o Game Saves com o identificador desse usuário. Durante a inicialização, o Game Saves se conecta à rede XBOX para preparar o espaço de armazenamento do usuário.
Caixa de diálogo do sistema relevante:


Verificação de conexão
Em seguida, o título determina se pode se conectar à rede XBOX para confirmar que a sincronização com a nuvem é possível. Se o título não conseguir se conectar, o usuário terá a opção de tentar novamente ou retomar o título no modo offline. O Game Saves pode ser executado no modo offline. Caixas de diálogo do sistema relevantes:
Comportamento offline

Verificação de propriedade dos dados
Depois que a conexão é confirmada, o título determina se o dispositivo tem o direito de modificar os dados. Se tiver, ele poderá adquirir um bloqueio para o título. Para que um título obtenha e libere um bloqueio, ele precisa de acesso aos serviços XBOX. O título verifica se há outro dispositivo que mantém um bloqueio sobre os dados do usuário. Esse dispositivo ainda pode manter um bloqueio pelos seguintes motivos.- Estar desconectado da rede XBOX, o que impede o dispositivo de chamar
WebReleaseLock. - O outro dispositivo está carregando um Game Save grande e não consegue chamar
WebReleaseLock.
- Adquirir à força o bloqueio do outro dispositivo, fazendo com que o outro dispositivo perca os dados da sessão.
- Tentar adquirir o bloqueio normalmente outra vez.
- Cancelar a aquisição do bloqueio.


Sincronizando dados com a nuvem
Depois que o título adquire o bloqueio sobre os dados do usuário, ele sincroniza esses dados com a nuvem. Em seguida, o título determina se executa uma das seguintes ações:- Carregar os dados locais do Game Saves.
- Baixar os dados da nuvem e atualizar os dados locais do Game Saves.
- Não executar nenhuma ação.
- Resolver quaisquer conflitos de dados.
- Hora do salvamento local: quando este dispositivo gravou um salvamento pela última vez
- Hora do salvamento na nuvem: quando a cópia na nuvem foi atualizada pela última vez
Os quatro resultados da sincronização
Se ocorrer o download da nuvem, uma caixa de diálogo de sincronização será exibida, Sincronizando dados para …. Se o usuário cancelar o Game Saves usando essa caixa de diálogo, o título continuará no modo offline.
Estados de alteração e de salvamento
Este cenário pressupõe que o usuário está jogando em dois dispositivos, o Dispositivo A e o Dispositivo B. Local alterado O usuário fez progresso enquanto estava offline no Dispositivo A. Por exemplo, o usuário subiu para o nível 126 no Dispositivo A sem conexão com a internet. Nuvem alterada Houve progresso carregado do Dispositivo B desde a última vez que o usuário sincronizou o Dispositivo A. Por exemplo, o usuário subiu para o nível 99 no Dispositivo B e carregou os dados para a nuvem. Ambos alterados O usuário jogou offline no Dispositivo A. O usuário também jogou no Dispositivo B desde a última vez que sincronizou o Dispositivo A. Por exemplo, o Dispositivo A está no nível 126. A nuvem está no nível 99. Se houver um conflito, o sistema solicitará que o usuário o resolva por meio de uma caixa de diálogo: Qual você deseja usar?Atomicidade
O Game Saves é atômico no nível do contêiner (pasta). Se a pasta na nuvem incluir um blob que a pasta local correspondente não contém, o sistema tratará as duas pastas como separadas. Essa diferença cria um conflito.
Loop de jogo
O loop de jogo é a parte ativa da sessão de jogo. Ele começa depois que o título termina de sincronizar os dados salvos com a nuvem. Durante a sessão de jogo ativa, o título lê e grava os dados salvos localmente. Todos os dados criados ou atualizados nesse período permanecem no armazenamento local do Game Saves até que o sistema execute uma sincronização com a nuvem. O loop de jogo termina quando a sessão de jogo do usuário termina, se uma das condições a seguir for verdadeira para o console ou o PC. Uma sessão termina quando um console ou PC dispara uma alteração de estado, como suspensão, encerramento, saída ou outro evento do sistema.Sincronização periódica com a nuvem
A cada 30 minutos de jogo, o título tenta sincronizar automaticamente com a nuvem. Esse comportamento se baseia nos cenários a seguir.
Fim da sessão
Depois que a sessão de jogo termina, o título carrega os novos dados para a nuvem. O dispositivo tenta carregar os dados para a nuvem quando tem uma conexão. Depois que os dados são carregados, o bloqueio é liberado. Para ver a liberação do bloqueio na rede XBOX para fins de depuração, consulte Inspecionando o tráfego de rede do Game Saves.
Cenários de perda de conexão e de bloqueio
Os dados gravados durante a perda de conexão são armazenados no armazenamento local do Game Saves e carregados depois que a conexão é restabelecida. No entanto, se o usuário tentar usar outro dispositivo, o dispositivo atual não conseguirá liberar o bloqueio porque a conexão foi perdida. O usuário pode forçar a transferência do bloqueio para outro dispositivo. Dependendo de quando essas transferências de bloqueio ocorrem, um título pode apresentar comportamentos diferentes.Perda de conexão antes do início do título
Quando: o usuário inicia um título sem conexão.O título oferece ao usuário a opção de iniciar no modo offline porque não há conexão. Quando o dispositivo se reconecta à rede XBOX e a nuvem contém dados mais recentes, o título trata os dados locais como desatualizados. Nesse caso, o título encerra a sessão de jogo terminando o aplicativo com uma operação de suspensão. Caixa de diálogo do sistema relevante: Precisamos fechar este jogo ou aplicativo
Perda de conexão durante o loop de jogo
Quando: o usuário está em uma sessão de jogo ativa e o título ainda mantém o bloqueio. Em algum momento, a conexão é perdida. O título então permite que o jogo continue durante essa perda.
Perda de conexão antes do fim da sessão (encerramento ou suspensão)
Quando: o jogador sai do título ou o suspende enquanto o dispositivo está desconectado. O dispositivo ainda tem dados locais não sincronizados.
