Registrarse

[Aporte] Nuzlocke overlay: App para automatizar Overlays de Pokémon en OBS leyendo tu .SAV | [Contribution] Nuzlocke overlay: App to automate Pokémon

PokeJgamer

Usuario de plata
¡Hola a todos! Como creador de contenido, estaba harto de tener que pausar mis directos para actualizar a mano mi overlay en OBS cada vez que capturaba o perdía un Pokémon en un Nuzlocke.Por eso, he programado en Python esta aplicación de escritorio llamada "Team Tracker". Lo que hace es leer tu archivo de guardado (.SAV) en tiempo real y generar un overlay automático y sincronizado en tu OBS.

  • Ideal para Nuzlockes y Runs.
  • Os dejo el enlace al vídeo donde explico paso a paso cómo se instala y configura:

¡Espero que os sirva a los que hacéis directos! Cualquier feedback para futuras versiones es súper bienvenido. -> Contacto por Comentarios del Vídeo o Discord.

Github Repo: https://github.com/pokejgameryt-ship-it/nuzlocke-overlay

-----------------------------------------------------------------


Hi everyone! As a content creator, I was tired of having to pause my streams to manually update my OBS overlay every time I caught or lost a Pokémon during a Nuzlocke. That’s why I programmed a desktop app in Python called "Team Tracker." It reads your save file (.SAV) in real-time and generates an automatic, synchronized overlay for OBS.

Perfect for Nuzlockes and challenge runs.

Here is the link to the video where I explain step-by-step how to install and set it up:

I hope this helps those of you who stream! Any feedback for future versions is greatly appreciated. -> Contact me via video comments or Discord.

GitHub Repo: https://github.com/pokejgameryt-ship-it/nuzlocke-overlay
 

Adjuntos

M_Alighieri

Dirigente Total del Imperio Kaktiácero
Miembro del equipo
Redactor/a
Miembro de honor
Has realizado un aporte muy actual, además con traducción al inglés, me parece algo fantástico y muy útil para todas aquellas personas aficionadas a los Nuzlocke.

¡Gracias por el aporte!
 

PokeJgamer

Usuario de plata
Nuzlocke Overlay NUEVA VERSION v1.0.2
Tipo de instalacion
  • Windows (Instalador NSIS): NuzlockeOverlay-Setup-1.0.2.exe — Instalador grafico con asistente. Instala en C:\Program Files\Nuzlocke Overlay\. Incluye desinstalador.
  • Windows (Updater): Updater-Windows.bat — Script de actualizacion automatica. Descarga el exe + Recursos desde Google Drive.
  • macOS (Updater): Updater-macOS.sh — Script bash para macOS. Descarga app + Recursos.
  • Linux (Updater): Updater-Linux.sh — Script bash para Linux. Descarga app + Recursos.
Nuevas funciones
Seccion "Recursos / Sprites" en Configuracion

  • Boton "Descargar Sprites" — Descarga automatica desde Google Drive (~2GB, 10,018 archivos). Usa manifiesto JSON pre-generado con IDs de archivos. Descarga 5 archivos en paralelo con reintentos automaticos.
  • Boton "Abrir carpeta de Recursos" — Abre la carpeta AppData/Roaming/nuzlocke-overlay/Recursos/ en el explorador para pegar estilos manualmente.
  • Descarga automatica al iniciar — Al iniciar por primera vez sin Sprites, pregunta si quieres descargar.
Buscador de fuentes del sistema

  • Picker de fuentes con busqueda en tiempo real, preview visual y tags de categoria (serif, sans-serif, display, handwriting).
  • Detecta ~539 fuentes del sistema via registro de Windows (HKLM + HKCU).
  • Fix: PowerShell via execFileSync + script temporal (resuelve problemas de quoting en builds empaquetados).
Sistema de actualizaciones

  • Comprobacion automatica de nuevas versiones al iniciar (desde GitHub Releases).
  • Popup de notificacion con opcion "Omitir esta version" (no vuelve a aparecer).
  • Boton "Buscar actualizaciones" en Configuracion.
  • Popup de changelog al instalar nueva version con notas de la release formateadas por secciones.
Popup de changelog

  • Resumen rapido con secciones "Nuevas funciones" y "Correcciones" traducidas al idioma del usuario.
  • Formato limpio con bullet points y headers en color rojo.
Ctrl+A y Shift+Click

  • Ctrl+A selecciona todos los slots (sprites + nicknames) a la vez.
  • Shift+Click selecciona un rango de slots del mismo tipo (como el explorador de archivos).
  • Ctrl+Click permite seleccionar slots individuales de cualquier tipo.
Correcciones
NSIS Installer

  • Botones del instalador no funcionaban — init() crasheaba sin try/catch. Cada await envuelto individualmente en try/catch.
  • setupListeners() ahora se llama PRIMERO en init() antes de cualquier operacion asincrona.
Estilos no aparecian en el selector

  • El scanner tenia un umbral de 150 archivos por carpeta para detectar estilos, pero los sprites de Google Drive tienen ~50 archivos por estilo. Umbral reducido a 1.
  • Despues de descargar Sprites, el selector de estilos no se actualizaba. Ahora se envia un evento styles-refreshed al renderer para repoblar el selector.
  • Cache de estilos se invalida correctamente al refrescar.
Electron

  • Barra de menu nativa eliminada (mainWindow.setMenu(null)) — la app se ve limpio en OBS.
  • CSP corregido: anadido 'unsafe-eval' a script-src para builds empaquetados.
Logger

  • Logger.setLogDir() ahora escribe en AppData/Roaming/nuzlocke-overlay/logs/ en vez de __dirname (que fallaba con EPERM en Program Files).
  • resolveBaseDir() devuelve app.getPath('userData') cuando app.isPackaged y no hay PORTABLE_EXECUTABLE_DIR.
Sprites

  • scanSprites() ahora devuelve [] si la carpeta no existe (ENOENT fix).
  • SPRITES_ROOT resolucion multi-ubicacion: userData -> beside exe -> fallback userData.
  • Placeholder en OBS: usa pokemon.spriteUrl en vez de pokemon.speciesId.
Google Drive Download

  • Reescrito completamente. La API v3 de Google Drive requiere API key que no tenemos.
  • Solucion: scraper (scripts/scrape-gdrive.js) que genera public/recursos-manifest.json con 10,018 IDs de archivos.
  • App descarga manifiesto desde GitHub raw URL, luego archivos via https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t.
  • 5 workers en paralelo, redirect chain recursivo (301-308), reintentos automaticos (max 3).
  • fetchManifest() con logging de errores detallado (muestra los primeros 50 chars de la respuesta).
i18n

  • Fix: string corrupto en espanol noPreview (comillas rotas).
  • Anadidas keys para todas las secciones nuevas en 6 idiomas (ES, EN, FR, DE, JA, RU).
Archivos incluidos
ArchivoTipoTamano aprox.Descripcion
NuzlockeOverlay-Setup-1.0.2.exeInstalador Windows~100MBInstalador NSIS con asistente grafico
Updater-Windows.batScript~5KBDescarga exe + Recursos en Windows
Updater-macOS.shScript~5KBDescarga app + Recursos en macOS
Updater-Linux.shScript~5KBDescarga app + Recursos en Linux
Requisitos
  • Windows 10/11 (64-bit)
  • Electron 28 / Node.js runtime incluido
  • .NET 8.0 Runtime (para PKHeX, se instala automaticamente)
Enlaces
 

PokeJgamer

Usuario de plata
Nuzlocke Overlay v1.0.3
Instalador NSIS
  • Descarga automática de .NET 8.0: Si el usuario no tiene .NET 8.0 Desktop Runtime, el instalador lo descarga e instala automáticamente desde Microsoft (~60MB)
  • DLLs de PKHeX incluidas: PkHexReader.dll + PKHeX.Core.dll van dentro del instalador en resources/pkhex/
  • Icono personalizado para el instalador y desinstalador
Motor de lectura: PKHeX
  • PKHeX para TODAS las generaciones (Gen 1-9) — La misma biblioteca oficial de la comunidad Pokemon para leer todos los saves
  • Parser nativo como respaldo — Solo se usa cuando PKHeX no está disponible (sin .NET) o devuelve equipo vacío (hackroms)
  • Corrección Gen1: IDs internos de especies (Rhydon=0x01, Pikachu=0x54, Bulbasaur=0x99...) con tabla de 190 entradas
  • Corrección Gen4: Decodificación de nicknames con codificación custom de caracteres (493 entradas)
  • Corrección Gen4 PK5: Decryption con XOR key basada en checksum
  • Corrección Gen4 HGSS: Offsets correctos (GeneralSize=0xF628, StorageSize=0x12310)
  • Trimming DSV/GBA mejorado: Verifica últimos 512 bytes para footer de DeSmuME, maneja tamaños GBA (128KB/256KB) y NDS (512KB)
Detección de saves
  • Validación relajada Gen3: Sector validation sin número mágico estricto para hackroms
  • Límites de especies aumentados: Gen1: 151→255, Gen2: 251→255, Gen3: 386→1025, Gen4: 493→1025
  • UTF-16LE para Switch/BDSP: Encoding correcto para nombres de Gen8-9
Cámara virtual
  • CSP corregido: mediastream: añadido a media-src para OBS Virtual Camera
  • Logging detallado: Errores de cámara con mensajes amigables (NotAllowedError, NotFoundError, OverconstrainedError)
Detección de .NET
  • 4 rutas de búsqueda: %USERPROFILE%\.dotnet, %LOCALAPPDATA%\.dotnet, where dotnet, C:\Program Files\dotnet\dotnet.exe
  • Banner persistente: Banner rojo en la app si .NET no está detectado (i18n en 6 idiomas)
  • Diálogo de descarga: Link directo a la página de descarga de Microsoft
Fuentes del sistema
  • Selector de fuentes completamente rediseñado: Dropdown searchable con preview de cada fuente
  • Eliminado skipPattern agresivo: Ahora usa solo skipExact — todas las fuentes instaladas aparecen
Arquitectura
  • Logger estructurado: Dual output .log (humano-readable) + .jsonl (JSON Lines)
  • Metadatos de sesión: OS, .NET version, RAM, CPUs
  • Auto-upload de logs: LogUploader envía eventos a endpoint HTTP configurable
  • Limpieza automática de logs: En cada actualización de versión, logs viejos se eliminan
  • Google Apps Script receptor: scripts/log-receiver.gs almacena en Google Sheet (Events, Sessions, Errors)
  • Export ZIP de diagnósticos: Incluye logs + session-info + projects + config + settings
Seguridad
  • Servidor HTTP en 127.0.0.1: Solo accesible localmente
  • open-external validado: Solo permite URLs https://
Interfaz
  • Settings rediseñados: Secciones Configuración, Recursos, Diagnósticos
  • Links sociales con iconos SVG: Twitch, YouTube, TikTok, Discord, GitHub
  • Buscador y orden en barra lateral: Filtrar/ordenar proyectos por nombre o fecha
  • Tour interactivo: 11 pasos con spotlight (i18n en 6 idiomas)
  • Eliminar proyecto: Doble confirmación antes de borrar
  • Sistema i18n completo: 100+ claves en 6 idiomas (ES, EN, FR, DE, JA, RU)
  • Selector de idioma en primera ejecución
  • Changelog popup: Solo se muestra la primera vez por versión
  • Sistema de updates: Notificación de nueva versión + descarga del instalador desde GitHub Releases
Fix del Update Checker
  • No muestra versiones beta: Usa /releases y filtra pre-releases en vez de /releases/latest
  • Comparación semántica: 1.0.4-beta.1 no se considera superior a 1.0.3
 

PokeJgamer

Usuario de plata
Nuzlocke Overlay v1.1.0-beta.1 (BETA)
NOTA: Esta es una version BETA. Puede contener errores. Reporta cualquier problema.
Nuevas funciones
  • Modo Manual — Selecciona tu equipo manualmente sin save file
  • Busqueda de Pokemon — Busca por nombre o numero Pokedex en el selector manual
  • Opciones especiales — "Ninguno" (vacio) y "Huevo" (sprite de huevo)
  • Fakemon — Importa sprites personalizados, numeracion automatica F001-F999
  • Formas regionales — Alola, Galar, Hisui y Paldea con IDs negativos
  • Panel resizable — Arrastra el divisor entre paneles para redimensionar
  • Secciones colapsables — Click en los titulos para expandir/colapsar
  • Toggle de betas — Checkbox en Configuracion para recibir actualizaciones beta
Correcciones
  • Modo Manual arreglado — Al cambiar a manual, se ignoran las actualizaciones del file watcher
  • Preview arreglada — El overlay ahora muestra el equipo manual correcto
  • File browser arreglado — Muestra todos los archivos por defecto (3DS, NDS, GBA, etc.)
  • Overflow corregido — Los slots ya no se salen de su contenedor
  • Instalador auto-descarga .NET 8.0 si no esta instalado
 

PokeJgamer

Usuario de plata
Nuzlocke Overlay v1.1.1-beta.1
Soporte para Radical Red / Fangames
  • Parser Gen3: soporte para guardados CFRU/fangames — Detecta datos de equipo sin cifrar (los guardados CFRU usan checksum=0 y almacenan las subestructuras sin cifrado XOR) y los lee correctamente
  • Fallback al parser nativo Gen3 — Eliminada la exclusión que bloqueaba el fallback Gen3 cuando PKHeX devolvía vacío, permitiendo parsear hackroms/fangames
  • Entrada de Radical Red — Añadido al desplegable de juegos bajo Gen 3 (fangame basado en FireRed)
Correcciones de errores (desde v1.1.0)
  • Corrección de comparación de versiones — Elimina sufijos de pre-lanzamiento antes de comparar versiones (ej. '1.1.0-beta.1' vs '1.1.0')
  • Descarga de .NET en NSIS — Usa curl (Windows 10+) como método principal de descarga con NSISdl como respaldo; añadida verificación de registro HKCU
  • ZIP de registro corrupto — Corregida la importación de archiver en main.js y scripts/create-zips.js (se importaba la clase ZipArchive en lugar de la función archiver)
  • Endpoint de registro reemplazado — Eliminada la subida de registro al servidor; reemplazada por un botón "Enviar registros al desarrollador" que abre la página de issues de GitHub con información pre-rellenada
  • Resolución de sprites de formularios — Corregida en todos los estilos gráficos (SA, PKMNCS, Showdown, etc.)
https://github.com/pokejgameryt-ship-it/nuzlocke-overlay
 
Arriba