Compilador
El compilador de Pokémon Essentials es el proceso que convierte los archivos de texto PBS (Pokémon Backup System) en archivos de datos binarios que el juego puede leer de forma eficiente. Es una parte fundamental del flujo de trabajo de desarrollo.
¿Qué hace el compilador?
El compilador lee todos los archivos de texto de la carpeta PBS/ y los convierte en archivos .dat en la carpeta Data/. Este proceso incluye:
- Leer y parsear los archivos PBS (pokemon.txt, moves.txt, items.txt, etc.).
- Validar que todos los datos sean correctos y consistentes.
- Generar los archivos de datos binarios optimizados para el juego.
- Compilar los metadatos de los mapas.
- Verificar que las referencias entre archivos sean válidas (por ejemplo, que un movimiento referenciado en un Pokémon exista).
¿Cuándo se compila?
La compilación ocurre automáticamente en los siguientes casos:
- Al iniciar el juego en modo debug: Si los archivos PBS han sido modificados desde la última compilación, el juego detecta los cambios y recompila automáticamente.
- Al pulsar F12: Se reinicia el juego en RPG Maker XP, lo que desencadena una nueva compilación si hay cambios.
- Desde el menú de debug: Se puede forzar una compilación completa desde las herramientas de depuración.
Errores de compilación
Si hay errores en los archivos PBS, el compilador mostrará un mensaje de error indicando:
- El archivo PBS donde se encontró el error.
- La línea aproximada del error.
- Una descripción del problema.
Errores comunes y cómo solucionarlos:
| Error | Causa | Solución |
|---|---|---|
| "Unknown move" | Se referencia un movimiento que no existe en moves.txt | Verificar que el identificador del movimiento esté definido correctamente |
| "Unknown species" | Se referencia una especie que no existe en pokemon.txt | Comprobar el identificador interno de la especie |
| "Unknown item" | Se referencia un objeto que no existe en items.txt | Verificar que el objeto esté definido en items.txt |
| "Expected a number" | Se puso texto donde debería ir un número | Revisar el formato del campo afectado |
| "Bad line syntax" | La línea no sigue el formato esperado | Comprobar que la línea tenga el formato clave = valor |
Archivos de datos generados
El compilador genera los siguientes archivos en la carpeta Data/:
| Archivo | Origen (PBS) | Contenido |
|---|---|---|
species.dat | pokemon.txt | Datos de todas las especies Pokémon |
species_metrics.dat | pokemon_metrics.txt | Métricas de sprites de Pokémon |
moves.dat | moves.txt | Datos de todos los movimientos |
items.dat | items.txt | Datos de todos los objetos |
abilities.dat | abilities.txt | Datos de todas las habilidades |
types.dat | types.txt | Datos de los tipos y tabla de efectividad |
trainers.dat | trainers.txt | Datos de los entrenadores |
trainer_types.dat | trainer_types.txt | Tipos de entrenador |
encounters.dat | encounters.txt | Encuentros salvajes por mapa |
town_map.dat | town_map.txt | Datos del mapa regional |
map_metadata.dat | map_metadata.txt | Metadatos de los mapas |
Forzar recompilación
Si necesitas forzar una compilación completa (por ejemplo, después de actualizar Essentials o resolver un conflicto):
- Desde el menú de debug: Abre el menú de debug (tecla S) y busca la opción "Compilar datos" o "Compile data".
- Eliminando archivos .dat: Borra los archivos
.datde la carpetaData/y reinicia el juego en modo debug. El compilador regenerará todos los archivos. - Modificando un PBS: Haz un cambio menor en cualquier archivo PBS (como añadir y borrar un espacio) para que el compilador detecte que ha sido modificado.
# También se puede forzar la compilación desde un script:
Compiler.main
Validaciones durante la compilación
El compilador realiza diversas validaciones para asegurar la integridad de los datos:
- Referencias cruzadas: Verifica que todos los movimientos, habilidades y objetos referenciados en las especies existan.
- Formato de datos: Comprueba que cada campo tenga el tipo de dato correcto (números, textos, identificadores).
- Duplicados: Detecta identificadores internos duplicados que podrían causar conflictos.
- Campos obligatorios: Asegura que todos los campos requeridos estén presentes en cada entrada.
- Rangos válidos: Verifica que los valores numéricos estén dentro de los rangos permitidos (estadísticas base, niveles, etc.).