Skip to content

feat: Add Runescape Dragonwilds dedicated server egg#507

Open
BradSainty wants to merge 6 commits into
pterodactyl:mainfrom
BradSainty:feature/runescape-dragonwilds-egg
Open

feat: Add Runescape Dragonwilds dedicated server egg#507
BradSainty wants to merge 6 commits into
pterodactyl:mainfrom
BradSainty:feature/runescape-dragonwilds-egg

Conversation

@BradSainty

Copy link
Copy Markdown

Description

This PR adds a fully working implementation aligned with current repository standards for Runescape: Dragonwilds.

Addressing issue #495

Checklist for all submissions

  • Have you followed the guidelines in our Contributing document?
  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?
    • My PR follows repository standards.
  • Have you tested and reviewed your changes with confidence that everything works?
  • Did you branch your changes and PR from that branch and not from your master branch?
    • If not, why?:
  • You verify that the start command applied does not use a shell script
    • If some script is needed then it is part of a current yolk or a PR to add one
  • The egg was exported from the panel

New egg Submissions

  1. Does your submission pass tests (server is connectable)?
  2. Does your egg use a custom docker image?
    • Have you tried to use a generic image?
    • Did you PR the necessary changes to make it work?
  3. Have you added the egg to the main README.md and any other README files in subdirectories of the egg according to the alphabetical order?
  4. Have you added a unique README.md for the egg you are adding according to the alphabetical order?
  5. You verify that the start command applied does not use a shell script
    • If some script is needed then it is part of a current yolk or a PR to add one
  6. The egg was exported from the panel

Comment thread runescape_dragonwilds/egg-runescape-dragonwilds.json Outdated
Comment thread runescape_dragonwilds/egg-runescape-dragonwilds.json Outdated
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\n# SteamCMD Base Installation Script\n\napt -y update\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\n\n# Variables\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\n echo -e \"Using anonymous Steam login\"\n STEAM_USER=anonymous\n STEAM_PASS=\"\"\n STEAM_AUTH=\"\"\nfi\n\ncd \/tmp\nmkdir -p \/mnt\/server\/steamcmd\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\n\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\nmkdir -p \/mnt\/server\/steamapps\ncd \/mnt\/server\/steamcmd\n\nexport HOME=\/mnt\/server\n\n# Install server\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} validate +quit\n\n# Fix steam libraries\nmkdir -p \/mnt\/server\/.steam\/sdk32\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\n\nmkdir -p \/mnt\/server\/.steam\/sdk64\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\n\n# Permissions for Sentry Crash Handler\nchmod +x \/mnt\/server\/RSDragonwilds\/Plugins\/Developer\/Sentry\/Binaries\/Linux\/crashpad_handler 2>\/dev\/null || true\n\n# Seed DedicatedServer.ini with correct headers to ensure regex find works\nmkdir -p \/mnt\/server\/RSDragonwilds\/Saved\/Config\/LinuxServer\ncat <<'EOF' > \/mnt\/server\/RSDragonwilds\/Saved\/Config\/LinuxServer\/DedicatedServer.ini\n;METADATA=(Diff=true, UseCommands=true)\n[SectionsToSave]\nbCanSaveAllSections=true\n\n[\/Script\/Dominion.DedicatedServerSettings]\nAdminPassword=\nOwnerId=\nWorldPassword=\nServerName=\nDefaultWorldName=\nServerGuid=\nEOF\n\necho \"-----------------------------------------\"\necho \"Installation completed\"\necho \"-----------------------------------------\"",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ServerGuid=. While I am not sure if a persistent guid is required or helpful, this will regenerate the server guid every time the server is rebooted

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The install script should only run once at creation time, the ServerGuid is generated once by the server and stored in the .ini file.

"ghcr.io\/ptero-eggs\/steamcmd:debian": "ghcr.io\/ptero-eggs\/steamcmd:debian"
},
"file_denylist": [],
"startup": ".\/RSDragonwilds\/Binaries\/Linux\/RSDragonwildsServer-Linux-Shipping RSDragonwilds -Port={{SERVER_PORT}} -QueryPort={{DV_QUERY_PORT}} -MultiHome={{SERVER_IP}} -ini:DedicatedServer:[\/Script\/Dominion.DedicatedServerSettings]:OwnerId={{DV_OWNER_ID}} -ini:DedicatedServer:[\/Script\/Dominion.DedicatedServerSettings]:AdminPassword={{DV_ADMIN_PASSWORD}} -ini:DedicatedServer:[\/Script\/Dominion.DedicatedServerSettings]:ServerName=\"{{DV_SERVER_NAME}}\" -ini:DedicatedServer:[\/Script\/Dominion.DedicatedServerSettings]:DefaultWorldName=\"{{DV_WORLD_NAME}}\" -ini:DedicatedServer:[\/Script\/Dominion.DedicatedServerSettings]:WorldPassword=\"{{DV_WORLD_PASSWORD}}\" -ini:Game:[\/Script\/Engine.GameSession]:MaxPlayers={{DV_MAX_PLAYERS}} {{EXTRA_ARGS}}",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love the use of -ini here!

Comment thread runescape_dragonwilds/egg-runescape-dragonwilds.json Outdated
@BradSainty BradSainty requested a review from iShotFT April 5, 2026 23:57
@ralnivar

ralnivar commented Apr 8, 2026

Copy link
Copy Markdown

I hade some issues with MultiHome where it tries to bind using the host IP which results in permission error in my network setup, might be usefull adding a note for that.

Unrelated but also requires AVX instruction support on the CPU, took me way longer then id like to admit to pin that down :)

@BradSainty

Copy link
Copy Markdown
Author

I hade some issues with MultiHome where it tries to bind using the host IP which results in permission error in my network setup, might be usefull adding a note for that.

Unrelated but also requires AVX instruction support on the CPU, took me way longer then id like to admit to pin that down :)

Good points, MultiHome shouldn't be required as Pterodactyl manages the IP with the allocation.

Added a note regarding AVX support.

@primulas

primulas commented May 20, 2026

Copy link
Copy Markdown

Pretty green to doing anything but downloading things from git repos. Let me know if i am doing it wrong. :D

My DedicatedServer.ini file does not seem to be populating my settings from startup tab.

;METADATA=(Diff=true, UseCommands=true)
[SectionsToSave]
bCanSaveAllSections=true

[/Script/Dominion.DedicatedServerSettings]
ServerGuid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AdminList=(UserId=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,UserName="xxxxxx",LastAdminPassword="xxxxxxxxxx")

As a result the .sav file (a friend's local.sav) is not being started with my Owner ID GUID or any of the other startup settings outside of the ones above. The server actually runs relatively fine, but I think the owner mismatch is causing some minor wonkiness; in the console it lists my friends username(not his actual GUID) when saving the world.

EDIT: Think i tracked this down to a Redis/Laravel issue, caused by a time change. After clearing the panel cache and restarting wings, it seems to be properly pulling from the database now.

@danny6167

Copy link
Copy Markdown
Member

Is there a reason for the DV_ prefix on the variable names? Could we drop that to remain inline with the existing style.

@BradSainty BradSainty force-pushed the feature/runescape-dragonwilds-egg branch from 3e35baf to 18dab69 Compare June 24, 2026 00:26
@BradSainty

Copy link
Copy Markdown
Author

Is there a reason for the DV_ prefix on the variable names? Could we drop that to remain inline with the existing style.

No strong reason. I agree it doesn't align with existing conventions, this has now been updated.

Also rebased the branch onto the latest commits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants