Current version: v1.0.12

A modern multiplayer lobby and launcher for any game that does peer-to-peer netplay through a source port over UDP. Ships with built-in relay support so guests never need to port-forward.

Download Netplayseeker

🪟
Windows
Windows 10 / 11 · 64-bit
↓
🐧
Linux
Debian 12+ · Ubuntu 22.04+ · modern distros
↓
🍎
macOS
Coming soon
📦
Linux AppImage
Coming soon

Linux users may need to install libgtk-3-0 and libwebkit2gtk-4.1-0 (or the distro equivalent) and run chmod +x Netplayseeker before launching — see the Running on Linux section below. macOS is planned but not yet available.

Changelog

Latest v1.0.12 2026-10-20
v1.0.11 2026-10-19
v1.0.10 2026-10-18
v1.0.9 2026-10-18
v1.0.8 2026-10-18
v1.0.7 2026-10-17
v1.0.6 2026-10-16
v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1

Running on Linux

Install dependencies (if needed)

Only required if the app refuses to start with a missing-library error. On Debian / Ubuntu:

sudo apt update && sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0

Extract the archive

Unzip the release somewhere convenient, for example ~/Netplayseeker:

unzip Netplayseeker-linux-x64.zip -d ~/Netplayseeker

Mark it executable

The executable bit is usually preserved by zip, but if double-clicking does nothing, set it manually:

chmod +x ~/Netplayseeker/Netplayseeker

Launch

Run it from a terminal or your file manager:

~/Netplayseeker/Netplayseeker

Linux troubleshooting

"error while loading shared libraries"
A required library is missing. Install the dependencies above, then check which one is missing:

ldd ./Netplayseeker | grep "not found"

"cannot open display"
You are running on a headless server or over plain SSH. A graphical session (X11 or Wayland) is required. On a server, use X11 forwarding (ssh -X) or run under a virtual display such as xvfb-run.

Nothing happens when double-clicking
The executable bit may not be set. Run chmod +x Netplayseeker from a terminal first.

WebKit rendering issues
Update your graphics stack:

sudo apt update && sudo apt upgrade

Before You Download the Source Ports

Source Port Downloads

SDLDuke Legacy / Unmaintained
This is the final build of xDuke — the classic SDL-based Duke Nukem 3D source port known for its stable network play. It was renamed to SDLDuke by Turrican as a planned successor, but the release was never officially published. The build linked here was preserved and provided by Replica.

Note: We don't generally recommend SDLDuke unless you specifically want to use an older, unmaintained source port. If you do choose to use it, it is fully working in Netplayseeker! For the best experience, it's highly recommended to run the game in Windowed mode.

Requires DUKE3D.GRP and DUKE.RTS from your original Duke Nukem 3D: Atomic Edition copy.
Get SDLDuke ↗
NetDuke32 Patched / stability build
A modern Duke Nukem 3D source port with updated netcode. All players should download this specific patched build — it's based on NY00123's r11589 release and fixes the multiplayer crashes and netplay instability present in the stock v1.2.1 build.

Requires DUKE3D.GRP and DUKE.RTS from your original Duke Nukem 3D: Atomic Edition copy.

Two known fixes for stock-build crashes: use this patched build, or delete ebacktrace1.dll from your NetDuke32 folder (audio driver conflict). The patched build is preferred.

Upstream source: NY00123's r11589 release ↗
Get NetDuke32 (patched) ↗
ProDuke Team modes · CTF · Bots · IPv6
An extended Duke Nukem 3D source port that builds on the Duke 3D engine with team modes, multiple CTF variants, survival and last-man-standing modes, bots, and a highly configurable NetFlags system. Netplayseeker wires up all ten of its game modes, the NetFlags presets, per-player team and colour selection, spectator mode, and demo recording.

IPv6 support: ProDuke uses [::] in its netlist.txt to accept both IPv4 and IPv6 peers. SDLDuke uses 0.0.0.0 (IPv4-only). NetDuke32 doesn't use a netlist.txt file at all, so its binding is handled internally by the engine—IPv6 is suspected to work there, but I haven't fully tested it yet.

Requires DUKE3D.GRP and DUKE.RTS from your original Duke Nukem 3D: Atomic Edition copy. Only Atomic Edition game files are recommended and have been tested — other versions may work but are not verified.
NBlood Cryptic Passage + custom maps
A reverse-engineered port of Blood using EDuke32 engine technology, developed by the NBlood team. Supports the original Blood campaign, the Cryptic Passage expansion, and custom usermaps in multiplayer. Netplayseeker passes -ini CRYPTIC.INI to every player when Cryptic Passage is selected. Custom Blood maps are transferred to each player's Blood usermaps folder, and the map is then chosen from NBlood's own in-game menu after launch.

Recommended map folder: point Netplayseeker's Blood usermaps setting at a subdirectory inside your NBlood folder — for example nblood\Maps\. That way custom maps, downloaded or local, stay grouped together and never mix with the base game data.

Requires the original Blood 1.21 game files (BLOOD.RFF, GUI.RFF, SOUNDS.RFF, SURFACE.DAT, TILES*.ART, VOXEL.DAT, BLOOD.INI) — see the note above. Cryptic Passage files are also required if you want to play that expansion.
Get NBlood ↗

What It Is

Netplayseeker is a lobby client and server system for games that support peer-to-peer netplay through a source port over UDP. It finds your friends, syncs maps, generates the right command line for each player, and launches the game — so you just pick a room and play.

Currently ships with source-port support for SDLDuke, NetDuke32 (Duke Nukem 3D), NBlood (Blood — including the Cryptic Passage expansion and custom usermaps), and ProDuke (an extended Duke 3D build with team modes, CTF, bots, configurable NetFlags, and native IPv6 support), with more source ports and games on the way. If your favourite game has a source port that does peer-to-peer UDP netplay, it can be added.

Feature Overview

📖 Usage Guide

First time using Netplayseeker? Check out our comprehensive guide on networking modes, port forwarding, and troubleshooting.

🎮 Multi-Source-Port Support

Launch games through SDLDuke, NetDuke32, NBlood, or ProDuke today. Each source port receives the correct command-line arguments automatically.

🩸 Blood + Cryptic Passage + Custom Maps

NBlood players can choose Blood: Original, the Cryptic Passage expansion, or a custom .map file. Cryptic Passage loads automatically via -ini CRYPTIC.INI; custom maps transfer to every player's Blood folder, and each player picks the map from NBlood's in-game menu.

🛡️ ProDuke Team & CTF Modes

Ten game modes including Team Dukematch, Capture the Flag, 1-Flag CTF, ATK/DEF CTF, Survival, LMS, TLMS, and Terminator. Per-player team and colour pickers sync to the whole room, and NetFlags presets make configuring rules fast.

🌐 ProDuke IPv6-Ready

ProDuke uses [::] in its netlist.txt to accept both IPv4 and IPv6 peers. SDLDuke uses 0.0.0.0 (IPv4-only). NetDuke32 doesn't use a netlist file at all, so its binding is handled internally by the engine—IPv6 is suspected to work there, but I haven't fully tested it yet.

📶 Player Latency Display

See each player's ping at a glance. Lobby shows ping to the master server; rooms show estimated peer-to-peer latency — real measurements in direct mode, sum of relay round-trips in relay mode. Colour-coded badges with hover tooltips.

🌐 Direct & Relay Modes

Direct mode uses your own port-forward if you have one. Relay mode routes UDP through a public relay server so guests never need to port-forward.

📦 Automatic Usermap Sync

Host picks a .map file, and every other client downloads it automatically — no more "missing map" desyncs. Works with Duke and Blood ports, each using its own dedicated map folder.

👥 Lobby Peek

While in a room, pop back to the lobby to chat and see who's online — without leaving your match. One click returns you to the room.

🔒 Passworded Rooms

Host a private room with a password. Guests get an in-app prompt; passwords are bcrypt-hashed server-side.

💬 Lobby & Room Chat

Live lobby chat for everyone, plus a room-scoped chat so you can coordinate while the game is loading.

🔊 Sound Notifications

Subtle tones for chat messages, player joins, room creation, and game launch. Mute with one click.

⚙️ UPnP Port Forwarding

On routers that support it, Netplayseeker opens the game port automatically. Falls back to relay mode if UPnP fails.

⬆️ Auto-Update

Checks for updates on every launch. New versions download in the background and apply on restart — no manual reinstall needed. The running version is shown in the client top bar.

📸 See It In Action

Want to see what the client actually looks like before downloading? Check out our Screenshot Gallery to preview the lobby, room settings, and ProDuke options.

How It Works

Connect

Enter a nickname and click Connect. The client registers or logs in with the lobby server, then opens a WebSocket for live updates.

Create or Join a Room

The host picks a source port, connection mode (Direct or Relay), and — optionally — a usermap. Guests see the room appear in the list, click it, and are in.

Get Ready

Guests click Ready. The host's Launch Game button becomes clickable once everyone is ready.

Play

Host clicks Launch. The correct command line is generated per player, the game opens, and everyone joins the same match. When the game closes, the client returns to the lobby.

Command Lines (Reference)

Source Port Host Guest
SDLDuke /v1 /l1 /m /c1 /tx -net netlist.txt /v1 /l1 /m /c1 /tx -net netlist.txt
NetDuke32 -v1 -l1 -m -c1 -tx -net /n0:N -net /n0 <host-or-relay-ip>
NBlood -pname NAME -server N -nodudes -record -nosetup -port 23513 -pname NAME -client <host-or-relay-ip> -nodudes -nosetup -port <relay-port>

N = actual connected player count (NBlood clamps to 2–8). For the Duke ports, usermap selection adds -map <local-path> to both host and guest command lines, and each side uses its own local path — the file content is identical because the lobby server syncs it before launch. For NBlood, selecting Cryptic Passage adds -ini CRYPTIC.INI to every player's command line. NBlood custom maps are transferred to each player's Blood folder, but are not passed via -map — the map is selected from NBlood's in-game menu after launch.

Networking Modes

Works out of the box

Relay Mode

Guests need zero configuration. The relay server accepts traffic from any NAT and forwards UDP packets between host and guests. Good for the majority of home networks. Supports up to 8 players for NBlood and SDLDuke, and up to 16 for NetDuke32 and ProDuke (when using the patched NetDuke32 build).

Requires port-forward

Direct Mode

Lowest latency — traffic flows host-to-guest directly. Requires the host to have UDP 23513 open on their router, either manually or via UPnP.

ProDuke only

IPv6 Support

Netplayseeker only generates a netlist.txt for SDLDuke and ProDuke. ProDuke binds to [::] (dual-stack), while SDLDuke binds to 0.0.0.0 (IPv4-only). NetDuke32 does not use a netlist file (it connects via command-line IPs), so its IPv4/IPv6 binding is handled entirely by the engine itself—IPv6 is suspected to work for NetDuke32, but hasn't been fully tested. Peer-address discovery currently uses public-IPv4 services, so cross-internet sessions default to IPv4 until native IPv6 peer exchange lands in a future release.

Limited compatibility

VPN Notes

Commercial VPNs with symmetric NAT can break the relay for the VPN'd player. Real-internet play is unaffected. Workaround: only one side behind a VPN at a time.

Known Bugs & Limitations

Requirements

Quick Start

1

Download & extract

Windows: unzip and run Netplayseeker.exe. If SmartScreen appears, click More info → Run anyway. Linux: unzip, install the GTK 3 / WebKitGTK 4.1 dependencies (see Running on Linux), then chmod +x Netplayseeker and run it.

2

Copy your game files & open Settings

For Duke3D (including ProDuke): copy DUKE3D.GRP and DUKE.RTS from Duke Nukem 3D: Atomic Edition into the source port's folder. For NBlood: copy BLOOD.RFF, GUI.RFF, SOUNDS.RFF, SURFACE.DAT, TILES*.ART, VOXEL.DAT, and BLOOD.INI into the NBlood folder. Then point Netplayseeker at your source-port executables (duke3d_w32.exe, netduke32.exe, nblood.exe, produke.exe) and — if you use them — your Duke and Blood usermap folders. For Blood, use a subdirectory inside the NBlood folder (e.g. nblood\Maps\) to keep custom maps tidy. Make sure to use the patched NetDuke32 build .

Setting up ProDuke for the first time? Read our step-by-step ProDuke Setup Guide .

3

Connect and Play

Enter a nickname, click Connect, then create or join a room. Everyone clicks Ready, the host clicks Launch, and the game starts on every machine.