Document dedicated server and tile delivery builds
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# 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.
|
||||
|
||||
## 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`.
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
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.
|
||||
@@ -0,0 +1,76 @@
|
||||
# Agrarian MVP Map Tile Delivery Server Runbook
|
||||
|
||||
The near-term tile server is intentionally simple: static files served by nginx
|
||||
from an Ubuntu VM. This proves the contract for tile manifest lookup, package
|
||||
download, checksums, local cache, and redownload before investing in a database
|
||||
or application service.
|
||||
|
||||
## Build The Ground Zero Tile Package
|
||||
|
||||
On Ubuntu-Codex or any Linux machine with the repo mounted:
|
||||
|
||||
```bash
|
||||
cd /mnt/projects/AgrarianGameBulid
|
||||
Scripts/build_ground_zero_tile_delivery_package.sh
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
- `BuildArtifacts/TileDelivery/public/manifest.json`
|
||||
- `BuildArtifacts/TileDelivery/public/ground_zero_tiles.json`
|
||||
- `BuildArtifacts/TileDelivery/public/tiles/gz_us_ca_pacifica_utm10n_e544_n4160/v0/`
|
||||
- `BuildArtifacts/TileDelivery/public/SHA256SUMS`
|
||||
- `BuildArtifacts/TileDelivery/agrarian-ground-zero-tile-delivery.tar.gz`
|
||||
|
||||
`BuildArtifacts/` is a local build output and should not be committed.
|
||||
|
||||
## Bootstrap A New Ubuntu Tile Server
|
||||
|
||||
Copy the archive to a fresh Ubuntu VM, then run:
|
||||
|
||||
```bash
|
||||
sudo AGRARIAN_TILE_SERVER_NAME=tiles.example.test \
|
||||
Operations/cloud-map-tile-server/bootstrap_ubuntu_tile_server.sh \
|
||||
/path/to/agrarian-ground-zero-tile-delivery.tar.gz
|
||||
```
|
||||
|
||||
For an IP-only MVP test, omit `AGRARIAN_TILE_SERVER_NAME`.
|
||||
|
||||
The bootstrap installs nginx, creates:
|
||||
|
||||
```text
|
||||
/srv/agrarian/tile-delivery/public
|
||||
```
|
||||
|
||||
and publishes:
|
||||
|
||||
- `http://SERVER_IP/health`
|
||||
- `http://SERVER_IP/manifest.json`
|
||||
- `http://SERVER_IP/ground_zero_tiles.json`
|
||||
- `http://SERVER_IP/tiles/gz_us_ca_pacifica_utm10n_e544_n4160/v0/...`
|
||||
|
||||
## Cost Control
|
||||
|
||||
Keep the MVP server small:
|
||||
|
||||
- Ubuntu LTS, smallest useful VM size.
|
||||
- Static nginx only.
|
||||
- No database for the first proof.
|
||||
- No public write endpoints.
|
||||
- No Unreal server process on the tile VM unless explicitly testing combined
|
||||
hosting.
|
||||
- Shut down or destroy the VM when not testing.
|
||||
|
||||
## Security Baseline
|
||||
|
||||
- Allow inbound `80/tcp` for the public MVP endpoint.
|
||||
- Allow SSH only from trusted admin IPs.
|
||||
- Add HTTPS with certbot when a real DNS name is assigned.
|
||||
- Treat tile packages as immutable by version. Publish fixes as a new package
|
||||
version instead of editing files in place.
|
||||
|
||||
## Next Proof
|
||||
|
||||
The next implementation step after this runbook is to launch the MVP cloud VM,
|
||||
publish this static package, and prove lookup/download/cache/redownload behavior
|
||||
from a representative client.
|
||||
Reference in New Issue
Block a user