Hosting Guides

Sunkenland Co-Op Server Configuration via Pterodactyl

8 min readUbuntu 24.04PterodactylUnity
Once your server is online, jump to the Sunkenland command and config reference.

Sunkenland is a water based Unity survival title with a small but extremely active modding community. The dedicated server itself is straightforward, but the gameplay levers that operators actually care about (raid frequency, faction aggression, world seed, day length) are buried in two config files and a launch argument string. Pterodactyl is the right surface for this: lift those levers out of the config and expose them as panel startup variables so operators can change a raid timer through a textbox instead of an SFTP round trip.

Prerequisites

  • Ubuntu 24.04 with Pterodactyl panel and at least one Wings node.
  • The community Sunkenland egg, or the willingness to author one from the steamcmd egg template.
  • 6 GB RAM, 4 vCPU, 10 GB disk for a single instance.
  • UDP 27015 and UDP 27016 open and routed to the container.

Step 1: Author the Egg Startup Block

Open the Sunkenland egg in Nests, Survival and replace the startup command with a parameterized version that reads from environment variables. Pterodactyl will surface every {{VARIABLE}} placeholder as an editable field on the server settings page.

egg, Startup Command
./SunkenlandServer.x86_64 \
-batchmode -nographics \
-name "{{SERVER_NAME}}" \
-slots {{MAX_PLAYERS}} \
-seed {{WORLD_SEED}} \
-raid_interval {{RAID_INTERVAL_MIN}} \
-faction_aggression {{FACTION_AGGRESSION}} \
-port {{SERVER_PORT}} \
-query_port {{QUERY_PORT}}

Step 2: Register the Panel Variables

egg, Variables
SERVER_NAME | string | required | "Vardoran Reef"
MAX_PLAYERS | int 2-8 | required | 6
WORLD_SEED | int | required | 12345678
RAID_INTERVAL_MIN | int | required | 90 # minutes between raids
FACTION_AGGRESSION | float | required | 1.0 # 0.5 calm, 2.0 brutal
SERVER_PORT | int | required | 27015
QUERY_PORT | int | required | 27016

Step 3: Create the Server

Create a new server using the egg, allocate UDP 27015 as the primary port, attach 6 GB of memory, and fill in the variables on the settings page. The operator now has a complete control surface without ever opening a config file.

Step 4: Verify First Boot

pterodactyl console
[info] Sunkenland dedicated server starting
[info] Seed: 12345678
[info] Slots: 6
[info] Raid interval: 90m
[info] Listening on 0.0.0.0:27015 (query 27016)
[info] Server registered: Vardoran Reef

Step 5: Persistent Config Overrides

Anything not exposed as a launch argument lives in server_config.json under the world directory. Mount the file outside of the launch args so it survives variable changes.

worlds/Vardoran Reef/server_config.json
{
"dayLengthMinutes": 30,
"nightLengthMinutes": 15,
"lootMultiplier": 1.25,
"buildingDecayMultiplier": 0.5,
"pvpEnabled": false,
"friendlyFire": false,
"autoSaveIntervalSeconds": 300
}

Step 6: Scheduled Backups

pterodactyl, Schedules
Schedule: every 4 hours
Task 1: Send Console Command -> save
Task 2: Wait 15s
Task 3: Backup -> include "worlds/", exclude "worlds/**/temp/*"

Performance and Tuning

  • Keep MAX_PLAYERS at 6 unless your host has high single thread clocks, the Unity physics step on water tiles is expensive.
  • Lower FACTION_AGGRESSION to 0.75 for casual servers, raise to 1.5 for hardcore. 2.0 makes the early game unplayable.
  • Drop buildingDecayMultiplier to 0.0 only for short term events, otherwise abandoned bases stay forever.

Conclusion

Exposing the meaningful Sunkenland gameplay levers as Pterodactyl startup variables turns the dedicated server from a fixed appliance into a per server tunable instance, without forcing operators to learn the file layout. The panel becomes the entire interface.