SoulSilver Nuzlocke stream tool

OBS party overlay setup guide

This guide walks you through running the Pokémon party overlay locally, editing your six active slots, adding HeartGold/SoulSilver sprites, and connecting everything to OBS.

Fast start

Extract the folder

Unzip pokemon-party-overlay.zip somewhere easy, like C:\StreamingTools\pokemon-party-overlay.

Start the local server

Double-click start-overlay.bat. Keep that window open while streaming.

Open the editor

Go to http://localhost:8765/editor.html, set your Pokémon, nicknames, sprite paths, and statuses, then click Save party.json directly.

Add the OBS source

In OBS, add a Browser Source pointing to http://localhost:8765/overlay.html. Recommended size: 1400 x 230.

What each file does

  • start-overlay.bat starts everything on Windows.
  • server.py serves the pages and lets the editor save directly.
  • editor.html is your control page for changing the party.
  • overlay.html is the OBS Browser Source page.
  • party.json stores the six slots.
  • sprites/ stores your local PNG or GIF sprites.

OBS settings

Add a new Browser Source and use:

URL: http://localhost:8765/overlay.html
Width: 1400
Height: 230

The overlay background is transparent, so you can place it above your game capture. If you use a different layout, resize the Browser Source to fit.

Adding sprites

The easiest local setup is to put HeartGold/SoulSilver sprites in sprites/hgss/ and use National Dex numbers as filenames.

pokemon-party-overlay/
  sprites/
    hgss/
      152.png
      155.png
      158.png
      25.png

Then use paths like this in the editor:

sprites/hgss/155.png

Good source: https://github.com/PokeAPI/sprites. The HGSS folder is:

sprites/pokemon/versions/generation-iv/heartgold-soulsilver/

Layouts

Horizontal party bar:

overlay.html

Vertical sidebar:

overlay.html?layout=vertical

2x3 grid:

overlay.html?layout=grid

Status tags

Use these status values in the editor:

alive boxed dead empty

Dead Pokémon show with grayscale styling, which is useful for Nuzlocke tracking.

If something breaks

  • If OBS is blank, confirm start-overlay.bat is still open.
  • If saving fails, make sure you started with server.py, not python -m http.server.
  • If a sprite is missing, check the path and filename spelling.
  • If port 8765 is busy, close the old server window and start again.

Example party.json slot

You normally edit this through the editor, but this is what one Pokémon slot looks like under the hood:

{
  "species": "cyndaquil",
  "nickname": "Toast",
  "sprite": "sprites/hgss/155.png",
  "status": "alive"
}