Relay
Blueprint API for function hooks, UDP networking, and actor replication. Enables mods to observe/modify calls, register game features, and build multiplayer without C++.
About this mod Author’s original text
Relay
Relay is a Blueprint API for Voices of the Void mods. It gives BP mods features
that normally require native C++:
- observe, change, or cancel Blueprint function calls;
- register shop items, keybinds, calendar events, and dreams (WIP);
- connect game instances over UDP and exchange typed messages;
- replicate mod actors and selected vanilla classes without editing them.
Relay began as a small function watcher for an older mod. It now provides
function hooks, runtime game integration, and a multiplayer transport/replication layer.
Relay calls a function hook a Watch. A Watch targets one class and function
and returns an object with bindable events. A Pre Watch can change supported
input parameters; a cancelable Watch can stop the call.
Networking is now the largest part of Relay. It provides low-latency UDP
transport, typed messages, and a replication model inspired mainly by Unreal
Engine 4.27, with ideas from Source, Doom 3, and Tribes.
Relay's goal is to let Blueprint authors create networked mods without relying
on WebSockets over TCP or locking multiplayer into one closed ecosystem. Relay
is designed to coexist with UE4SS and other Relay mods, allowing mods to
communicate, share services, and build on one another.
Relay is not a co-op mod. It is a networking backend that other mods can use
to build co-op or other multiplayer modes. Installing Relay by itself adds no
host/join flow or replication rules.
Relay README Blueprint
Public test notice
This public test is intended for mod authors. It includes example assets, but it
is not a finished multiplayer conversion of VotV.
Before testing multiplayer:
- back up every save involved;
- use the same Relay DLL, Relay.pak, gameplay mod, and rule profile on every
machine;
- keep the UE4SS log from both machines when reporting a problem.
Relay does not provide a public lobby or a ready-to-play multiplayer mode. The
release includes RelayExampleUI in cooked and editable form. Its basic
Host/Join UI and rules are an integration example, not a complete gameplay mod.
To try it, rename RelayExampleUI.pak.example to RelayExampleUI.pak inside:
%AppData%\r2modmanPlus-local\VotV\profiles\\shimloader\pak\Moddy-Relay
Hosting asks for permission the first time: press Host, allow it in the
Windows prompt, then press Host again. allow_listen=1 in relay_net.ini
does the same thing without a prompt.
Raw, uncooked assets for mod authors are in the release's editor folder and
on GitHub.
Click here to see how Relay protects network traffic
Relay still uses UDP, but Relay gameplay and voice payloads are not sent as
plain text. It uses the official libsodium library and the same security
handshake for direct, punched, and relayed connections:
- the host signs the handshake with a persistent Ed25519 identity;
- each connection gets fresh X25519 session keys. Relay encrypts and
authenticates every later datagram with XChaCha20-Poly1305, and refuses
tampered, replayed, or incorrectly tagged packets;
- a connect or friend code pins the host identity. Relay remembers identities
for later direct connections and refuses an unexpected replacement;
- an invite password uses Argon2id and challenge-bound proofs. Relay never
sends the plaintext password;
- a stateless source cookie is checked before expensive handshake work.
Per-source connection rates, per-source and host-wide pending-peer limits,
an ENet duplicate-peer cap, and handshake deadlines limit resource use before
authentication;
- packet sizes, message lengths, queues, and reliable backlogs have hard
limits. Decoders reject truncated, oversized, malformed, or trailing data
before it reaches Blueprint calls;
- encryption does not grant gameplay authority. The host identifies the peer
behind each connection, validates replicated actions, and denies remote
authority leases unless that peer proved a non-empty invite or the host
explicitly enabled allow_untrusted_leases=1;
- relay and rendezvous services do not recei
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.
Install these first, or the mod will not work: