Skip to content

feat(rsdwserver): add RuneScape: Dragonwilds server - #4921

Open
JSaterdalen wants to merge 4 commits into
GameServerManagers:developfrom
JSaterdalen:feat/rsdwserver
Open

feat(rsdwserver): add RuneScape: Dragonwilds server#4921
JSaterdalen wants to merge 4 commits into
GameServerManagers:developfrom
JSaterdalen:feat/rsdwserver

Conversation

@JSaterdalen

Copy link
Copy Markdown

Description

Adds dedicated server support for RuneScape: Dragonwilds (Steam appid 4019830, native Linux 64-bit binary).

This PR supersedes #4893. @yourfate invited completion in their comment ("If anyone wants to complete this, feel free, I probably won't have time to work on this for a few months."); this branch picks up that work, finishes the open items, and has been tested on my own server.

differences from #4893:

  • Uses shortname rsdw. Happy to revert if maintainers prefer rd.
  • Adds fn_info_game_rsdw parsing the in-game DedicatedServer.ini for ServerName, OwnerId, WorldPassword, AdminPassword, DefaultWorldName (verified against the actual [/Script/Dominion.DedicatedServerSettings] section produced by the running server).
  • Adds fn_info_messages_rsdw with the port table plus a "Game Settings" details block surfacing world name and owner ID.
  • Adds rsdw to info_messages.sh's ports_edit_array so details shows the real INI path instead of UNKNOWN.
  • Adds 2 GB minimum RAM check in check_system_requirements.sh (per official docs: 2 GB base + 1 GB per player).
  • Uses Saved/Config/LinuxServer/ (the wiki says Linux/, but the server actually used LinuxServer/).
  • Skips per-distro dep rows. UE5 dedicated servers installed via SteamCMD need no extra packages.

Follow-up (separate PR): a Game-Server-Configs template (rsdw/DedicatedServer.ini with SERVERNAME/ADMINPASSWORD placeholders) plus an install_config.sh block to seed the INI on first install.

Fixes #4891.

Type of change

  • Bug fix (a change which fixes an issue).
  • New feature (a change which adds functionality).
  • New Server (new server added).
  • Refactor (restructures existing code).
  • Comment update (typo, spelling, explanation, examples, etc).

Testing

  • Commands/tests run:
    • ./linuxgsm.sh rsdwserver
    • ./rsdwserver auto-install
    • ./rsdwserver start
    • ./rsdwserver details
    • ./rsdwserver stop
    • ./rsdwserver postdetails
    • shellcheck --severity=warning on info_game.sh, info_messages.sh, check_system_requirements.sh, and the new _default.cfg
  • Result: All commands successful. INI parsing matches the actual section header [/Script/Dominion.DedicatedServerSettings] and the keys the server writes on first launch.
  • Environment used (distro/version): Debian GNU/Linux 12 (bookworm), x86_64, glibc 2.36, kernel 6.8.12 (LXC). Target distro per serverlist.csv is ubuntu-24.04; Ubuntu 24.04 verification still pending.

Risk and rollback

  • Risk level: low
  • Rollback plan: revert the three commits on this branch

Breaking changes

  • No breaking changes.
  • Breaking changes included (describe below).

Documentation impact

  • No documentation update required.
  • User documentation update required.
  • Developer documentation update required.

A new page under LinuxGSM-Docs/game-servers/ for rsdwserver should be added once this lands. Happy to open the docs PR as a follow-up.

Checklist

PR will not be merged until all steps are complete.

  • This pull request links to an issue.
  • This pull request uses the develop branch as its base.
  • This pull request subject follows the Conventional Commits standard.
  • This code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have provided a detailed enough description of this PR.

Documentation

If documentation does need updating either update it by creating a PR (preferred) or request a documentation update.

@RyanKC4

RyanKC4 commented Jun 22, 2026

Copy link
Copy Markdown

Test Results for RSDW GSM Server

Environment

  • OS: Ubuntu Server 24.04 (Proxmox LXC container, unprivileged)
  • LinuxGSM Version: 26.1.0

Connection Method

  • Direct Connect (Default port 7777)

Tests

  • Basic Game Server Install: Success ✅️
  • Server Start (Default options with changed servername value): Success ✅️
  • Connectivity: Success via Direct Connect ✅️
  • Able to play in the server: Success ✅️

⚠️ Notes

  • Server doesn't fully start until OwnerId is set in serverfiles/RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini (OwnerId is found in in-game settings)

@RyanKC4

RyanKC4 commented Jun 22, 2026

Copy link
Copy Markdown

Seeing as you were not able to test Ubuntu 24.04, I went ahead and did a basic test for you. 😃

Copilot AI lite review requested due to automatic review settings September 1, 2026 19:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds LinuxGSM dedicated server support for RuneScape: Dragonwilds (rsdwserver), including default configuration, server listing, and enhanced details output by parsing DedicatedServer.ini.

Changes:

  • Added new rsdwserver default config (appid, directories, Unreal5 settings, start parameters).
  • Added rsdw to serverlist.csv and implemented info_game / info_messages handlers to parse/display INI-backed settings.
  • Added a 2 GB minimum RAM requirement for rsdw.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
lgsm/modules/info_messages.sh Adds rsdw port/config display support and a new rsdw details block.
lgsm/modules/info_game.sh Adds INI parsing for DedicatedServer.ini (server/world settings) for rsdw.
lgsm/modules/check_system_requirements.sh Adds rsdw minimum RAM requirement.
lgsm/data/serverlist.csv Registers rsdwserver in the server list.
lgsm/config-default/config-lgsm/rsdwserver/_default.cfg Introduces default configuration for the new server.
Suppressed comments (1)

lgsm/modules/info_messages.sh:734

  • fn_info_messages_ports_edit is intended to show users where to change the port. For rsdw, the port is configured via LinuxGSM’s port variable and passed as -Port=${port} (see rsdwserver/_default.cfg), not via DedicatedServer.ini. Adding rsdw to the “edit in config file” list makes the Ports section point at DedicatedServer.ini, which is misleading for port changes. Move rsdw to the list that points at ${configdirserver} instead.
	startparameterslocation="${red}UNKNOWN${default}"
	# engines/games that require editing in the config file.
	local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "ct" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rsdw" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "xnt" "wurm")
	for port_edit in "${ports_edit_array[@]}"; do
		if [ "${shortname}" == "ut3" ]; then
			startparameterslocation="${servercfgdir}/UTWeb.ini"
		elif [ "${shortname}" == "kf2" ]; then
			startparameterslocation="${servercfgdir}/LinuxServer-KFEngine.ini\n${servercfgdir}/KFWeb.ini"
		elif [ "${engine}" == "${port_edit}" ] || [ "${gamename}" == "${port_edit}" ] || [ "${shortname}" == "${port_edit}" ]; then
			startparameterslocation="${servercfgfullpath}"
		fi
	done
	# engines/games that require editing the start parameters.
	local ports_edit_array=("av" "ck" "col" "cs2" "fctr" "goldsrc" "hcu" "hw" "iw3.0" "ioquake3" "pw" "qfusion" "rust" "scpsl" "scpslsm" "sf" "sol" "spark" "source" "unreal4" "arma3" "dayz" "unt" "vh")
	for port_edit in "${ports_edit_array[@]}"; do

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread lgsm/modules/info_game.sh
Comment on lines +1807 to +1817
fn_info_game_rsdw() {
if [ -f "${servercfgfullpath}" ]; then
fn_info_game_ini "adminpassword" "AdminPassword"
fn_info_game_ini "ownerid" "OwnerId"
fn_info_game_ini "servername" "ServerName"
fn_info_game_ini "serverpassword" "WorldPassword"
fn_info_game_ini "worldname" "DefaultWorldName"
fi
adminpassword="${adminpassword:-"NOT SET"}"
ownerid="${ownerid:-"NOT SET"}"
port="${port:-"0"}"
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.

3 participants