Skip to content

Latest commit

 

History

History
91 lines (72 loc) · 6.62 KB

README.md

File metadata and controls

91 lines (72 loc) · 6.62 KB

Multivoid documentation

Multivoid adds co-op multiplayer to Voices of the Void, a single-player Unreal Engine 4.27 game, without modifying a single original game file. These pages describe what the mod is, what it syncs, how it works, and how to work on it. Pick a lane; nobody reads this tree top to bottom. The maintainer's working notes live outside the repository; what is here is the current state of the mod and the rules for changing it.

I just want to play it

install.md Install, update, uninstall. The single owner of that text; the README and every release only link here
../SECURITY.md What the mod does and does not protect, and how to report a vulnerability. Read the "what does not hold" part before hosting for strangers
../README.md The front page: what works today, where to get builds, who contributed
credits.md Every outside code contribution, report and review that changed the mod, and what shipped from it

I want to understand it, or help

Start here, in this order:

architecture.md The one read: the layers, who owns which state, how bytes move, how peers and entities are named, and how a join works
scope.md What is and is not replicated. This one is law: anything not listed is deliberately not synced
devs-gauntlet.md The game developers' public statement on why multiplayer mods fail, and the answer to each claim. It is the bar this project builds to
feasibility.md Whether this is possible at all, answered with measurements
roadmap.md Where it is going: the phases and where we are in them
../CONTRIBUTING.md The rules a change must respect, and the shape a commit and a doc must have

Then, if you are going to touch code:

re-workflow.md How this project reverse-engineers the game: reflection first, then a disassembler, then UE4SS as a probe. The probes do not ship; UE4SS ships only as the loader
testing.md The test rig, the launcher and its scenarios, the in-game harness, and the gates a push runs
release.md How a build becomes a release, and the gates it must pass
versioning.md The version pair two peers must match, the files a game update touches, how a broken build says so, and the port runbook
bytecode-fingerprint.md How the mod tells that a game function it depends on changed its logic: the canonical text of Blueprint bytecode and its fingerprints
votv-ui-style.md The game's own widget style, measured; binding for anything drawn inside the game's UI

Before writing any entity-sync, hook or spawn-catch code, read these three:

coop-sync-doctrine.md How a system gets synced here: foundation first, the authority table, the dispatch-seam ladder, brain parking, identity, the mandatory late-join answer, and the forbidden-crutch list
coop-dispatch-visibility.md Will my hook even fire? Visible versus invisible Blueprint dispatch, and the trap that init() is Blueprint-internal
coop-entity-expression-map.md How each entity gets identity, expression and destruction, plus the duplication matrix

I maintain this

One page per subsystem, all on the same skeleton: purpose, how it works, who owns what, the wire messages, the late-join answer, the known limits with their evidence, and the code map.

join.md Joining a game: admission, the save transfer, the connect replay, the join window, and the late-join rule every lane answers
players.md The remote player: the puppet, the pose stream, names, skins, damage, death, sleep, inventory, moderation
props.md Props: identity, the birth and death seams, holding and throwing, containers, the props that change on their own
deployables.md The tools that leave an actor behind: the grappling hook and rope, the owner's stream, the anchor handoff, the tie that lives on the host
piles.md Trash piles: the host's id across pile and clump, the client's grab as an intent, the dispenser piles
npcs-and-kerfur.md Host-owned characters, the creatures each peer owns, the killer wisp, the roaches, and the kerfur robot across its two forms
events-and-weather.md The clock, the weather, who rolls, the story events and how a client sees one fire, the event actors, the pyramid, the alarm, emails and the task
signals.md The signal workstation: occupancy, the desk, the download simulation, the catch and the dishes, the deck, drives and racks, the laptop, the database, and the upgrades
devices.md Doors, keypads, lights, the power panel, the turbine, windows and grime, the drone, the signal servers
base-computer.md The base laptop and the economy: the balance, upgrades, the laptop's tab and inbox, shop orders, the coin gun, the floppy slot
vehicles.md The ATV: a mirror that runs the vehicle's physics natively and is corrected, the two authority predicates, the condition that travels
ui.md The native screens, the F1 overlay, the HUD, and the game's notifications
send-path.md How fast each connection is paced, measured rather than configured; who may fill a send buffer, and where a held-back send waits
master-server.md The lobby list, the join brokering, the signaling relay and TURN, self-hosting
voice-and-chat.md Host-authored chat and its history, proximity voice over the same connection

And the two maps:

code-map.md Where every concept lives: one folder each, and the files in it
status.md What is synced, system by system, who owns it, and how far each one is

How to read a claim in these docs

Status and evidence are tagged, and the tags are load-bearing:

Tag Means
[V] measured, with a citation: a log line, a disassembly, a file and line
[RD] derived from reverse engineering, not directly observed running
[?] unverified: a hypothesis wearing a claim's clothes
DESIGN vs AS-BUILT what was planned vs what shipped. These drift, and the docs say when they did

A doc that says something works without naming its evidence is a bug in the doc.