Depuración
Consejos para depurar tus mods durante el desarrollo.
Recarga en Caliente
La forma más rápida de probar cambios es la recarga en caliente. Después de reconstruir tu mod:
- Presiona Ctrl+Shift+R (Windows/Linux) o Cmd+Shift+R (Mac) dentro del juego
- Esto llama internamente a
api.reloadMods(), que limpia todos los callbacks del mod, componentes de UI, capas personalizadas y tipos de tren personalizados, y luego vuelve a ejecutar todos los scripts del mod
Si estás usando pnpm dev, Vite reconstruye automáticamente al guardar el archivo, así que solo
necesitas presionar el atajo de recarga dentro del juego.
La recarga en caliente limpia la mayor parte del estado del mod, pero algunas cosas persisten (como vías y estaciones ya construidas). Si tu mod entra en un estado extraño, reiniciar el juego completamente es la forma más segura de restablecerlo.
Registro en Consola
Usa console.log con un prefijo identificador para distinguir la salida de tu mod:
const TAG = '[MyMod]';
console.log(`${TAG} Inicializado`);
console.warn(`${TAG} Algo inesperado`, someData);
console.error(`${TAG} Error al cargar`, error);
Ver los Logs
Dentro del juego: Abre la consola de desarrollador con Ctrl+Shift+I (Windows/Linux) o Cmd+Option+I (Mac).
Con pnpm dev: Los logs se imprimen en tu terminal y se guardan en debug/latest.log. El
lanzador del juego habilita automáticamente el registro de Electron.
Manejo de Errores
Envuelve tu inicialización en try/catch para evitar que el juego se bloquee:
api.hooks.onMapReady((_map) => {
if (initialized) return;
initialized = true;
try {
// Código de configuración
console.log(`${TAG} Inicializado correctamente.`);
} catch (err) {
console.error(`${TAG} Error al inicializar:`, err);
api.ui.showNotification('My Mod falló al cargar. Revisa la consola.', 'error');
}
});
Para hooks que se ejecutan repetidamente, considera envolver cada callback:
api.hooks.onDayChange((day) => {
try {
// Tu lógica
} catch (err) {
console.error(`${TAG} Error en el día ${day}:`, err);
}
});
Hooks de Errores del Juego
La API proporciona hooks para capturar advertencias y errores a nivel del juego:
api.hooks.onWarning((message) => {
console.warn(`${TAG} Advertencia del juego:`, message);
});
api.hooks.onError((error) => {
console.error(`${TAG} Error del juego:`, error);
});
Verificación de Tipos
Ejecuta el verificador de tipos de TypeScript para detectar errores antes de compilar:
pnpm typecheck
Esto ejecuta tsc --noEmit y reporta cualquier error de tipos sin generar archivos de salida. Es
una buena práctica ejecutarlo antes de probar dentro del juego.
Problemas Comunes
"SubwayBuilderAPI Not Found"
El script de tu mod se ejecutó antes de que el juego inicializara la API. Esto no debería ocurrir con la estructura de la plantilla, pero si sucede:
- Asegúrate de que
mainenmanifest.jsonsea"index.js" - Asegúrate de verificar
if (!api)antes de usar la API
La UI No Aparece
- Verifica que estés registrando la UI dentro de
onMapReady— el sistema de UI no está listo antes de que el mapa cargue - Confirma que tu componente no lance errores durante el renderizado (revisa la consola para ver errores de React)
- Asegúrate de que el
idque estás usando sea único — los IDs duplicados fallan silenciosamente
Los Cambios No Aparecen Después de Recargar
- Verifica que Vite haya reconstruido correctamente (revisa la terminal en busca de errores de compilación)
- Asegúrate de que el symlink siga intacto (
pnpm dev:link) - Intenta reiniciar el juego completamente si la recarga en caliente no detecta los cambios
Errores de React Hooks ("Invalid Hook Call")
Esto generalmente significa que hay múltiples instancias de React. Asegúrate de que:
- Estés importando desde
'react'(sin instalar react como dependencia) - El alias de Vite en
vite.config.tsapunte correctamente asrc/types/react.ts - No hayas instalado accidentalmente
reactennode_modules
Error de Permisos de Symlink en Windows
En Windows, crear symlinks puede requerir privilegios de Administrador. Puedes:
- Ejecutar tu terminal como Administrador
- Activar el Modo Desarrollador en la configuración de Windows (Configuración > Para desarrolladores > Modo desarrollador)