111 lines
3.4 KiB
Markdown
111 lines
3.4 KiB
Markdown
# Agrarian Dedicated Server Build Runbook
|
|
|
|
Agrarian's multiplayer server target is Linux. Windows-Builder remains the
|
|
interactive Unreal build machine, but the server artifact should run on an
|
|
Ubuntu cloud VM or other Linux host.
|
|
|
|
## Public Endpoint Convention
|
|
|
|
Use this MVP gameplay endpoint unless a later deployment requires a different
|
|
host name:
|
|
|
|
- DNS name: `play.agrariangame.com`
|
|
- Unreal gameplay traffic: `7777/udp`
|
|
- SSH: admin IPs only
|
|
|
|
When the first Ubuntu gameplay VM is created, point the `play` A/AAAA record at
|
|
that VM. Do not point this name at the tile server; tile delivery and gameplay
|
|
should remain separate until a deliberate combined-host decision is made.
|
|
|
|
## Build Machine
|
|
|
|
Use Windows-Builder for the first repeatable build lane:
|
|
|
|
- Unreal Engine `5.7`
|
|
- VS 2022 Build Tools toolchain compatible with Unreal `5.7`
|
|
- Epic Linux cross-compile toolchain for Unreal `5.7`
|
|
- Project path: `P:\AgrarianGameBulid` when mapped from `\\DevBox\projects`
|
|
|
|
The server target is `AgrarianGameServer`, defined in
|
|
`Source/AgrarianGameServer.Target.cs`.
|
|
|
|
## Ubuntu Host Bootstrap
|
|
|
|
Prepare a new Ubuntu gameplay host with:
|
|
|
|
```bash
|
|
sudo Operations/cloud-game-server/bootstrap_ubuntu_game_server.sh play.agrariangame.com
|
|
```
|
|
|
|
The script installs baseline packages, creates an `agrarian` service user,
|
|
creates `/opt/agrarian/server`, writes a systemd unit named
|
|
`agrarian-game-server`, and opens `7777/udp` with `ufw` when available.
|
|
|
|
For DigitalOcean or another cloud provider later, create an Ubuntu LTS droplet
|
|
or VM, copy this repository or just the script onto the host, run the bootstrap
|
|
script, then copy the `Builds/LinuxServerDevelopment` package contents into
|
|
`/opt/agrarian/server`.
|
|
|
|
## Build Command
|
|
|
|
From an elevated or normal Command Prompt on Windows-Builder:
|
|
|
|
```bat
|
|
cd /d P:\AgrarianGameBulid
|
|
Scripts\BuildLinuxDedicatedServer-Windows.bat
|
|
```
|
|
|
|
Expected output:
|
|
|
|
- Logs: `Saved\BuildLogs\BuildLinuxDedicatedServer.log`
|
|
- Archive: `Builds\LinuxServerDevelopment`
|
|
|
|
If the script fails before compile with a Linux toolchain error, install Epic's
|
|
Unreal `5.7` Linux cross-compile toolchain on Windows-Builder, reopen the
|
|
terminal, and run the script again.
|
|
|
|
## Initial Runtime Shape
|
|
|
|
The first server package cooks the Ground Zero MVP map:
|
|
|
|
```text
|
|
/Game/Agrarian/Maps/L_GroundZeroTerrain_Test
|
|
```
|
|
|
|
First cloud/server launch target:
|
|
|
|
```bash
|
|
./AgrarianGameServer L_GroundZeroTerrain_Test?listen -log -port=7777
|
|
```
|
|
|
|
Systemd launch target created by the bootstrap script:
|
|
|
|
```bash
|
|
sudo systemctl restart agrarian-game-server
|
|
sudo journalctl -u agrarian-game-server -f
|
|
```
|
|
|
|
Open firewall ports only as needed:
|
|
|
|
- `7777/udp` for Unreal gameplay traffic.
|
|
- SSH from trusted admin IPs only.
|
|
|
|
Do not expose editor, SMB, RDP, database, or admin ports on the public server.
|
|
|
|
## Smoke Test
|
|
|
|
For the first MVP validation:
|
|
|
|
1. Build the Linux server package on Windows-Builder.
|
|
2. Copy the archived server package to an Ubuntu test VM.
|
|
3. Start the server with `-log -port=7777`.
|
|
4. Confirm the log reaches map load without fatal errors.
|
|
5. Connect from a packaged Windows Development client on the LAN or test VPN.
|
|
6. Record the commit, package date, map, client build, and server log path.
|
|
|
|
## Current Limits
|
|
|
|
This runbook creates the repeatable build lane. It does not yet prove a full
|
|
external multiplayer session. That remains a later roadmap item after the
|
|
project has a clean server package and a stable deploy target.
|