|
|
|
@@ -0,0 +1,201 @@
|
|
|
|
|
# Commonwealth Online and DoxyCoSync
|
|
|
|
|
|
|
|
|
|
This document explains how **Commonwealth Online** and **DoxyCoSync** relate to each other, how they differ, and why both projects exist.
|
|
|
|
|
|
|
|
|
|
The creators of both mods are **collaborating**. We share research, compare approaches, and occasionally test ideas in each other's codebases — but we are building **two separate products** for different use cases, not two versions of the same mod.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Quick comparison
|
|
|
|
|
|
|
|
|
|
| | **DoxyCoSync** | **Commonwealth Online** |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| **Made by** | Doxy | Commonwealth Online team |
|
|
|
|
|
| **Networking model** | Peer-to-peer — one player hosts, others join | Dedicated server — everyone connects to an external relay |
|
|
|
|
|
| **Target group size** | Small friend groups (~4 players) | Larger sessions (16+ players at near-release) |
|
|
|
|
|
| **Hosting analogy** | Host a session for friends (Hamachi / VPN / LAN) | Run a server like Minecraft (`server.jar` + clients) |
|
|
|
|
|
| **Current maturity** | Playable co-op with broad gameplay sync | Functional multiplayer foundation — see other players, movement, visuals, partial interaction |
|
|
|
|
|
| **Wire protocol** | Pipe-delimited messages (`EU\|`, `QS\|`, `WB\|`, …) | JSON over TCP (`transform`, `welcome`, `disconnect`, …) |
|
|
|
|
|
| **Primary focus today** | Shared co-op gameplay (quests, workshop, inventory, …) | Player presence, server infrastructure, proxy representation, animation |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## What each project is for
|
|
|
|
|
|
|
|
|
|
### DoxyCoSync — small-group co-op
|
|
|
|
|
|
|
|
|
|
DoxyCoSync is built for **friends playing Fallout 4 together** in a small group. The typical flow is:
|
|
|
|
|
|
|
|
|
|
1. One player starts hosting in-game.
|
|
|
|
|
2. Friends join that host over the network (often via Hamachi or similar).
|
|
|
|
|
3. The host client relays sync traffic and runs some host-only game logic.
|
|
|
|
|
|
|
|
|
|
This model keeps setup simple for a handful of players and prioritization-friendly for intimate co-op sessions.
|
|
|
|
|
|
|
|
|
|
**Design stance:** peer-to-peer, small groups, about **4 players**.
|
|
|
|
|
|
|
|
|
|
### Commonwealth Online — server-based multiplayer
|
|
|
|
|
|
|
|
|
|
Commonwealth Online is built for **dedicated server multiplayer** from the ground up. The typical flow is:
|
|
|
|
|
|
|
|
|
|
1. Someone runs the Python relay server (locally or on a VPS).
|
|
|
|
|
2. Every player connects to that server — no in-game host required.
|
|
|
|
|
3. The server manages sessions, player IDs, discovery, and relay.
|
|
|
|
|
|
|
|
|
|
This model is closer to **Minecraft**: a persistent server process that many clients join, with room to grow into admin tools, LAN discovery, and larger player counts.
|
|
|
|
|
|
|
|
|
|
**Design stance:** server-based, Minecraft-style hosting, **16+ players** at near-full release.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Current status (what actually works today)
|
|
|
|
|
|
|
|
|
|
### Commonwealth Online — functional multiplayer foundation
|
|
|
|
|
|
|
|
|
|
Commonwealth Online has moved **past the research-only prototype stage**. In active testing, connected clients can:
|
|
|
|
|
|
|
|
|
|
- **See other players** as runtime proxy actors in the same cell
|
|
|
|
|
- **Watch movement** with smoothed position updates and basic locomotion animation
|
|
|
|
|
- **See appearance sync** — body morph, height, hair colours, head parts, complexion, skin tints, and facial morphs (best-effort on proxies)
|
|
|
|
|
- **See clothing and armor** via equipped apparel snapshots
|
|
|
|
|
- **See weapons** — right-hand weapon models and armed idle/locomotion when a remote player has their weapon drawn
|
|
|
|
|
- **Join and leave sessions** with server-assigned player IDs, welcome/disconnect handling, and late-join snapshot delivery
|
|
|
|
|
- **Share basic world state** — time and weather via a designated world-state host, plus optional server-admin weather/time commands
|
|
|
|
|
|
|
|
|
|
Interaction is **partial** by design right now: proxies are visual representations, not full shared game actors. Combat, inventory, quests, settlements, and VATS are not synced yet. The project is actively building outward from a working “see and recognize the other player” baseline.
|
|
|
|
|
|
|
|
|
|
### DoxyCoSync — playable co-op with deep sync
|
|
|
|
|
|
|
|
|
|
DoxyCoSync already syncs many gameplay systems for small-group co-op, including player entities, world/cell state, quests, workshop build/destroy, inventory, loot, VATS, companions, dialog, health, outfits, and more. It is aimed at **actually playing co-op**, not just seeing another player's model.
|
|
|
|
|
|
|
|
|
|
Its current networking uses **Steam GameNetworkingSockets (GNS)** with an in-game host that rebroadcasts messages. Session entry is through an ImGui overlay (“Start Hosting” / “Join Game”).
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
|
|
|
|
Both projects share one important rule: **each player still runs a full local Fallout 4 instance**. Neither project simulates the Commonwealth on a headless server. The server (or host) coordinates and relays; clients apply remote state locally.
|
|
|
|
|
|
|
|
|
|
### DoxyCoSync (peer-to-peer today)
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Client A (host) ←—— GNS listen ——→ Client B, C, …
|
|
|
|
|
│
|
|
|
|
|
└── Relays messages + runs some host-only logic
|
|
|
|
|
(NPC world scan, loot salt, companion handling, …)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Commonwealth Online (dedicated relay)
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Fallout 4 + Plugin ←—— TCP JSON ——→ Python Relay Server ←——→ Other Clients
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Commonwealth Online also exposes **UDP LAN discovery** (port `7778`) so clients can find servers on the local network without hard-coding addresses. The relay listens on TCP port `7777` by default and is designed for `maxPlayers: 16`.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## What is synced vs out of scope
|
|
|
|
|
|
|
|
|
|
| Area | DoxyCoSync | Commonwealth Online |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| Player movement | Yes | Yes |
|
|
|
|
|
| Player appearance / clothes | Yes | Yes (proxy, best-effort) |
|
|
|
|
|
| Weapons (visual / drawn state) | Yes | Yes (ranged guns, right-hand; partial) |
|
|
|
|
|
| Quest progression | Yes | Not yet |
|
|
|
|
|
| Workshop / settlements | Yes | Not yet |
|
|
|
|
|
| Inventory / loot | Yes | Not yet |
|
|
|
|
|
| VATS | Yes | Not yet |
|
|
|
|
|
| NPC / world entity sync | Yes (host-driven) | Not yet |
|
|
|
|
|
| Companions / dialog | Yes | Not yet |
|
|
|
|
|
| Dedicated server product | Experimental testing only* | Core architecture |
|
|
|
|
|
|
|
|
|
|
\* See [Note on DoxyCoSync dedicated-server docs](#note-on-doxycosync-dedicated-server-docs) below.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Protocol and tooling
|
|
|
|
|
|
|
|
|
|
The projects use **different protocols on purpose**. They are not wire-compatible and are not merging into one stack.
|
|
|
|
|
|
|
|
|
|
| | DoxyCoSync | Commonwealth Online |
|
|
|
|
|
|---|---|---|
|
|
|
|
|
| Format | Pipe strings (`EU\|`, `QS\|`, `WB\|`, …) | JSON (`type`, `playerId`, `x`, `y`, `z`, …) |
|
|
|
|
|
| Transport | GNS (P2P host/join today) | TCP relay + UDP discovery |
|
|
|
|
|
| Fake / test clients | Planned (patterns adapted from CO server tooling) | `server/fake_client.py`, dev GUI server |
|
|
|
|
|
| Admin / config | Explored in testing docs | Dev server GUI, world-state host, server profiles |
|
|
|
|
|
|
|
|
|
|
Shared **dev tooling ideas** (relay servers, fake clients, logging GUIs) cross-pollinate, but each mod keeps its own message format and plugin architecture.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Player representation
|
|
|
|
|
|
|
|
|
|
**DoxyCoSync** uses networked player entities with deep game integration — animation behavior graphs, outfit sync, quest hooks via Papyrus, and host-authoritative world scans.
|
|
|
|
|
|
|
|
|
|
**Commonwealth Online** uses **runtime proxy actors**: lightweight visual puppets spawned per remote player in the local cell. Proxies are neutralized (passive, non-combat), smoothed for movement, and driven by curated animation graph variables. They mirror appearance, equipment, and weapons so remote players are recognizable, without pretending to be full shared game actors yet.
|
|
|
|
|
|
|
|
|
|
This matches each project's goal: DoxyCoSync needs partners to feel like real co-op players in a shared story; Commonwealth Online is building the **infrastructure and presence layer** first, then expanding gameplay sync over time.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Note on DoxyCoSync dedicated-server docs
|
|
|
|
|
|
|
|
|
|
The file `DoxyCoSync/docs/dedicated-server-roadmap.md` describes an **experimental path** toward a dedicated CoSync Server — largely informed by Commonwealth Online's relay-server work. That document reflects **collaborative testing and exploration**, not DoxyCoSync's core product direction.
|
|
|
|
|
|
|
|
|
|
**DoxyCoSync's intended model remains P2P for small groups.** Commonwealth Online's intended model remains dedicated-server-first for larger sessions. The roadmap doc is useful history and research; it is not a promise that DoxyCoSync will ship as a Minecraft-style hosted product.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Why two projects?
|
|
|
|
|
|
|
|
|
|
Fallout 4 multiplayer has more than one valid answer:
|
|
|
|
|
|
|
|
|
|
- **Small co-op with friends** benefits from simple host-and-join, deep gameplay sync, and low operational overhead — DoxyCoSync.
|
|
|
|
|
- **Server-hosted sessions with many players** benefits from an external relay, discovery, session management, and scale headroom — Commonwealth Online.
|
|
|
|
|
|
|
|
|
|
Competing on the same niche would duplicate effort. Collaborating on research while targeting different scales and architectures lets both projects move faster and serve different communities.
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
Shared research Different products
|
|
|
|
|
───────────── ────────────────
|
|
|
|
|
Animation graphs → DoxyCoSync: P2P co-op, ~4 players, deep sync
|
|
|
|
|
Server relay patterns → Commonwealth Online: dedicated server, 16+, presence first
|
|
|
|
|
Dev tooling ideas
|
|
|
|
|
Playtesting feedback
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Collaboration in practice
|
|
|
|
|
|
|
|
|
|
What we share:
|
|
|
|
|
|
|
|
|
|
- Technical discoveries (animation graphs + weapon behavior, relay patterns, proxy spawning lessons)
|
|
|
|
|
- Honest playtest feedback across both codebases
|
|
|
|
|
- Occasional experimental docs or server prototypes tested in the other repo
|
|
|
|
|
|
|
|
|
|
What stays separate:
|
|
|
|
|
|
|
|
|
|
- Protocol and wire format
|
|
|
|
|
- Plugin architecture and sync module design
|
|
|
|
|
- Release targets, player counts, and hosting model
|
|
|
|
|
- Creation Kit / Papyrus content tied to each mod's gameplay scope
|
|
|
|
|
|
|
|
|
|
If you are choosing a mod: pick **DoxyCoSync** for small-group co-op with quests, workshop, and inventory today; pick **Commonwealth Online** if you want dedicated-server multiplayer with visible remote players and room to grow into larger sessions.
|
|
|
|
|
|
|
|
|
|
If you are contributing: check which repo matches the scale and architecture you care about, and respect that both projects are allies, not forks of each other.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## References
|
|
|
|
|
|
|
|
|
|
| Resource | Location |
|
|
|
|
|
|---|---|
|
|
|
|
|
| Commonwealth Online architecture | [`docs/architecture.md`](./architecture.md) |
|
|
|
|
|
| Commonwealth Online protocol | [`docs/protocol.md`](./protocol.md) |
|
|
|
|
|
| Commonwealth Online server | [`server/README.md`](../server/README.md) |
|
|
|
|
|
| DoxyCoSync docs index | `DoxyCoSync/docs/README.md` |
|
|
|
|
|
| DoxyCoSync dedicated-server roadmap (experimental) | `DoxyCoSync/docs/dedicated-server-roadmap.md` |
|
|
|
|
|
|
|
|
|
|
*Last updated: 2026-07-02*
|