Skip to content

Releases

Mod 0.10.2 · Bot 0.17.1

Choose a tag to compare

@joaopmsilva joaopmsilva released this 13 Nov 00:23

🧩 Mod 0.10.2

  • Tidier settings.ini: the [Game] section is only written when you've set something in it, and /admin diagnostics only lists it then. Nothing changes on your server unless you used it, and if you did, your value is kept.

🤖 Bot 0.17.1

  • Fewer pinned cards by default: the extra download card is now opt-in. The command list and the link card are unchanged.
  • Includes 0.17.0's daily anonymous install count (turn it off with BOT_TELEMETRY=false, see the 0.17.0 notes).

🛠️ Also in this release

  • The installer (install.sh) checks your answers: world names of up to 16 characters, a valid port and real Discord user IDs. It no longer asks for max players, and Ctrl+C only skips the wait for the bot.
  • Mod builds track header changes, so a rebuild never links stale objects.

⬆️ Updating

Press Update now on the DM, or run /admin update. The bot restarts by itself; the new mod loads at your next server restart (or /server restart). Nothing in your .env needs changing.

Questions or bugs: /admin contact, or joaosilvajs on Discord. Enjoying it? ☕ Support me on Ko-fi

Mod 0.10.1 · Bot 0.17.0 · installer fixes

Choose a tag to compare

@joaopmsilva joaopmsilva released this 13 Nov 00:10

🛠️ Installer fixes

No bot or mod changes: installed servers have nothing to update, and you won't get an update DM for this one.

install.sh

  • Checks your answers: world names of up to 16 characters (the game cuts longer ones, and players couldn't find the world), a valid port, and real Discord user IDs (not your name).
  • No more max players question: the game's limit is 6 and isn't a setting.
  • --reconfigure keeps your world password unless you change it (- clears it).
  • Ctrl+C while waiting for the bot to join skips the wait and still shows the summary.
  • Runs fine from /root and when piped without a terminal; --help works offline.

Mod build

  • The Makefile now tracks headers, so changing one rebuilds everything that uses it, with no stale objects. The installer does one clean build to start fresh.

⬆️ Updating

Nothing to do. New installs get these fixes automatically:

curl -fsSLO https://raw.githubusercontent.com/joaopmsilva/RSDWServerAPI/main/install.sh && sudo bash install.sh

Questions or bugs: /admin contact, or joaosilvajs on Discord. Enjoying it? ☕ Support me on Ko-fi

Mod 0.10.1 · Bot 0.17.0

Choose a tag to compare

@joaopmsilva joaopmsilva released this 13 Nov 00:01

📊 Bot 0.17.0: counting servers

Once a day the bot now sends a small, anonymous "still running" ping, so I can see how many servers use this and which versions they're on. That tells me where to spend time.

What's sent, and nothing else:

  • a random id made on your machine (not tied to your server, Discord or anyone)
  • the bot, mod and game versions
  • the OS (like ubuntu-24.04) and Node's major version
  • MAX_PLAYERS and whether BOT_UPDATE_AUTO is on

No server names, no Discord info, no players, and no IP addresses are stored. The collector is open source in stats/.

Don't want it? Add BOT_TELEMETRY=false to the bot's .env and restart the bot.

🧩 Mod 0.10.1

Unchanged.

⬆️ Updating

Press Update now on the DM, or run /admin update. Nothing in your .env needs changing.

Questions or bugs: /admin contact, or joaosilvajs on Discord. Enjoying it? ☕ Support me on Ko-fi

Mod 0.10.1 · Bot 0.16.0

Choose a tag to compare

@joaopmsilva joaopmsilva released this 12 Nov 16:03

🚀 One command to a full server

New install.sh: a fresh Ubuntu or Debian box becomes a Dragonwilds server with the mod and the Discord bot, from a few questions (Player ID, server name, Discord bot token, your Discord ID).

curl -fsSLO https://raw.githubusercontent.com/joaopmsilva/RSDWServerAPI/main/install.sh && sudo bash install.sh

It handles:

  • packages and Node.js
  • steamcmd and the game server
  • building the mod
  • the bot and its systemd services
  • hourly backups and a daily update and restart
  • the firewall

Run it again any time to update. See the Quick start.

🤖 Bot 0.16.0

  • Makes its own channels: with no channels configured, the bot creates a category with #server-info, #server-status, #game-chat, #activity, #deaths, #bot-commands and #link-your-character as soon as it's invited. Existing setups are left as they are.
  • Crossplay invite code on the status board's How to join, only when crossplay is on.
  • No more false carry-over alerts after a restart: characters coming back with what the last save had (a restart rolls them back) no longer count as gains.
  • Shorter command list, with the admin commands moved to /help for admins and a one-time admin guide DM.
  • /admin contact to message the developer, also on the update DMs.

🧩 Mod 0.10.1

Unchanged. Each release now also carries a ready-made librsdwapi.so, built on glibc 2.28, so it loads on any Linux the game runs on.

⬆️ Updating

Press Update now on the DM, or run /admin update. Nothing in your .env needs changing. The new settings AUTO_CHANNELS and GUILD_ID only matter for new installs.

Questions or bugs: /admin contact, or joaosilvajs on Discord. Enjoying it? ☕ Buy me a coffee

Mod 0.10.1 · Bot 0.15.0

Choose a tag to compare

@joaopmsilva joaopmsilva released this 12 Nov 15:37

Discord bot 0.15.0 (mod 0.10.1, unchanged): the bot now updates itself, so this is the last update you need to install by hand.

⬆️ Updates from Discord

  • You'll get a DM when a new release is out. Every 6 hours the bot checks this repository's latest release against its own version and your running mod's. When either is behind, every admin in ADMIN_USER_IDS gets a DM with what changed and two buttons: Update now and Skip this version.
  • /admin update shows the same card whenever you want to check.
  • Update now:
    • Bot: downloads the release, checks the new code before swapping it in, keeps the current version in data/previous-bot/, installs packages if they changed, and restarts. Your .env and data/ are kept.
    • Mod: built from source when the server has make and g++ (as deploy/update-mod.sh does), otherwise the ready-made librsdwapi.so from the release is downloaded. It's swapped in safely and loads at the next server start; /server restart loads it now.
    • The game server is never restarted by an update.
  • Prefer it hands-off? Set BOT_UPDATE_AUTO=true and new releases install on their own, with a DM afterwards saying what was done.

New settings, all optional: BOT_UPDATE_CHECK, BOT_UPDATE_HOURS, BOT_UPDATE_AUTO, BOT_UPDATE_REPO, MOD_FILE (see CONFIG.md).

Note

The bot has to run under systemd (as in deploy/rsdw-bot.service) so it comes back up after updating itself. A bot running from a git checkout won't replace its own files; git pull instead.

Install this one

  • Bot: run deploy/upload.ps1 -Bot. From here on, updates come to you on Discord.
  • Mod: unchanged since 0.10.1; librsdwapi.so is attached again for convenience.

Mod 0.10.1 · Bot 0.14.1

Choose a tag to compare

@joaopmsilva joaopmsilva released this 12 Nov 15:31

Mod 0.10.1 and Discord bot 0.14.1: a fix for the mod switching itself off after a game update, and real item names in the bot.

Important

On the latest game build the mod could start with chat, kick, give, deaths, kills and penguins all off. Update the mod if /api/diagnostics shows gameThread · no native server RPC available to pump from.

Mod

  • Keeps looking for its game-thread hook. The engine can report ready before PlayerController's functions have loaded, and the mod only looked for its hook once. When that look failed, it stopped starting up, so player events, deaths, kills, penguins and chat stayed off until the next restart. It now retries for up to five minutes. If the hook never turns up, only kick and give are disabled; everything else runs.

Bot

  • Item names come from the game. The bot ships with the in-game name of every item (read from the game 1.0.2 files), so /admin give and /item find items by the name players see. Vestiges show what they teach: "Commemorative Coin (Vestige · teaches Amulet of Glory)". Items that share a name get a short detail to tell them apart. Carry-over alerts use the same names. Items added in later patches fall back to a name worked out from their id.

Install or update

  • Mod: download librsdwapi.so below, or build it on the VPS with deploy/upload.ps1 -Mod. It loads at the next server start.
  • Bot: run deploy/upload.ps1 -Bot.

Mod 0.10.0 · Bot 0.14.0

Choose a tag to compare

@joaopmsilva joaopmsilva released this 10 Nov 14:26
0956540

Mod 0.10.0 and Discord bot 0.14.0, for game patch 1.0.2: a penguin hunt leaderboard, health and deaths working again, crash fixes, and everything since 0.7.3.

Important

Patch 1.0.2 broke health and death tracking in older mod builds. Update the mod to get them back.

For players

  • 🐧 /leaderboard penguins: everyone ranked by Killer Gentoo Penguins found, with this week's haul. Each penguin counts once per character. /me shows your own count.
  • Death messages say what killed you: "killed by a Giant Rat", and a fall off the map reads "fell out of the world".
  • Quest completions are posted next to level-ups.
  • /quests follows the wiki's quest list: done out of the total for main and side quests, what's in progress, where the next main quest starts, and what's left by region in story order. Umbral Sands quests and A Reel Downer are included.
  • /levels, /me and the leaderboards count quests from the same wiki list.
  • Item names in /item and alerts come from the wiki ("Garou Chit", not "Garou").
  • Longer linked-chest range: builds that use far chests are no longer refused (see LinkedStorageRadius below).

For admins

  • /admin performance: the server's real tick rate and longest stalls over the last 30 minutes with their likely cause, CPU per thread, VPS load and memory, and player pings.
  • Carry-over alerts: admins get a DM when a character comes back with items, XP or quests it didn't earn on this server. Tune with CARRYOVER_MIN_ITEMS and CARRYOVER_MIN_XP.
  • The players' client-mod installer can be pinned in the commands channel (CLIENT_MOD_ZIP).
  • The in-game clock is gone from the status board.

Mod

  • 1.0.2: health, the skill component and attribute arrays are looked up by name, with updated SDK offsets as the fallback.
  • Penguins: reads each penguin's CollectedByPlayerIds every 10 s and sends a penguin event per new (penguin, character) pair.
  • Crash fixes: a use-after-free in the game-thread job queue (the cause of the recent crashes), a safer chat hook, and vtable pages keep their own protection. The mod no longer starts inside Sentry's crash handler.
  • Lighter on the server: one player scan per tick shared by everything (TickSeconds, default 3), cached world pointer, faster memory checks. The mod's thread is named rsdwapi.
  • [Game] LinkedStorageRadius in settings.ini is applied on start. The Linux server doesn't read UserGame.ini, so this is the only way to raise it.
  • Death events carry their cause. Players report inventory and personal chest; leave and the new arrive events carry what a character left or came back with.
  • crash.log records more about the crash.

Install or update

  • Mod: download librsdwapi.so below, or build it on the VPS with deploy/upload.ps1 -Mod. It loads at the next server start.
  • Bot: run deploy/upload.ps1 -Bot.

Mod 0.7.3 (kills fixed)

Choose a tag to compare

@joaopmsilva joaopmsilva released this 28 Oct 11:51

Kill tracking now works.

  • Fixed: kills weren't counted. The game handles a creature's death in its own code, which skips the function the mod was hooking. The mod now watches for creatures that have just died and reads who killed them, following spells and arrows back to the player. Each kill is counted once.
  • Safety: this method only reads the game's memory and never calls game functions.

Kills count from the moment this version is running. The bot is unchanged (0.9.0); /kills and /leaderboard kills show the results.

Mod 0.7.2 (crash fix)

Choose a tag to compare

@joaopmsilva joaopmsilva released this 28 Oct 11:43

Use this instead of 0.7.0. Mod 0.7.0 crashes the server as soon as a player is in game.

  • Fixed: reading quest, perk and creature names called a game function with an argument it could not pass, which crashed the server. That call is off. Names come from the bot matching against the wiki.
  • Everything else in 0.7.0 is unchanged: kill tracking, creature types, and quest and journal totals.

The bot is unchanged (0.9.0).

Mod 0.7.0 · Bot 0.9.0

Choose a tag to compare

@joaopmsilva joaopmsilva released this 28 Oct 11:36

Warning

This mod build crashes the server when a player joins. Use 0.7.2 instead.

Mod 0.7.0 and Discord bot 0.9.0: creature kills, cleaner leaderboards and a roomier status board.

For players

  • /kills [player]: creatures killed today, this week and of all time, plus their most-killed creatures. With no name it shows the kill leaderboard. Creature names match the wiki's monster list.
  • /leaderboard sub-commands: total, skill <skill>, quests and kills. Quests are no longer mixed into the skill list.
  • Rank badges: places 4 to 10 show 4️⃣ to 🔟 so they line up with 🥇🥈🥉 on every board.
  • /me: now includes your kills.
  • Status board: more space between sections, and the World field is gone.

Mod

  • Hooks the game's own "creature killed" function (ProgressComponent.OnAIKilled). Each kill a player makes, including with a spell or arrow, goes out as a kill event with the creature's in-game name and whether it's a boss.
  • /api/players adds creatureTypes: how many kinds of creature each player has killed.
  • /api/diagnostics adds a killHook check.

Kills are counted from the moment this mod is running, so earlier kills aren't included.

Install or update

  • Mod: download librsdwapi.so below, or build it on the VPS with deploy/upload.ps1 -Mod.
  • Bot: run deploy/upload.ps1 -Bot.