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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user