Multiplayer for Voices of the Void. A mod that adds drop-in co-op to a single-player UE4.27 game — no original game files are modified.
| Install | Multivoid on Thunderstore — through r2modman or the Thunderstore Mod Manager, which set the loader up for you (other routes) |
| Current build | the newest .zip on the Releases page (dev prereleases; the zip name and the in-game banner carry the identity) |
| Game target | Voices of the Void Alpha 0.9.0n |
| Status | Alpha — dev prereleases published for testing; no stable release yet |
| Players | up to 4 (host + 3) |
| Platform | Windows · UE4.27 · LAN + Internet |
| Website | multivoid.dev |
| Community | Discord — chat about the project, ask questions, report bugs |
| Support | Boosty — the mod is free and always will be; this covers the master-server VPS and the tooling bill |
- LAN and Internet sessions — one host, up to three clients; direct IP or the built-in
server browser backed by the official master server (NAT traversal via signaling + TURN).
Lobbies advertise
game + build; a mismatched peer is refused before joining, and old cohorts keep playing together — updates are never forced. - Visible remote players — full body, IK feet, per-player skins, animated locomotion, ragdolls, floating nameplates with nickname and ping, text chat, 3D positional voice chat.
- Join at any time — a connecting client receives the host's full world state, and joining mid-event, mid-download or mid-drive is handled per system, never "don't join during X".
- Synced world — physics props (pickup, carry, throw, per-grab authority, identity that survives saves and rejoins), piles and trash collection, NPCs and creatures (host-simulated, including the kerfur prop-to-NPC cycle), world events, weather, doors, lights, switches, keypads, terminals, sleep, damage, the ATV, and world props that change over time (the host owns the clock).
- The signal-processing pipeline — dish control, ping, signal catch, downloads, decoding, the playback deck, drives and racks, the laptop, and the meadow signal database: one authority per axis, with the desk's audio feedback mirrored to observers.
- Infrastructure — ships as a standard UE4SS mod folder with zero imports from UE4SS (the reflection, hooks, transport and UI are the mod's own); an official master server for the lobby list, signaling and an informational update check.
The per-system answer to "how far along is it" is docs/STATUS.md. There is deliberately no single "N% done" figure: a co-op mod is finished system by system.
VOTV runs on Unreal Engine 4.27. The mod is one DLL in a standard UE4SS mod folder
(Mods\Multivoid\dlls\main.dll + enabled.txt). UE4SS, or r2modman's unreal-shimloader, only
loads it: the DLL imports nothing from it. The mod resolves the engine's reflection primitives
with its own signatures, drives the game's own classes and functions through reflection, and hooks
where reflection cannot see. No asset edits, no repacked paks.
Transport is GameNetworkingSockets carrying an unreliable pose stream and a reliable ordered channel for events and state. Each machine's engine re-derives animation, physics and rendering from the streamed state. The host is authoritative for world state, randomness and NPC simulation; a client acts by naming an intent that the host performs.
The code splits along one principle: src/votv-coop/src/ue_wrap/ wraps the engine and holds no
gameplay; src/votv-coop/src/coop/ holds gameplay and network and reaches the engine only through
the wrapper. docs/ARCHITECTURE.md is the one-read overview and
docs/CODE_MAP.md says where every concept lives.
The version identity is the pair (game version, build number): Multivoid 0.9.0n b<N> in the
in-game banner, in the DLL's own version resource, and in the release tag. The game target bumps
when the mod adapts to a new VOTV build; the build number is the wire-protocol revision and bumps
with every release and every wire change. The zip is named Pelmentor-Multivoid-0.9.<N>.zip because
mod managers require a numeric major.minor.patch; it is the same pair, not a third axis. Join
compatibility is byte-equality on the pair, per lobby. Source of truth:
src/votv-coop/CMakeLists.txt.
There is no stable release yet. Every build on the Releases page is a dev build, and everyone playing one is a tester. Expect bugs, and please report them on Discord; good reports get credited. What to attach: docs/INSTALL.md.
One zip, two ways to install it: through r2modman (recommended; it sets up the loader itself)
or manually into the game's UE4SS Mods\ folder. Launch, and a Multiplayer button appears in
the main menu. No port forwarding needed. Full steps, updating, troubleshooting and uninstalling:
docs/INSTALL.md.
BUILDING.md covers the local toolchain and building via GitHub Actions from a fork (no local toolchain needed). CONTRIBUTING.md is the rulebook: the rules a change must respect, how it is tested, and the shape a commit and a doc must have.
cmake -B build/votv-coop -S src/votv-coop -G "Visual Studio 16 2019" -A x64
cmake --build build/votv-coop --config Release| Path | What |
|---|---|
docs/ |
Start here — the documentation index |
src/votv-coop/ |
The mod: ue_wrap / coop / ui / harness / loader |
tools/ |
Build, deploy, the test rig, release, and the master server (coop-server-rs/) |
reference/ |
Vendored read-only references (UE4SS, MTA:SA) |
Game_0.9.0n_HOST*/ |
Local game installs. Gitignored — never committed |
The long-term arc, in order; each phase gates the next (docs/ROADMAP.md):
| # | Phase | Status |
|---|---|---|
| 1 | Functional co-op — deep sync of VOTV's systems on the mod's own substrate | in progress (current) |
| 2 | The arbiter — per-element authority moves into a separate, engine-free server process; the host's game becomes an ordinary client of it | planned |
| 3 | Sandbox mode — VOTV's sandbox rules as an explicit, portable "mode" layer | planned |
| 4 | Scripting substrate — a sandboxed runtime over the engine and co-op APIs | planned |
| 5 | Mode rules in script — the co-op and sandbox rule sets as the first two resources; the C++ core stays native | planned |
| 6 | Resource system — custom modes and plugins as one mechanism | planned |
| 7 | Dedicated server — 24/7 hosting with no live player required | planned |
| 8 | Resource infrastructure — client-side resource download, sandboxing, public server browser | planned |
Multivoid is written and directed by one person (Pelmentor) with heavy use of AI coding tools: direction, architecture, testing and every release decision are mine; much of the code was written with Claude. The full commit history is public, so you can judge the process as well as the result.
Everything else in it came from outside, as code, reports or review. If it changed the mod, it gets a row; the full ledger is docs/CREDITS.md.
| Who | Kind | Contribution | Landed |
|---|---|---|---|
| Pelmentor | code | Architecture, direction, releases — the whole mod | 831 commits |
| Claude (Anthropic) | code | Implementation, across the whole mod | 1,367 commits |
| Tarangok | code | KO respawn, live skin preview, held-prop visibility, container extraction | 5 commits |
| hediiiqq | code | Dish mirror interpolation | 1 commit |
| arigalit | code · report | ATV seat contention (#9); join-time prop-count divergence | 2 commits |
| huoyan1231 | code · report | CI and automated builds; the b125 host-log pack | 2 commits · b134 |
| archhn0madd | code | Rejoin without a relaunch — the boot poll answered from the dying world | 1 commit |
| Moddy (Discord) | review | The architecture and documentation reviews that became the UE4SS move and the repository cleanup | b122 · b143 |
| SentientYeet | review | The substrate critique that re-opened the loader decision | b143 |
| Violet (Discord) | report | ~9 FPS for a friend joining on Linux — five separate defects behind it | b134 |
| decodinatorX (#5) | report | Couldn't type sv.request at the SAT console — T kept opening chat |
b133 |
| gediao (Discord) | report | The b125 host-log pack, with huoyan1231 | b134 |
| SirWilliam (Discord) | report | Rejoining a session requires fully relaunching the game | fixed, unreleased |
Prior art this project learned from, with thanks:
| Project | What it gave Multivoid |
|---|---|
| MTA:SA (GPLv3, vendored read-only) | The architectural precedent: the parallel class hierarchy, per-element syncers, the keysync shape, host-authoritative AI. Multivoid follows MTA's shapes deliberately; no MTA code is copied. |
| RE-UE4SS (MIT) | The UE4 modding substrate this project stands on: its reflection algorithms are ported with attribution in the source, it is the everyday development tool, and it is the loader the shipping mod runs under. The mod imports nothing from it. |
| MinHook (MIT) | The x64 trampoline hooking engine (vendored). |
| VoidTogether | The first multiplayer attempt for VOTV, useful to read while designing this one. No VoidTogether code is in Multivoid; two ideas came from studying it and are cited in the source where they are used (the nickname sanitizer, the nameplate styling comparison). |
| Dear ImGui (MIT), GameNetworkingSockets (BSD), Opus (BSD), FreeType (FTL), miniaudio (MIT/public domain) | Vendored libraries: UI, transport, voice, text rendering, audio. |
This is a hook-only mod: its code contains no Voices of the Void code or assets. You must
own a legitimate copy of the game to use it. The repository is licensed under the
MIT License (see LICENSE); the full license texts of every statically linked or embedded
component ship in THIRD-PARTY-NOTICES.md, inside the release zip as
well. The optional starter-skin pak bundled with releases (scientists.pak) is a community
conversion of third-party game assets and is not covered by the MIT license. Unaffiliated with
the VOTV authors.
This project is a free labour of love. I discovered VOTV in 2023 and played it for weeks relentlessly, and I've been coming back every year since to explore its new features. Every one of those runs was a great solo experience — and eventually I wanted to share it with someone in multiplayer.
Let me be upfront: I'm not a programmer. Or rather, I am one — just with far less baggage than a project of this magnitude demands. My roles here are coordinator, director, tester, and architect.
I've always been into modding. My first mods were for GTA:SA when I was 10 or 11 — simple things like new objects on the map. Later I ran a SA-MP server with my own gamemode, and a few Minecraft servers, and along the way I picked up how it all actually works underneath. At some point I got into assembly-level mods with Cheat Engine and learned a few things there — what opcodes are, how memory scanning works, and so on — and made basic mods for some old games that way.
I never went especially deep, but that experience turned out to be useful enough when I decided to build this project with Fable-5.
Going in, I already knew about projects like SA-MP and MTA, so I had somewhere to pull principles and methodology from — and I did. Today's AI tools are genuinely something, and combining them with IDA 9 over MCP, a proper methodology, and agents analyzing Kismet bytecode gave me the dev environment and the virtual team I needed.
To anyone hating on AI or AI-produced code: if you used AI for programming and got garbage results, it means either your process is the problem or your tool is a cheap one. Get a better tool, try a better methodology, and always document your progress. Not just progress — document everything, every session. And document it properly.
Multivoid is alpha software. Back up your saves before testing. Bug reports welcome.