# Verifique os dados do nível antes que cheguem ao loop do jogo

> Rejeite níveis de jogo malformados antes de jogar, validando a estrutura, os limites numéricos, as referências e a acessibilidade com um comportamento de fallback claro.

- URL: https://oneshotgems.ai/pt-BR/topics/game-level-data-validation
- Categoria: Para desenvolvedores de jogos
- Tipo: Guia
- Atualizado: 5 de outubro de 2026

Um arquivo de nível pode ser JSON válido e ainda descrever um estágio impossível de jogar: uma saída ausente, um ponto de spawn fora do alcance ou uma porta que não faz referência a nenhuma chave. Trate a análise e a validação do jogo como etapas separadas. A análise verifica se o texto possui gramática JSON válida; a validação verifica se a estrutura resultante satisfaz as regras que seu jogo espera. Identifique esses problemas antes que se tornem um travamento inexplicável durante o jogo ou um jogador preso em uma sala sem rota válida.

## Valide a forma e os intervalos permitidos

Defina a estrutura de um nível com campos obrigatórios, como id, width, height, tiles, spawn, exits e entities. Verifique se as dimensões são números inteiros positivos dentro dos limites aceitos pelo jogo, se o array de tiles contém exatamente width × height itens e se cada tile usa um tipo conhecido. Valide as coordenadas das entidades em relação à grade e exija identificadores únicos para portas, chaves, interruptores e objetivos. Verificar apenas se um valor é numérico não basta: rejeite explicitamente valores semelhantes a NaN e valores fora do intervalo.

Mantenha os campos opcionais separados dos obrigatórios. Defina um valor padrão para uma paleta decorativa omitida, mas não invente silenciosamente um ponto de surgimento ou uma saída ausente se isso puder mudar o quebra-cabeça. Retorne erros com um caminho como levels[2].entities[4].x para que a pessoa que edita o conteúdo encontre rapidamente o campo com problema.

## Verifique relacionamentos e invariantes jogáveis

Após a validação estrutural, verifique as regras entre campos. Cada porta trancada deve fazer referência a uma chave existente; toda chave obrigatória deve estar acessível antes de sua porta; uma saída não deve ficar dentro de um ladrilho sólido. Execute uma busca de caminho a partir do spawn e confirme se os objetivos necessários podem ser alcançados de acordo com as regras de movimento do jogo. Se inimigos ou plataformas móveis afetarem o acesso, use um validador mais específico ou um teste de jogo em vez de reivindicar um caminho de grade simples para provar que todo o nível pode ser resolvido.

## Falhe com segurança e teste o próprio validador

A MDN explica que JSON.parse lança um SyntaxError quando o JSON é inválido; por isso, trate falhas de análise separadamente das falhas de esquema. Durante o desenvolvimento, informe o arquivo exato e a regra violada. Na versão para jogadores, carregue uma alternativa conhecida ou mostre claramente que o nível está indisponível, em vez de iniciar com dados parciais. Mantenha casos de teste para campos ausentes, referências inválidas, caminhos bloqueados e um nível pequeno válido; o caso válido evita que um validador rejeite tudo.

## Perguntas

**O JSON.parse bem-sucedido é suficiente para confiar em um arquivo de nível?** Não. A análise confirma a sintaxe, não a forma, os intervalos, as referências nem as regras de solução específicas do jogo. Valide cada um desses pontos antes de passar o nível ao código do jogo.

**O jogo deve reparar níveis inválidos automaticamente?** Somente para padrões seguros e inequívocos. Se reparar um objetivo ou rota ausente alterar o projeto, rejeite o nível e use um substituto conhecido em vez de ocultar o defeito.

## Siga sua curiosidade

- [Teste o conteúdo do jogo gerado antes do lançamento](https://oneshotgems.ai/pt-BR/topics/testing-generated-game-content): Revise os níveis gerados, diálogos e descrições de itens em relação a regras de conteúdo concretas, verificações de jogabilidade e feedback consistente.
- [Escreva critérios de aceitação para um prompt de jogo](https://oneshotgems.ai/pt-BR/topics/game-prompt-acceptance-criteria): Traduza uma ideia de jogo em critérios de aceitação testáveis ​​com ações, resultados, casos de falha claros e um primeiro escopo deliberadamente pequeno.

## Leitura complementar

- [MDN JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)

---
Página canônica: https://oneshotgems.ai/pt-BR/topics/game-level-data-validation
