Oneshot Gems
Jogar agora

Para desenvolvedores de jogos

Migre formas salvas antigas deliberadamente

O teste de salvamento pergunta se os valores pretendidos persistem. O controle de versão responde a uma pergunta diferente: o que deve acontecer quando uma versão posterior do jogo lê dados escritos por uma versão mais antiga? Se a versão um armazenasse a melhor pontuação como um número e a versão dois armazenasse um objeto de perfil, ler a forma antiga como se fosse nova pode quebrar o menu ou descartar silenciosamente o progresso. Coloque uma versão ao lado dos dados salvos e escreva uma migração explícita para formas anteriores conhecidas.

Nesta página

Mantenha os valores em um objeto pequeno e versionado

Em vez de salvar uma pontuação simples como 240, armazene um objeto JSON como { version: 2, bestScore: 240, settings: { sound: true } }. Ao carregar, analise o texto, verifique se é um objeto e inspecione sua versão antes de usar os campos. JSON.parse pode lançar um SyntaxError para JSON inválido, portanto, lide com texto malformado com um substituto definido em vez de permitir que a inicialização pare antes que o player possa começar.

Mantenha o objeto enxuto e documente o significado de cada versão. Não considere o número da versão uma validação suficiente: um valor marcado como versão 2 ainda pode estar incompleto ou ter o tipo errado. Verifique os campos dos quais a versão atual realmente depende, como bestScore, que deve ser um número finito e não negativo, e a preferência de som, que deve ser booleana.

Escreva uma migração para cada formato antigo compatível

Uma migração da versão 1 pode converter o número antigo no novo objeto, preencher uma preferência padrão e salvar o formato da versão 2. Execute as migrações em sequência quando houver suporte a várias versões históricas: da versão 1 para a 2 e depois da 2 para a 3. Teste cada caso de teste separadamente, incluindo uma chave ausente, JSON malformado, uma versão futura desconhecida e um valor parcialmente gravado. Decida se os dados desconhecidos serão preservados, ignorados ou redefinidos e, quando necessário, exiba uma mensagem de recuperação.

Considere os limites do armazenamento do navegador

A MDN descreve localStorage como dados associados a uma origem que podem persistir entre sessões do navegador, mas sua disponibilidade e seu conteúdo não devem ser tratados como um backup de conta garantido. Não armazene ali segredos nem decisões que precisem ser confiáveis. Se o jogo não conseguir ler um salvamento, permita um novo começo definido e evite tentar novamente a mesma migração interrompida em todo início.

Perguntas sobre ⁨Versionamento de dados de jogos localStorage⁩

Devo limpar todos os salvamentos quando o formato mudar?

Somente quando essa for uma decisão explícita do produto. Se valores importantes puderem ser mapeados com segurança, uma pequena migração testada poderá preservá-los; caso contrário, defina um substituto claro e explique a redefinição.

Um campo de versão torna os dados do localStorage confiáveis?

Não. Ele identifica a forma esperada para que o jogo possa migrá-la ou rejeitá-la. Os dados ainda podem estar ausentes, malformados, desatualizados ou indisponíveis, portanto, valide antes de usá-los.

Leitura complementar

Viu alguma informação desatualizada? Informar uma correção

Continue jogando.

Jogos grátis no navegador, prontos quando você quiser. Encontre um de que goste e faça dele seu próximo favorito.

Siga sua curiosidade