Docs
Game Registry

Versions — bring your own game

A game's versions: the files a server installs. Upload a zip, install from Steam, or fetch a vendor archive.

A version is a set of files a game's servers install — your modpack's 1.0, then its 2.0. Each one belongs to one of your games, and the game points at one of them as current: that is what a new server gets. A server already running stays on the version it was created with until you upgrade it, so adding a version never changes a server under its players.

In the API a version is a Build, and it is named

accounts/{account}/builds/{build}

Versions belong to the account, not a project: a studio building one server binary uses it across every project, and a copy per project would mean re-uploading gigabytes to change nothing.

The quickest way in is the console: Games → Add your own game asks where the files are and which published game yours works like, and creates the game and its first version together. A new version after that is Add a version on the game's Versions tab.

Every version has a kind

kind is required and cannot be changed afterwards. A dedicated server — anything a Playpute server runs — is KIND_SERVER (--kind server in the CLI, kind = "server" in Terraform). A game refuses a build of the wrong kind when you save it, rather than leaving you with a server that installs and has nothing to start.

Three sources

Most game servers are already published somewhere, so a version declares a source, and only an upload stores files with Plany.

For the large family of Source and Steamworks games, an app id is the whole configuration.

text
source:
steam_cmd:
app_id: 4020 # the DEDICATED SERVER's app id
branch: "" # empty takes the public branch
validate: true

Use the dedicated server's app id, which is usually not the game's. Garry's Mod is 4000 to play and 4020 to host.

username and password are for a dedicated server that refuses anonymous downloads; most do not. branch_password opens a private branch.

Games → your game → Versions → Add a version → Upload a file → choose the archive

In Terraform, changing the uploaded file plans a new version: a version's files never change under the servers already running from it. Add the next one as a second plany_game_version and point plany_game_current_version at it.

plany builds and plany_game_build are the old names and still work. plany_game_build is deprecated; renaming it in a configuration is a moved block, and Terraform carries the state across without recreating anything:

Terraform
moved {
from = plany_game_build.my_server
to = plany_game_version.my_server
}

install_commands

Commands run in order after the files are in place, for every source. Forge ships an installer rather than a server: fetch the installer with an archive source, then run it here.

The shape of an uploaded archive

The root of the archive is the root of the game server

No wrapper directory. What the archive unpacks to is what the launch command runs in.

A plany-install.sh at that root is run once, after unpacking, inside the build directory. It can unpack, fetch and set up whatever it needs.

It cannot install system packages — everything outside your build's own directory is read-only. Bring what your server needs inside the archive, or fetch it into the build directory from the script.

States

StateMeaning
PENDING_UPLOADCreated, waiting for its archive. Only uploaded versions wait here.
PROCESSINGBeing fetched, unpacked or checked.
READYUsable by a game, and can be made current.
FAILEDSomething went wrong; error says what.
DELETEDDeleted, and kept so a server still referring to it can say what it ran.

The current version

A game's current version is what its server.build points at, and it is what a new server installs. Make another version current from the game's Versions tab, with plany_game_current_version, or with UpdateGame on server.build.

  • A version must belong to one of your own games. A game Plany publishes cannot be given versions; customise it — create a game based on it — and add versions to that.
  • game cannot be changed after the version is created. A version does not move between games.
  • A game with no current version of its own runs what the game it is based on provides. The console says so on the Versions tab.
  • Deleting a game leaves its versions in place, attached to nothing. They are still your files, and still count towards storage, until you delete them; Games → All your files lists them.
Shell
plany versions create modpack-v2 --game modpack --upload ./modpack-v2.zip --kind server --version 2.0
plany versions list --game modpack

A version alone runs nothing: the game supplies the launch command and the ports. See Making your own game.

Operating system

Game servers run on Linux. A server build is a Linux build, and a Windows-only dedicated server cannot be run.

Storage

Uploaded builds count against game.plany.cloud/build_storage_bytes — 20 GiB on Hobby and 500 GiB on Pro, across the whole account. Steam and archive builds store nothing with Plany and count against nothing. See Quotas.