Gamedata Updating (SourceMod)

From AlliedModders Wiki
Revision as of 00:48, 11 October 2008 by PRED* (talk | contribs) (New page: We now have a gamedata auto-updating feature in SourceMod (for gamedata files only). When your server starts, SourceMod will contact AlliedModders to check for gamedata file updates. Allie...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

We now have a gamedata auto-updating feature in SourceMod (for gamedata files only). When your server starts, SourceMod will contact AlliedModders to check for gamedata file updates. AlliedModders will send back new files if they are available.

As part of this effort, if your server crashes on load, gamedata files will become locked, and no "hacky" functionality will be available. The motivation behind this is to give your server time to update safely in case plugins are trying to run functions that are doomed to crash.

Users

Configuration

core.cfg has four new settings to control the autoupdaters functionality

  • DisableAutoUpdate
    • Enables or Disables SourceMod's automatic gamedata updating.
    • The default value is "no". A value of "yes" will block the Auto Updater.
  • ForceRestartAfterUpdate
    • Enables or disables automatic restarting of the server after a successful update.
    • The default value is "no". A value of "yes" will let the server automatically restart.
  • AutoUpdateServer
    • Sets the server to connect to for auotmatic gamedata updates.
    • Default is "hayate.alliedmods.net"
  • AutoUpdatePort
    • Sets the port to connect to on the AutoUpdateServer server
    • Default is 6500

Developers

The daemon is a c++ linux console app that listens for incoming gamedata requests and replies with any changed files. The default listening port is 6500. SourceCode is available from mercurial under tools/daemon.

File Layout

All runtime files used are stored in a subdirectory of the daemon executable called 'md5'. The list of recognised files is hard coded into the program. Each recognised gamedata file must also have a matching information file with an identical name bar using *.sums for the extension instead of *.txt. This file contains the current md5 sum on the first line and the name of the gamedata file it relates to on the second line. All known md5 sums for a file are created as symlinks pointing to the sums file.

Updating Daemon

  • Overwrite the gamedata file with the new one
  • Edit the sums file to have the new md5 sum - There is a special calculator for this in tools/gamedata_md5
  • Add a symlink from the sum to the sums file
  • There is a script called 'updateGameData.sh' which can do the second part of this for you

./updateGameData.sh <filename with no extension>

Protocol

Should I doc this? Can't find the bug report where it was..

ToDo

  • Convert daemon to a proper system process/daemon and remove it from my user
  • Run another test with the recent gamedata changes
  • Add structs gamedata file to the daemon