Saltar al contenido principal

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.

nota

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 main en manifest.json sea "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 id que 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.ts apunte correctamente a src/types/react.ts
  • No hayas instalado accidentalmente react en node_modules

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)