A small launcher (Windows and Linux) for running The Duskbloods Network Test on Eglantine-based Switch 2 emulators (Eglantine, Lichii, Eden-style builds) with the online features served by local stand-in servers, either for yourself (offline, loopback only) or for a room of friends (online rooms, new in 1.1.0: see ONLINE.md).
It gives you a window styled after the game's menus where you pick:
- the game: a
.nuppackage (Browse; opened by emulators with NUP support, such as Eglantine v30+ and Lichii) or the unpacked game folder that containsbase/exefs/main(Folder). The version is checked either way. And - the emulator (
eglantine.exe,lichii.exe,eden.exeoryuzu.exe; on Linuxeglantine,lichii,eden,yuzuor an AppImage), found automatically next to the launcher, in sibling build folders and in aLichiifolder, or chosen with Browse.
Press Start game and it starts the stand-in servers, launches the emulator with the game, and
stops the servers when the game closes. Logs are written next to the emulator's data (Open logs).
The Online tab has three modes: Just me (offline, as before), Host a room and Join a room. Everyone who types the same room password is matched together: one friend hosts, the others type the host's address and join.
The in-game match connects the emulators directly, and the server has no relay for that. Players need the same home network, a VPN such as ZeroTier (recommended), Tailscale or Radmin VPN, or router port forwards. The Online tab lists the ports.
Step-by-step guide, VPN setup and troubleshooting: ONLINE.md.
| Path | What |
|---|---|
play_duskbloods.py |
the launcher (Tk window, game/emulator discovery, process management) |
tools/npln_server/ |
local stand-in for the online login/session service (127.0.0.1; also the host's network addresses when hosting a room) |
tools/dusk_server/ |
"front door" stand-in for the game's own web API, plus the room matchmaking used by online rooms |
ONLINE.md |
how to play online with friends (VPN recommendations, ports, troubleshooting) |
assets/ |
window art and the icon, taken from the game's title screen |
build_exe.py |
builds the single-file Play Duskbloods.exe with PyInstaller |
linux/ |
play-duskbloods.sh (starts the launcher on Linux) and README-LINUX.md |
- Download
Play Duskbloods.exefrom the Releases page, put it anywhere (next to your emulator build is easiest). - Run it, pick the game (
.nupfile with Browse, or the game folder with Folder) and the emulator. - Have your own
prod.keysandtitle.keysin the emulator'skeysfolder (portable builds:user/keys; Lichii/Eden:%APPDATA%\eden\keys). The launcher tells you if they are missing. - Press Start game. To play with friends, see ONLINE.md.
On the first run the launcher creates private test certificates for your PC (in the emulator's
data folder) and seeds an empty test NAND/save. Packaged builds that already have a
user/test_data folder keep using it.
The launcher itself runs on Linux. It does not include an emulator: you need a Linux build of Eglantine (or Lichii / Eden / yuzu) that supports the Duskbloods network test. If you are not used to Linux, follow these steps in order; commands go in a terminal.
-
Install the requirements (once). Debian / Ubuntu / Mint:
sudo apt install python3 python3-venv python3-tkFedora:
sudo dnf install python3 python3-tkinter. Arch:sudo pacman -S python tk. -
Download
Play-Duskbloods-linux.tar.gzfrom the Releases page and unpack it:tar xf Play-Duskbloods-linux.tar.gz cd Play-Duskbloods-linux -
Start it:
./play-duskbloods.shThe first start needs internet for a minute: it creates a private Python environment in
~/.local/share/duskbloods-launcher/venvand installs two small libraries (grpcio,cryptography). Later starts are instant. (If you get "Permission denied", runchmod +x play-duskbloods.shonce.) -
In the window, pick the game (a
.nupfile, or the folder containingbase/exefs/main) and the emulator (it looks in the launcher folder,~/Applications,~/.local/bin,~/Downloadsand on yourPATH; use Browse for anything else), then press Start game. -
Put your own
prod.keysandtitle.keysin the emulator'skeysfolder. The launcher shows the exact path if they are missing.
Where things are on Linux:
| What | Path |
|---|---|
| Emulator data and keys | ~/.local/share/eden (or lichii, eglantine, yuzu); portable builds use <emulator folder>/user |
| Emulator config | ~/.config/eden/qt-config.ini (or the portable user/config) |
| Launcher saves and logs | <data folder>/duskbloods_test/, logs in runs/<time>/ (Open logs uses xdg-open) |
Linux troubleshooting:
- "... is not executable": run
chmod +x ./your-emulator(the launcher also tries this itself). - "Port 18443 is already in use": an earlier session is still running; close it and retry.
- The window shows no text or odd fonts: install
fonts-dejavu(sudo apt install fonts-dejavu). - No window and "Tk is missing": install the Tk package from step 1.
The Linux package is small (about 330 KB) because it only holds the launcher's scripts and images; it uses your system Python. The Windows exe is about 18 MB because it carries its own Python.
pip install pyinstaller cryptography grpcio
python build_exe.py
The exe appears in dist/. Python 3.10+ with Tk is required. On Linux there is nothing to build:
run ./linux/play-duskbloods.sh from a checkout of this repository, or use the release tarball.
- Offline (Just me), the servers bind to 127.0.0.1 only; nothing is sent to any real service, and the emulator is started in its loopback-only online mode.
- Online rooms talk only to the host's PC, never to any real service. The room password is never sent; only a hash of it is. Hosting opens the ports listed in ONLINE.md while the game runs, so only play with people you trust.
- No keys, game files, saves or certificates are in this repository or the exe. Certificates are generated on your own PC the first time you play.
- The launcher stores your selected paths and Online tab choices (mode, room password, host
address) in
launcher_settings.jsonbeside the exe. - Before each launch it resets the emulator's saved network adapter to automatic (an adapter name copied from another PC, e.g. a VPN, makes the game report "no internet connection").
You must provide your own legally obtained game and keys. This project is not affiliated with FromSoftware, Nintendo or any emulator project, and contains no copyrighted game files; the banner and icon are screenshots of the game's title screen used for identification only.
Made by sikoGD as part of an effort to get The Duskbloods Network Test running on Switch 2 emulators: the launcher here, plus the emulator-side work (rendering, performance, local servers) done alongside it.
If this saved you time and you'd like to support the work: