Exempt mounted test suites from the manifest id and version rule; mod documentation
This commit is contained in:
1 parent
42aef4919e
commit
0648a9efd0
16 files changed
+519
-10
No files matched your search
+72
@@ -0,0 +1,72 @@
|
||||
# Validator — revisar los mods sin jugar
|
||||
|
||||
El Validator lee cada mod del juego en marcha — manifiestos, archivos de datos, escenarios, parches de escenas y fuentes C# — e informa de lo que está roto o es sospechoso: una referencia a un objeto, escena o fondo que nadie declara, un comando de escenario desconocido, un parámetro incorrecto, una dependencia ausente. Se ejecuta en segundo plano cada vez que arranca un juego y escribe un informe, así que una errata se descubre antes de que un jugador llegue a la línea que la contiene.
|
||||
|
||||
Comprueba lo que se ve en los archivos. No juega la partida: un escenario que el Validator acepta todavía puede comportarse distinto de lo que el autor quería, y el código que construye id al vuelo no se puede seguir.
|
||||
|
||||
## Un error y su corrección
|
||||
|
||||
Una línea de escenario que da al jugador carne de lobo, con una errata en el id del objeto:
|
||||
|
||||
```scenario
|
||||
scene: home_kitchen
|
||||
priority: 0
|
||||
---
|
||||
action item.add id=food/wolf_meet count=1
|
||||
end
|
||||
```
|
||||
|
||||
Tras el siguiente arranque de Cthangover, el informe contiene:
|
||||
|
||||
```json
|
||||
{
|
||||
"severity": "error",
|
||||
"code": "REF_NOT_FOUND",
|
||||
"message": "item 'food/wolf_meet' is referenced but never declared",
|
||||
"mod": "cthangover_game",
|
||||
"file": "scenarios/doc_validator_demo.scenario",
|
||||
"line": 4,
|
||||
"suggestion": "declare item 'food/wolf_meet' or fix the reference",
|
||||
"related": null
|
||||
}
|
||||
```
|
||||
|
||||
El mod, el archivo y la línea señalan el error. Con `food/wolf_meat` el problema desaparece y el contador de errores del resumen baja en uno (de 18 a 17 en esta pasada).
|
||||
|
||||
## Cómo se ejecuta y cómo leer el informe
|
||||
|
||||
- Arranca solo al entrar en un juego que lo incluye (Cthangover lo incluye con sus herramientas de desarrollo), cuando los mods ya están cargados, y corre en un hilo de fondo; no bloquea el juego.
|
||||
- El registro recibe una línea por pasada: `validator: started, 33 mod(s) queued`, y después los totales de errores, avisos e informaciones.
|
||||
- El informe se escribe en `user://validation/report.json` (en la carpeta de datos de usuario del juego). Contiene un resumen, los mods comprobados con sus versiones y sumas de comprobación, y la lista de incidencias.
|
||||
|
||||
Cada incidencia tiene:
|
||||
|
||||
- `severity` — `error` (algo está roto), `warning` (probablemente un fallo) o `info` (merece una mirada, por ejemplo un objeto al que nada remite);
|
||||
- `code` — el tipo de problema, por ejemplo `REF_NOT_FOUND`, `JSON_PARSE_ERROR`, `SCHEMA_MISSING_FIELD`, `SCHEMA_UNKNOWN_PARAM`, `DECL_UNUSED`, `DYNAMIC_KEY`;
|
||||
- `mod`, `file`, `line` — dónde corregirlo; `suggestion` — qué hacer.
|
||||
|
||||
Las informaciones `DYNAMIC_KEY` significan que la clave se construye al ejecutarse, de modo que el Validator no puede comprobarla; no son errores.
|
||||
|
||||
## Qué se comprueba
|
||||
|
||||
Las comprobaciones corren en tres fases:
|
||||
|
||||
1. **Esquema** — `manifest.json` tiene un `id` y una `version` de texto; los archivos JSON se analizan.
|
||||
2. **Contratos** — lo que cada mod declara y remite: entidades de todos los tipos (personajes, objetos, misiones, habilidades, recetas, acciones y los tipos descritos por esquemas), comandos y acciones de escenario con sus parámetros, parches de escenas, propiedades que el código C# lee y escribe.
|
||||
3. **Reconciliación** — cada referencia tiene una declaración, `depends` cubre lo que el mod toma de otros, y se listan las declaraciones que nada usa.
|
||||
|
||||
Las acciones de escenario y sus parámetros se comprueban contra los esquemas que los mods incluyen (ver Schemas), con las mismas reglas que la paleta de comandos.
|
||||
|
||||
## Ajustes
|
||||
|
||||
En la pestaña de ajustes del mod, dentro del gestor de mods:
|
||||
|
||||
- **Enabled**, **Run on start** — apagan la pasada;
|
||||
- **Parse C#**, **Parse GDScript** (desactivado por defecto, lento), **Parse scenarios** — qué fuentes se leen;
|
||||
- **Write report**, **Report path** — dónde va `report.json`;
|
||||
- **Block mods on error** — está en los ajustes, pero en la versión actual no cambia nada: nunca se bloquean mods.
|
||||
|
||||
## Si algo sale mal
|
||||
|
||||
1. **No hay informe.** El juego se cerró antes de acabar la pasada (Cthangover tarda cerca de medio minuto) o **Write report** está desactivado.
|
||||
2. **Muchas líneas `DYNAMIC_KEY`.** Normal en código que construye claves; son informaciones.
|
||||
Reference in new issue
Block a user