Überprüfen Sie die Form und die zulässigen Bereiche
Definieren Sie die Form eines Levels mit Pflichtfeldern wie id, width, height, tiles, spawn, exits und entities. Prüfen Sie, ob die Abmessungen positive Ganzzahlen innerhalb der vom Spiel unterstützten Grenzen sind, das Kachel-Array genau width × height Einträge enthält und jede Kachel einen bekannten Typ verwendet. Validieren Sie die Koordinaten der Entitäten anhand des Rasters und verlangen Sie eindeutige IDs für Türen, Schlüssel, Schalter und Ziele. Nur den Zahlentyp zu prüfen reicht nicht: Lehnen Sie NaN-ähnliche und außerhalb des zulässigen Bereichs liegende Werte ausdrücklich ab.
Halten Sie optionale und erforderliche Felder getrennt. Geben Sie einer ausgelassenen Dekorationspalette einen Standardwert, aber erfinden Sie keinen fehlenden Spawnpunkt oder Ausgang, wenn dies das Rätsel verändern könnte. Geben Sie Fehler mit einem Pfad wie levels[2].entities[4].x zurück, damit die für den Inhalt zuständige Person das fehlerhafte Feld schnell findet.
Überprüfen Sie Beziehungen und spielbare Invarianten
Überprüfen Sie nach der Strukturvalidierung die feldübergreifenden Regeln. Jede verschlossene Tür sollte auf einen vorhandenen Schlüssel verweisen; Jeder Pflichtschlüssel sollte vor seiner Tür erreichbar sein; Ein Ausgang sollte nicht innerhalb einer massiven Fliese liegen. Führen Sie vom Spawn aus eine Pfadsuche durch und bestätigen Sie, dass die erforderlichen Ziele gemäß den Bewegungsregeln des Spiels erreicht werden können. Wenn Feinde oder sich bewegende Plattformen den Zugang beeinträchtigen, verwenden Sie einen spezifischeren Validator oder einen Durchspieltest, anstatt zu behaupten, dass ein einfacher Rasterpfad beweist, dass das gesamte Level lösbar ist.
Führen Sie einen sicheren Ausfall durch und testen Sie den Validator selbst
MDN weist darauf hin, dass JSON.parse bei ungültigem JSON einen SyntaxError auslöst. Behandeln Sie Parsefehler daher getrennt von Schemafehlern. Geben Sie in der Entwicklung die genaue Datei und die verletzte Regel aus. Laden Sie in der Spielversion einen bekannten Ersatz oder zeigen Sie deutlich an, dass das Level nicht verfügbar ist, statt mit unvollständigen Daten zu starten. Halten Sie Testfälle für fehlende Felder, ungültige Verweise, blockierte Wege und ein kleines gültiges Level bereit; der gültige Fall verhindert, dass ein Validator alles ablehnt.
Fragen zu Datenvalidierung auf Spielebene
Reicht ein erfolgreiches JSON.parse aus, um einer Level-Datei zu vertrauen?
Nein. Das Parsen bestätigt die Syntax, nicht Ihre spielspezifischen Formen, Bereiche, Referenzen oder Lösbarkeitsregeln. Validieren Sie jedes davon, bevor Sie das Level an den Gameplay-Code übergeben.
Sollte das Spiel ungültige Level automatisch reparieren?
Nur für sichere, eindeutige Vorgaben. Wenn die Reparatur eines fehlenden Ziels oder einer fehlenden Route das Design ändert, lehnen Sie das Level ab und verwenden Sie einen bekannten Fallback, anstatt den Defekt zu verbergen.
Weiterlesen
Etwas nicht mehr aktuell? Korrektur melden