Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 0 additions & 47 deletions .github/workflows/build-images.yml

This file was deleted.

2 changes: 1 addition & 1 deletion ark-survival-evolved/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The server stops cleanly by issuing `SaveWorld` and `DoExit` prior to container

## Storage & Cluster Travel

Storage is mounted at `/serverdata/ShooterGame/Saved` (35 GiB default). All map saves, tribe data, player profiles, and cross-shard cluster transfers (`clusters/` subfolder) persist across container restarts.
Storage is mounted at `/data` (35 GiB default). The game is installed there on first start, and all map saves, tribe data, player profiles, and cross-shard cluster transfers (`clusters/` subfolder, under `/data/ShooterGame/Saved`) persist across container restarts.

To enable cluster travel between multiple ARK servers, supply the same `CLUSTER_ID` in each server's configuration and configure a shared volume or synchronize the cluster folder.

Expand Down
2 changes: 1 addition & 1 deletion ark-survival-evolved/module.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
apiVersion: gameplane.local/module/v1
name: ark-survival-evolved
displayName: "ARK: Survival Evolved"
version: 1.0.0
version: 1.1.0
game: ark-survival-evolved
categories: [Survival, Open World, Multiplayer, Dinosaurs]
summary: "ARK: Survival Evolved dedicated server with Source RCON console, cluster travel support, and persistent world state."
Expand Down
15 changes: 8 additions & 7 deletions ark-survival-evolved/specs.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@

## 2. Container Image & Architecture

- **Base Image**: `ghcr.io/valgulnecron/gameplane/ark-survival-evolved:latest@sha256:0000000000000000000000000000000000000000000000000000000000000000`
- **Base Image**: `ghcr.io/gameplanepanel/gameplane/ark-survival-evolved:latest@sha256:2a4298f8055dbff4107c49c961cace1f2bed42809e6b93fb4924371ae4484e58`
- **Architecture**: `linux/amd64`
- **Image Source**: Built from `images/games/ark-survival-evolved/` in the main Gameplane repository on the shared SteamCMD base.
- **Runtime Model**: SteamCMD Linux dedicated server (`ShooterGameServer`).
- **User & Execution Context**: UID 1000, GID 1000, working directory `/serverdata`.
- **User & Execution Context**: UID 10000, GID 10000, working directory `/data`.

---

Expand All @@ -32,13 +33,13 @@ Declared ports under `spec.ports`:

## 4. Storage & Persistence Layout

- **Mount Path**: `/serverdata/ShooterGame/Saved`
- **Mount Path**: `/data`
- **Default Sizing**: `35Gi`
- **Persisted Content**:
- Saved worlds, tribe data, and dinosaur entities (`SavedArks/`)
- Server configuration files (`Config/LinuxServer/GameUserSettings.ini`)
- Cross-server cluster transfers (`clusters/`)
- **Non-Shadowing Invariant**: The mount path isolates the `Saved/` directory without shadowing the server binaries in `/serverdata`.
- **Non-Shadowing Invariant**: The volume holds the whole install, so nothing in the image is shadowed (the image ships only SteamCMD and the entrypoint).

---

Expand Down Expand Up @@ -74,9 +75,9 @@ Declared ports under `spec.ports`:

## 8. Key Invariants & Security

- **User Matching**: `spec.security.runAsUser: 1000` matches image user.
- **Environment**: `spec.env` contains `HOME=/serverdata`.
- **Filesystem Permissions**: `spec.security.fsGroup: 1000` ensures volume read/write permissions.
- **User Matching**: `spec.security.runAsUser: 10000` matches image user.
- **Environment**: `HOME=/home/gameserver` is baked into the image (no `spec.env` entry needed).
- **Filesystem Permissions**: `spec.security.fsGroup: 10000` ensures volume read/write permissions.

---

Expand Down
22 changes: 9 additions & 13 deletions ark-survival-evolved/template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Gameplane GameTemplate for ARK: Survival Evolved (dedicated server).
#
# Dedicated server for ARK: Survival Evolved running on Linux.
# Persistent world state and cluster directory live under /serverdata/ShooterGame/Saved.
# The whole ARK install lives under /data; persistent world state and cluster directory live under /data/ShooterGame/Saved.
#
# Cluster-scoped; apply once per cluster:
# kubectl apply -f modules/ark-survival-evolved/template.yaml
Expand All @@ -16,30 +16,26 @@ metadata:
spec:
displayName: "ARK: Survival Evolved"
game: ark-survival-evolved
version: 1.0.0
version: 1.1.0
categories: [Survival, Open World, Multiplayer, Dinosaurs]
accentColor: "#00b2e2"
description: |
ARK: Survival Evolved dedicated server. Source RCON powers remote administration
and server actions. Persistent world state and cross-shard cluster transfers live
under `/serverdata/ShooterGame/Saved`.
under `/data/ShooterGame/Saved`, on the same volume as the game install.

image: ghcr.io/valgulnecron/gameplane/ark-survival-evolved:latest@sha256:0000000000000000000000000000000000000000000000000000000000000000
image: ghcr.io/gameplanepanel/gameplane/ark-survival-evolved:latest@sha256:2a4298f8055dbff4107c49c961cace1f2bed42809e6b93fb4924371ae4484e58

versions:
- id: latest
displayName: "Latest"
image: ghcr.io/valgulnecron/gameplane/ark-survival-evolved:latest@sha256:0000000000000000000000000000000000000000000000000000000000000000
image: ghcr.io/gameplanepanel/gameplane/ark-survival-evolved:latest@sha256:2a4298f8055dbff4107c49c961cace1f2bed42809e6b93fb4924371ae4484e58
default: true

env:
- name: HOME
value: /serverdata

security:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
runAsUser: 10000
runAsGroup: 10000
fsGroup: 10000

ports:
- name: game
Expand All @@ -57,7 +53,7 @@ spec:

storage:
size: 35Gi
mountPath: /serverdata/ShooterGame/Saved
mountPath: /data

resources:
requests: {cpu: "2", memory: 8Gi}
Expand Down
4 changes: 3 additions & 1 deletion arma-reforger/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

Arma Reforger dedicated server package for Gameplane. Runs on Bohemia Interactive's Enfusion engine with interactive PTY stdin console, persistent profile and saves, and Steam Workshop modding support.

Image: `ghcr.io/acemod/arma-reforger` (https://github.com/acemod/docker-reforger), the ACE team's community image. It runs as root by design, and SteamCMD installs the server into `/reforger` on every start.

## Install

```sh
Expand All @@ -25,7 +27,7 @@ Most dedicated servers allow anonymous SteamCMD download. If an authenticated St

## Storage

Persistent storage is mounted at `/home/steam/.local/share/ArmaReforgerServer` (30 GiB default). All world state, player profiles, and downloaded Workshop mods persist across container restarts.
Persistent storage is mounted at `/reforger` (30 GiB default). The server install, `Configs/`, `profile/`, and `workshop/` all live on the volume, so world state, player profiles, and downloaded Workshop mods persist across container restarts.

## Sample

Expand Down
2 changes: 1 addition & 1 deletion arma-reforger/module.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
apiVersion: gameplane.local/module/v1
name: arma-reforger
displayName: Arma Reforger
version: 1.0.0
version: 1.1.0
game: arma-reforger
categories: [Shooter, Tactical, Military, Simulation]
summary: Arma Reforger dedicated server (Enfusion Engine) with stdin PTY console, persistent profile/world saves, and Steam Workshop support.
Expand Down
8 changes: 4 additions & 4 deletions arma-reforger/samples/gameserver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ spec:
name: arma-reforger

config:
SERVER_NAME: "Gameplane Arma Reforger Server"
SERVER_PASSWORD: ""
ADMIN_PASSWORD: "secret-admin-pass"
MAX_PLAYERS: "64"
GAME_NAME: "Gameplane Arma Reforger Server"
GAME_PASSWORD: ""
GAME_PASSWORD_ADMIN: "secret-admin-pass"
GAME_MAX_PLAYERS: "64"

networking:
expose: NodePort
Expand Down
17 changes: 8 additions & 9 deletions arma-reforger/specs.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@

## 2. Container Image & Architecture

- **Base Image**: `ghcr.io/valgulnecron/gameplane/arma-reforger:latest@sha256:0000000000000000000000000000000000000000000000000000000000000000`
- **Base Image**: `ghcr.io/acemod/arma-reforger:latest@sha256:beb50bcaebbc3b3124363ed1c0a5729b514493d72b3cadd52a204ade6105fecd`
- **Architecture**: `linux/amd64`
- **Image Source**: `ghcr.io/acemod/arma-reforger` (https://github.com/acemod/docker-reforger), the ACE team's community image.
- **Runtime Model**: SteamCMD Linux dedicated server (`ArmaReforgerServer`).
- **User & Execution Context**: UID 1000, GID 1000, working directory `/home/steam`.
- **User & Execution Context**: root (UID 0), by the upstream image's design; working directory `/reforger`.

---

Expand All @@ -31,13 +32,13 @@ Declared ports under `spec.ports`:

## 4. Storage & Persistence Layout

- **Mount Path**: `/home/steam/.local/share/ArmaReforgerServer`
- **Mount Path**: `/reforger`
- **Default Sizing**: `30Gi`
- **Persisted Content**:
- Profile state and saved game sessions
- Server configs (`ArmaReforgerServer.json`)
- Downloaded Workshop addons (`addons/`)
- **Non-Shadowing Invariant**: The mount path isolates server state under `.local/share/ArmaReforgerServer`.
- Downloaded Workshop addons (`workshop/`)
- **Non-Shadowing Invariant**: The mount path holds the server install and its state under `/reforger`.

---

Expand All @@ -53,7 +54,7 @@ Declared ports under `spec.ports`:
## 6. Modding & Workshop Integration

- **Modding Framework**: Bohemia Interactive Workshop / addons.
- **Mod Directory Path**: `addons`
- **Mod Directory Path**: `workshop`

---

Expand All @@ -72,9 +73,7 @@ Declared ports under `spec.ports`:

## 8. Key Invariants & Security

- **User Matching**: `spec.security.runAsUser: 1000` matches image user (`steam`).
- **Environment**: `spec.env` contains `HOME=/home/steam`.
- **Filesystem Permissions**: `spec.security.fsGroup: 1000` configured for volume ownership.
- **No `spec.security` override**: the ACE image runs as root and owns its directories.

---

Expand Down
34 changes: 16 additions & 18 deletions arma-reforger/template.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# yaml-language-server: $schema=../.schema/gametemplate.schema.json
# Gameplane GameTemplate for Arma Reforger (dedicated server).
# Image: ghcr.io/acemod/arma-reforger (ACE team). Runs as root by design: SteamCMD installs the server into /reforger on every start.
#
# Runs Bohemia Interactive's Enfusion-engine dedicated server. Console access
# is provided via container PTY (stdin/stdout). World saves, profile settings,
# and downloaded Workshop mods persist under /home/steam/.local/share/ArmaReforgerServer.
# and downloaded Workshop mods persist under /reforger.
#
# Cluster-scoped; apply once per cluster:
# kubectl apply -f modules/arma-reforger/template.yaml
Expand All @@ -17,30 +18,27 @@ metadata:
spec:
displayName: Arma Reforger
game: arma-reforger
version: 1.0.0
version: 1.1.0
categories: [Shooter, Tactical, Military, Simulation]
accentColor: "#3a5a40"
description: |
Arma Reforger dedicated server running Bohemia Interactive's Enfusion engine.
Console access is available via container PTY stdin/stdout. Persistent server
saves and Workshop mods reside under `/home/steam/.local/share/ArmaReforgerServer`.
saves and Workshop mods reside under `/reforger`, together with the server install.

image: ghcr.io/valgulnecron/gameplane/arma-reforger:latest@sha256:0000000000000000000000000000000000000000000000000000000000000000
image: ghcr.io/acemod/arma-reforger:latest@sha256:beb50bcaebbc3b3124363ed1c0a5729b514493d72b3cadd52a204ade6105fecd

versions:
- id: latest
displayName: "Latest (Enfusion)"
image: ghcr.io/valgulnecron/gameplane/arma-reforger:latest@sha256:0000000000000000000000000000000000000000000000000000000000000000
image: ghcr.io/acemod/arma-reforger:latest@sha256:beb50bcaebbc3b3124363ed1c0a5729b514493d72b3cadd52a204ade6105fecd
default: true

env:
- name: HOME
value: /home/steam

security:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
- name: ARMA_PROFILE
value: /reforger/profile
- name: ARMA_WORKSHOP_DIR
value: /reforger/workshop

ports:
- name: game
Expand All @@ -54,7 +52,7 @@ spec:

storage:
size: 30Gi
mountPath: /home/steam/.local/share/ArmaReforgerServer
mountPath: /reforger

resources:
requests: {cpu: "2", memory: 8Gi}
Expand Down Expand Up @@ -87,7 +85,7 @@ spec:
transport: stdin
command: "save"
mods:
path: addons
path: workshop
extensions: [".pak", ".bin"]
install:
allowedHosts:
Expand All @@ -100,19 +98,19 @@ spec:
steamAppID: 1874880

configSchema:
- name: SERVER_NAME
- name: GAME_NAME
displayName: Server Name
type: string
default: "Gameplane Arma Reforger Server"
- name: SERVER_PASSWORD
- name: GAME_PASSWORD
displayName: Server Password
type: password
default: ""
- name: ADMIN_PASSWORD
- name: GAME_PASSWORD_ADMIN
displayName: Admin Password
type: password
default: ""
- name: MAX_PLAYERS
- name: GAME_MAX_PLAYERS
displayName: Max Players
type: int
default: 64
Expand Down
39 changes: 0 additions & 39 deletions beammp/Dockerfile

This file was deleted.

Loading
Loading