Live, hotkey-friendly scoreboard overlay for OBS

Control scores, total wins, and a precise timer with a crisp glass UI and an auto-updating Browser Source powered by a local server.

Windows macOS Linux Qt + OBS SDK
Fly Scoreboard overlay preview

โœจ Features

๐Ÿ• Timer

Count up/down with pause & reset. State persists across sessions, overlay updates live.

๐Ÿ Scoreboard

Adjust scores & total wins, swap sides, and toggle visibility from the dock or hotkeys.

๐Ÿ–ผ๏ธ Hashed Logos

Uploads copied into overlay/ with short hashes to avoid browser caching issues.

โš™๏ธ Settings

Server health, port control, open overlay folder, and a quick hotkeys helper.

๐ŸŒ Browser Source

Auto-creates/updates an OBS Browser Source pointing at the local overlay.

โŒจ๏ธ Hotkeys

Bind +1/โˆ’1, wins, swap, and show/hide in OBS โ†’ Settings โ†’ Hotkeys.

๐Ÿš€ Getting Started

  1. Install the plugin (or build from source) and launch OBS.
  2. Open View โ†’ Docks โ†’ Fly Scoreboard.
  3. The plugin prepares overlay/ and configures a Browser Source automatically.
Windows (build quickstart)
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 ^
  -DENABLE_FRONTEND_API=ON -DENABLE_QT=ON -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF
cmake --build build --config Release
cmake --install build --config Release --prefix "E:\obs-studio"

โฌ‡๏ธ Install

Windows

  1. Download the obs-fly-scoreboard-windows.zip.
  2. Extract obs-fly-scoreboard.dll to %ProgramFiles%\obs-studio\obs-plugins\64bit\.
  3. Copy the included data/ next to OBSโ€™s data/ if present.
  4. Restart OBS.

macOS

  1. Download obs-fly-scoreboard-macos.zip.
  2. Place the plugin binary into /Library/Application Support/obs-studio/plugins/.
  3. Ensure data/ folder sits under the same plugin directory.
  4. Restart OBS.

Linux

  1. Download obs-fly-scoreboard-ubuntu.zip (or your distro build).
  2. Copy *.so to ~/.config/obs-studio/plugins/ or system plugin dir.
  3. Copy data/ under the same plugin directory.
  4. Restart OBS.

๐Ÿงช Build from source (macOS / Linux)

# macOS
brew install cmake qt@6
cmake -S . -B build -G Xcode -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(brew --prefix qt@6)"
cmake --build build --config Release

# Ubuntu (Qt5 & libobs from PPA)
sudo apt update
sudo apt install -y cmake ninja-build build-essential libobs-dev qtbase5-dev qtbase5-dev-tools
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

๐Ÿง  Usage

  • Timer: type mm:ss, choose countdown or countup, then start/pause/reset.
  • Scoreboard: adjust scores & total wins; toggle Swap and Show.
  • Teams: set Title/Subtitle; upload logos (hashed filenames avoid cache issues).
  • Apply persists to overlay/plugin.json; Refresh busts the Browser Source cache.

โŒจ๏ธ Hotkeys

Bind keys in OBS โ†’ Settings โ†’ Hotkeys under โ€œFly Scoreboard:โ€

Action Suggested Key
Home Score +1 / โˆ’1 Ctrl+Alt+H / Shift variant
Guests Score +1 / โˆ’1 Ctrl+Alt+G / Shift variant
Home Wins +1 / โˆ’1 Ctrl+Alt+1 / Shift variant
Guests Wins +1 / โˆ’1 Ctrl+Alt+2 / Shift variant
Swap Home โ†” Guests Ctrl+Alt+S
Show/Hide Scoreboard Ctrl+Alt+V

Hotkeys are stored per OBS profile; the plugin restores bindings on load.

โš™๏ธ Settings

  • Server status + port control (restart server after port change).
  • Open overlay folder shortcut.
  • Inline helper describing all hotkeys and default bindings.

๐ŸŒ Overlay

Browser Source URL:

http://127.0.0.1:<port>/overlay/index.html

State file (updated by the dock):

<config_path>/overlay/plugin.json

State format (excerpt)

{
  "time_label": "Match Time",
  "timer": { "mode": "countdown", "initial_ms": 600000, "remaining_ms": 543210, "running": true },
  "swap_sides": false,
  "show_scoreboard": true,
  "home":  { "title": "Home",  "subtitle": "Team A", "score": 3, "rounds": 1, "logo": "home-1a2b3c.png" },
  "away":  { "title": "Guests","subtitle": "Team B", "score": 2, "rounds": 0, "logo": "guest-9f8e7d.png" }
}