diff --git a/README.md b/README.md index 33db7cfe..78f00119 100644 --- a/README.md +++ b/README.md @@ -268,6 +268,8 @@ Below is a categorized list of games with links to their respective server confi #### [Soldat 2](./soldat_2) +#### [Subnautica: Nitrox Mod](./subnautica_nitrox_mod) + #### [Sunkenland](./sunkenland) #### [Voyager of Nera](./voyagers_of_nera) diff --git a/subnautica_nitrox_mod/README.md b/subnautica_nitrox_mod/README.md index 83381f39..5d610a98 100644 --- a/subnautica_nitrox_mod/README.md +++ b/subnautica_nitrox_mod/README.md @@ -4,22 +4,52 @@ Subnautica is an open world survival action-adventure video game developed and p In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface. The multiplayer function is provided by the mod "Nitrox". This mod is still in alpha version and therefore not yet fully stable. -## NOTE +## Requirements -To download the base game, you will need to authenticate against Steam. -Because of the normally active Steamgaurd protection, it is important to enter the Steamgaurd code. -Once the initial installation is complete, you will need to enter the Steamguard code that will be emailed to you and then reinstall the server. +- **Nitrox 1.8+** — older versions are not supported by this egg. +- A Steam account that owns Subnautica. The account must use **email-based** Steam Guard; the authenticator app is not supported by SteamCMD's `+set_steam_guard_code` flow. -This will only work if you receive Steamguard codes via mail. The Authenticator app is not supported. +## Steam Guard install flow -## NOTE 2 +Steam Guard codes are single-use and expire quickly. -NitroxMod version >=1.5.0.0 is required for this egg +1. Trigger the first install with `STEAM_GUARDCODE` blank. SteamCMD's login will fail and Steam will email a fresh code to the account owner. +2. Paste that code into the `Steam Guard Code` variable on the server's Startup page. +3. **Reinstall** the server — the install script consumes the code and downloads Subnautica. +4. Clear the `Steam Guard Code` field after the install succeeds; it's not needed on subsequent boots. ## Server Ports -The nitrox server requires only the default Server port. +Nitrox uses a single UDP port. Pterodactyl's default allocation is assigned automatically. -| Port | default | -|--------|---------| -| Server | any | +| Port | Default | Protocol | +|--------|---------|----------| +| Server | any | UDP | + +Make sure the allocation includes UDP. Nitrox 1.8 removed the old "must be ≥1024" port restriction, so any free port the node allows is fine. + +## Save folder + +The save folder is hardcoded to `nitrox_world` (visible in the `Save Name` variable as read-only). Files live under `NitroxData/saves/nitrox_world/`. The `Save Name` variable is locked because Pterodactyl's config-file parser does not template variables inside file paths — changing it would break the panel's ability to manage `server.cfg`. + +## Configuration + +The egg manages these `server.cfg` keys from variables (no need to hand-edit unless you want options the egg doesn't expose): + +- `ServerPort` (from the panel's allocation) +- `SaveInterval`, `DisableAutoSave` +- `ServerPassword`, `AdminPassword` +- `GameMode`, `SerializerMode` +- `MaxConnections`, `DefaultPlayerPerm`, `DisableConsole` +- `AutoPortForward` + +The full `server.cfg` lives at `NitroxData/saves/nitrox_world/server.cfg`. Editable through the panel file manager when the server is stopped. Other Nitrox config keys not exposed as variables can be edited directly there. + +## Known limitations + +- **In-game console is not interactive from the panel console.** Typing `/op`, `/kick`, etc. into Pterodactyl's web console will not reach Nitrox. This is upstream — Nitrox's `ConsoleInputService` requires raw-mode terminal behaviour that Pterodactyl Wings' TTY doesn't currently provide. A yolks-level wrapper is being tracked in the Pterodactyl community. The server itself works fine; admin commands must currently be issued in-game by a player with admin permissions. +- **Graceful stop uses SIGINT, not the `stop` console command.** Consequence of the above. Pterodactyl's Stop button still works — the egg's stop configuration is set to `^C`, which .NET Generic Host catches and converts into a clean save + shutdown. + +## Updating Nitrox + +Set the `Nitrox Version` variable to `latest` (default) and reinstall to pull the newest release. Pin to a specific tag (e.g. `1.8.1.0`) if you need to lock the version — see [Nitrox releases](https://github.com/SubnauticaNitrox/Nitrox/releases) for tags. diff --git a/subnautica_nitrox_mod/egg-subnautica.json b/subnautica_nitrox_mod/egg-subnautica.json index 48f898e6..c7a944d3 100644 --- a/subnautica_nitrox_mod/egg-subnautica.json +++ b/subnautica_nitrox_mod/egg-subnautica.json @@ -4,10 +4,10 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2025-10-10T20:39:59+02:00", + "exported_at": "2026-05-20T01:14:11+10:00", "name": "Subnautica", "author": "ptero@redbananaofficial.com", - "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version >=1.7.0.0 is required", + "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version 1.8+ is required", "features": [ "steam_disk_space" ], @@ -15,23 +15,23 @@ "ghcr.io\/ptero-eggs\/yolks:dotnet_9": "ghcr.io\/ptero-eggs\/yolks:dotnet_9" }, "file_denylist": [], - "startup": "export HOME=\/home\/container\/subnautica; .\/nitrox\/NitroxServer-Subnautica", + "startup": "SUBNAUTICA_INSTALLATION_PATH=\/home\/container\/subnautica .\/nitrox\/Nitrox.Server.Subnautica --save nitrox_world --data-path \/home\/container\/NitroxData", "config": { - "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"ServerPort\": \"{{server.build.default.port}}\",\r\n \"SaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"DisableAutoSave\": \"{{server.build.env.SAVE_DISABLE}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"ServerPassword\": \"{{server.build.env.SUBNAUTICA_PASSWORD}}\",\r\n \"AdminPassword\": \"{{server.build.env.SUBNAUTICA_ADMIN_PASSWORD}}\",\r\n \"GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"AutoPortForward\": \"{{server.build.env.PORTFORWARD_ENABLE}}\",\r\n \"SerializerMode\": \"{{server.build.env.SERIALIZER_MODE}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"NitroxData\/saves\/nitrox_world\/server.cfg\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"ServerPort\": \"{{server.build.default.port}}\",\r\n \"SaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"DisableAutoSave\": \"{{server.build.env.SAVE_DISABLE}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"ServerPassword\": \"{{server.build.env.SUBNAUTICA_PASSWORD}}\",\r\n \"AdminPassword\": \"{{server.build.env.SUBNAUTICA_ADMIN_PASSWORD}}\",\r\n \"GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"AutoPortForward\": \"{{server.build.env.PORTFORWARD_ENABLE}}\",\r\n \"SerializerMode\": \"{{server.build.env.SERIALIZER_MODE}}\",\r\n \"MaxConnections\": \"{{server.build.env.MAX_CONNECTIONS}}\",\r\n \"DefaultPlayerPerm\": \"{{server.build.env.DEFAULT_PERMISSION}}\",\r\n \"DisableConsole\": \"{{server.build.env.DISABLE_CONSOLE}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Server started\"\r\n}", "logs": "{}", - "stop": "stop" + "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\n## get release info and download links\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\nVERSION=${NITROX_VERSION}\r\nMATCH=\"Nitrox\"\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\n# arch detection\r\n_arch=$(uname -m)\r\ncase \"${_arch}\" in\r\n x86_64|amd64) ARCH_TAG=\"linux_x64\" ;;\r\n aarch64|arm64) ARCH_TAG=\"linux_arm64\" ;;\r\n *) ARCH_TAG=\"linux_x64\" ;;\r\nesac\r\n\r\nselect_asset_url() {\r\n local json=\"$1\"\r\n local arch_tag=\"$2\"\r\n url=$(echo \"$json\" | jq -r --arg arch \"$arch_tag\" '.assets[] | select(.name != null) | select((.name | test($arch; \"i\"))) | .browser_download_url' | head -n1)\r\n if [ -z \"$url\" ]; then\r\n url=$(echo \"$json\" | jq -r '.assets[] | select(.name | test(\"linux\"; \"i\")) | .browser_download_url' | head -n1)\r\n fi\r\n if [ -z \"$url\" ]; then\r\n url=$(echo \"$json\" | jq -r '.assets[0].browser_download_url')\r\n fi\r\n printf \"%s\" \"$url\"\r\n}\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n RELEASE_JSON=\"${LATEST_JSON}\"\r\n DOWNLOAD_URL=$(select_asset_url \"$RELEASE_JSON\" \"$ARCH_TAG\")\r\nelse\r\n RELEASE_JSON=$(echo \"${RELEASES}\" | jq -c --arg VERSION \"$VERSION\" '.[] | select(.tag_name == $VERSION)' )\r\n if [ -z \"$RELEASE_JSON\" ]; then\r\n echo \"Requested Nitrox version ${VERSION} not found, defaulting to latest\"\r\n RELEASE_JSON=\"${LATEST_JSON}\"\r\n fi\r\n DOWNLOAD_URL=$(select_asset_url \"$RELEASE_JSON\" \"$ARCH_TAG\")\r\nfi\r\n\r\nif [ -z \"$DOWNLOAD_URL\" ] || [ \"$DOWNLOAD_URL\" == \"null\" ]; then\r\n echo \"Could not determine Nitrox download URL. Dumping available assets for debugging:\"\r\n echo \"${RELEASE_JSON}\" | jq '.assets[] | {name: .name, url: .browser_download_url}'\r\n exit 1\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -rf \"$HOME\/nitrox\"\r\nmkdir -p \"$HOME\/nitrox\"\r\ncd \"$HOME\/nitrox\"\r\n\r\ncurl -sL \"$DOWNLOAD_URL\" -o Nitrox.zip\r\nunzip -q Nitrox.zip\r\nrm Nitrox.zip\r\n\r\n# move contents from the first directory (e.g., linux-x64) to here\r\nFIRST_DIR=$(find . -mindepth 1 -maxdepth 1 -type d | head -n 1)\r\nif [ -n \"$FIRST_DIR\" ]; then\r\n mv \"$FIRST_DIR\"\/* \"$HOME\/nitrox\"\/\r\n rm -rf \"$FIRST_DIR\"\r\nfi\r\n\r\n## make everything inside nitrox executable\r\nchmod -R +x \"$HOME\/nitrox\" || true\r\n\r\n## create config directory\r\nmkdir $HOME\/.config\r\n\r\n\r\n## Create path files to Subnautica Install-Dir. Needed for versions pre 1.6.0\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Set to true to Cache entities for the whole map on next run. \r\n # WARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.\r\n CreateFullEntityCache=False\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n InitialSyncTimeout=300000\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", + "script": "#!\/bin\/bash\r\n# Installation Script for Subnautica + Nitrox\r\n\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n# Resolve Nitrox download URL (latest or pinned NITROX_VERSION)\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\ncase \"$(uname -m)\" in\r\n aarch64|arm64) ARCH_TAG=\"linux_arm64\" ;;\r\n *) ARCH_TAG=\"linux_x64\" ;;\r\nesac\r\n\r\nif [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" = \"latest\" ]; then\r\n RELEASE_JSON=$(curl -fsSL \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nelse\r\n ALL_RELEASES=$(curl -fsSL \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n RELEASE_JSON=$(printf '%s' \"${ALL_RELEASES}\" | jq -c --arg v \"${NITROX_VERSION}\" '.[] | select(.tag_name == $v)')\r\n if [ -z \"${RELEASE_JSON}\" ]; then\r\n echo \"Nitrox version ${NITROX_VERSION} not found; falling back to latest\"\r\n RELEASE_JSON=$(curl -fsSL \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\n fi\r\nfi\r\n\r\nDOWNLOAD_URL=$(printf '%s' \"${RELEASE_JSON}\" | jq -r --arg arch \"${ARCH_TAG}\" '.assets[] | select(.name | test($arch; \"i\")) | .browser_download_url' | head -n1)\r\n\r\nif [ -z \"${DOWNLOAD_URL}\" ] || [ \"${DOWNLOAD_URL}\" = \"null\" ]; then\r\n echo \"Could not determine Nitrox download URL for ${ARCH_TAG}\"\r\n printf '%s' \"${RELEASE_JSON}\" | jq '.assets[] | {name, browser_download_url}'\r\n exit 1\r\nfi\r\n\r\n# Install SteamCMD\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncd \/tmp\r\ncurl -fsSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nif [ -z \"${STEAM_GUARDCODE}\" ]; then\r\n echo \"### No Steam Guard code provided.\"\r\n echo \"### One should be emailed to you shortly; set STEAM_GUARDCODE and reinstall.\"\r\n sleep 5\r\n timeout 60 .\/steamcmd.sh +force_install_dir \"${HOME}\/subnautica\" +login \"${STEAM_USERNAME}\" \"${STEAM_PASSWORD}\" +quit\r\n exit 1\r\nfi\r\n\r\nmkdir -p \"${HOME}\/subnautica\"\r\n.\/steamcmd.sh +force_install_dir \"${HOME}\/subnautica\" +@sSteamCmdForcePlatformType windows +set_steam_guard_code \"${STEAM_GUARDCODE}\" +login \"${STEAM_USERNAME}\" \"${STEAM_PASSWORD}\" +app_update \"${APPID}\" ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]; then\r\n echo \"### Subnautica download failed (likely a bad\/expired Steam Guard code).\"\r\n echo \"### A new code should arrive shortly; update STEAM_GUARDCODE and reinstall.\"\r\n sleep 5\r\n timeout 30 .\/steamcmd.sh +force_install_dir \"${HOME}\/subnautica\" +login \"${STEAM_USERNAME}\" \"${STEAM_PASSWORD}\" +quit\r\n exit 1\r\nfi\r\n\r\nmkdir -p \"${HOME}\/.steam\/sdk32\" \"${HOME}\/.steam\/sdk64\"\r\ncp -v linux32\/steamclient.so \"${HOME}\/.steam\/sdk32\/steamclient.so\"\r\ncp -v linux64\/steamclient.so \"${HOME}\/.steam\/sdk64\/steamclient.so\"\r\n\r\nrm -rf \"${HOME}\/nitrox\"\r\nmkdir -p \"${HOME}\/nitrox\"\r\ncd \"${HOME}\/nitrox\"\r\ncurl -fsSL \"${DOWNLOAD_URL}\" -o Nitrox.zip\r\nunzip -q Nitrox.zip\r\nrm Nitrox.zip\r\nif [ \"$(find . -mindepth 1 -maxdepth 1 | wc -l)\" = \"1\" ]; then\r\n WRAPPER=$(find . -mindepth 1 -maxdepth 1 -type d)\r\n if [ -n \"${WRAPPER}\" ]; then\r\n mv \"${WRAPPER}\"\/* \"${WRAPPER}\"\/.[!.]* . 2>\/dev\/null || true\r\n rmdir \"${WRAPPER}\"\r\n fi\r\nfi\r\nchmod +x \"${HOME}\/nitrox\/Nitrox.Server.Subnautica\" 2>\/dev\/null || true\r\n\r\nmkdir -p \"${HOME}\/NitroxData\/saves\/nitrox_world\"\r\nCFG=\"${HOME}\/NitroxData\/saves\/nitrox_world\/server.cfg\"\r\nif [ ! -e \"${CFG}\" ]; then\r\n {\r\n echo \"CreateFullEntityCache=False\"\r\n echo \"Seed=\"\r\n echo \"ServerPort=11000\"\r\n echo \"SaveInterval=120000\"\r\n echo \"PostSaveCommandPath=\"\r\n echo \"MaxConnections=${MAX_CONNECTIONS}\"\r\n echo \"InitialSyncTimeout=300000\"\r\n echo \"DisableConsole=${DISABLE_CONSOLE}\"\r\n echo \"DisableAutoSave=False\"\r\n echo \"SaveName=${SAVE_NAME}\"\r\n echo \"ServerPassword=\"\r\n echo \"AdminPassword=PleaseChangeMe\"\r\n echo \"GameMode=SURVIVAL\"\r\n echo \"SerializerMode=JSON\"\r\n echo \"DefaultPlayerPerm=${DEFAULT_PERMISSION}\"\r\n echo \"DefaultOxygenValue=45\"\r\n echo \"DefaultMaxOxygenValue=45\"\r\n echo \"DefaultHealthValue=80\"\r\n echo \"DefaultHungerValue=50.5\"\r\n echo \"DefaultThirstValue=90.5\"\r\n echo \"DefaultInfectionValue=0.1\"\r\n echo \"AutoPortForward=False\"\r\n } > \"${CFG}\"\r\nfi", "container": "ghcr.io\/ptero-eggs\/installers:debian", "entrypoint": "bash" } }, "variables": [ { - "name": "APP ID", + "name": "Steam App ID", "description": "The ID corresponding to the game to download.", "env_variable": "APPID", "default_value": "264710", @@ -41,8 +41,8 @@ "field_type": "text" }, { - "name": "Steam-Username", - "description": "Your Steam-Account SUername", + "name": "Steam Username", + "description": "Your Steam account username", "env_variable": "STEAM_USERNAME", "default_value": "", "user_viewable": true, @@ -51,8 +51,8 @@ "field_type": "text" }, { - "name": "Steam-Password", - "description": "Your Steam Account Password", + "name": "Steam Password", + "description": "Your Steam account password", "env_variable": "STEAM_PASSWORD", "default_value": "", "user_viewable": true, @@ -61,13 +61,13 @@ "field_type": "text" }, { - "name": "Steam-GuardCode", - "description": "Yout Steam Guard Code", + "name": "Steam Guard Code", + "description": "Your Steam Guard Code", "env_variable": "STEAM_GUARDCODE", "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:6", + "rules": "nullable|string|max:8", "field_type": "text" }, { @@ -82,7 +82,7 @@ }, { "name": "Auto Save Interval", - "description": "Time between auto saves specified in milliseconds", + "description": "Time between auto saves specified in milliseconds. Default is 2 minutes (120000ms).", "env_variable": "SAVE_INTERVAL", "default_value": "120000", "user_viewable": true, @@ -104,9 +104,9 @@ "name": "Save Name", "description": "The save name for the server.", "env_variable": "SAVE_NAME", - "default_value": "world", + "default_value": "nitrox_world", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "alpha_dash|between:1,100", "field_type": "text" }, @@ -132,7 +132,7 @@ }, { "name": "Game Mode", - "description": "Game Mode setting: SURVIVAL, FREEDOM, HARDCORE, CREATIVE", + "description": "Subnautica game mode. SURVIVAL = manage food\/water\/oxygen. FREEDOM = no survival meters. HARDCORE = permadeath survival. CREATIVE = unlimited resources, no damage.", "env_variable": "SERVER_MODE", "default_value": "SURVIVAL", "user_viewable": true, @@ -161,23 +161,33 @@ "field_type": "text" }, { - "name": "Subnautica Installation Path", - "description": "Leave this as is", - "env_variable": "SUBNAUTICA_INSTALLATION_PATH", - "default_value": "\/home\/container\/subnautica", + "name": "Max Players", + "description": "Maximum number of players that can be connected simultaneously. Nitrox alpha is generally tested up to ~10; higher counts work but stability varies. (200 max)", + "env_variable": "MAX_CONNECTIONS", + "default_value": "10", "user_viewable": true, - "user_editable": false, - "rules": "required|string", + "user_editable": true, + "rules": "required|numeric|between:1,200", "field_type": "text" }, { - "name": "XDG Config Home", - "description": "Leave this as is", - "env_variable": "XDG_CONFIG_HOME", - "default_value": "\/home\/container\/.config", + "name": "Default Player Permissions", + "description": "Permission level new players are assigned when they first join. NONE = guest (no commands). PLAYER = standard. MODERATOR = can kick. ADMIN = full server control. CONSOLE = reserved for server console.", + "env_variable": "DEFAULT_PERMISSION", + "default_value": "PLAYER", "user_viewable": true, - "user_editable": false, - "rules": "required|string", + "user_editable": true, + "rules": "required|string|in:NONE,PLAYER,MODERATOR,ADMIN,CONSOLE", + "field_type": "text" + }, + { + "name": "Disable In-Game Console", + "description": "Set to True to disable the in-game developer console for connected players. Leave False for normal use.", + "env_variable": "DISABLE_CONSOLE", + "default_value": "False", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:True,False", "field_type": "text" } ]