Retire the Qt/C++ host; ship the Avalonia host

Delete the Qt host (src/, cmake/, CMakeLists.txt, find-qt.bat, check-setup.bat,
build.bat, deploy.bat) now that the Avalonia host in host/ covers it on the same
dotnet toolchain. Add a self-hosted host-build CI job and a host README, and
rewrite the top-level README for the C# server + Avalonia host layout.
This commit is contained in:
NomadsReach
2026-08-16 18:24:14 -04:00
parent 16c101a4bc
commit 0accc17b66
19 changed files with 89 additions and 2067 deletions
+28 -41
View File
@@ -1,55 +1,42 @@
# Commonwealth Online Server and Qt Host
# Commonwealth Online Server & Host
This repository contains the Commonwealth Online authoritative dedicated server and the Qt Host GUI.
The dedicated server and its host GUI for Commonwealth Online (Fallout 4
multiplayer). Everything now builds on one .NET 8 toolchain.
The dedicated server is C#/.NET. Valve GameNetworkingSockets remains behind the small native C++ bridge in `server/native_transport/`.
## Components
## Server
- **[`server/`](server/README.md)** — the dedicated relay server
(`CommonwealthOnline.Server`, a .NET 8 console app). Run it with
`server/start.sh` / `server/start.bat`, or `CommonwealthOnline.Server serve`.
- **[`host/`](host/README.md)** — the **Avalonia** cross-platform host GUI:
start/stop the server, edit config, watch the log, and manage players
(kick/ban). Replaces the former Qt/C++ host.
## Quick start — server
```bash
cd server
dotnet build CommonwealthOnline.Server.csproj -c Release
dotnet run --project tests/CommonwealthOnline.Server.Tests.csproj -c Release
dotnet run --project CommonwealthOnline.Server.csproj -- serve --config commonwealth-server.json --interactive
./start.sh # Linux / macOS
start.bat # Windows
```
The server owns Protocol V2 admission, server-owned player IDs, packet validation, movement validation, interest filtering, durable player state, scoped NPC authority and epochs, combat routing, world state, bans, rate limits, LAN discovery and localhost administration.
Needs the .NET 8 runtime (or the SDK for a source checkout). Allow TCP `7777`
(and optionally UDP `7778` for LAN discovery) through the firewall. `0.0.0.0`
is a bind address, not the address players join.
Transport policy remains:
## Quick start — host GUI
- `transform`, `npcState`: unreliable/sequenced under GNS
- session/control, player state, combat, world state and authority: reliable/ordered
TCP compatibility keeps newline framing inside the TCP transport only. GNS is message-oriented and uses the `COG2` snapshot sequence envelope for latest-wins snapshots.
## Native GNS bridge
`server/native_transport` stays C++ and owns only GNS listen/connection/message mechanics and endpoint lookup. C# loads the existing C ABI directly.
## Qt Host GUI
The Qt Host remains native C++. It launches the published `CommonwealthOnline.Server` process and uses the authenticated localhost admin channel for stats, clients, kicks and bans.
Build requirements on Windows:
- Visual Studio 2022 C++ tools
- CMake 3.20+
- Qt 6.4+
- .NET 8 SDK
```bat
check-setup.bat
build.bat
deploy.bat
```bash
dotnet run --project host/CommonwealthOnline.Host.csproj
```
CMake publishes the C# server self-contained and stages it under the Host GUI `server` directory. Packaged users do not need a separate .NET runtime.
## Build
## Default ports
```bash
dotnet build server/CommonwealthOnline.Server.csproj -c Release
dotnet build host/CommonwealthOnline.Host.csproj -c Release
```
- TCP 7777: gameplay compatibility
- UDP 7777: GNS gameplay when enabled
- UDP 7778: LAN discovery
- TCP 127.0.0.1:7779: authenticated admin control
See [server/README.md](server/README.md), [SETUP.md](SETUP.md), [DEVELOPMENT.md](DEVELOPMENT.md), and [DEPLOYMENT.md](DEPLOYMENT.md).
> The Qt/C++ host and its CMake build were retired in favour of the Avalonia
> host. `SETUP.md` / `DEVELOPMENT.md` / `DEPLOYMENT.md` are from the Qt era and
> are pending a refresh.