Difference between revisions of "Gamedata Updating (SourceMod)"

From AlliedModders Wiki
Jump to: navigation, search
(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...)
 
m
Line 13: Line 13:
 
**The default value is "no". A value of "yes" will block the Auto Updater.
 
**The default value is "no". A value of "yes" will block the Auto Updater.
 
*ForceRestartAfterUpdate
 
*ForceRestartAfterUpdate
**Enables or disables automatic restarting of the server after a successful update.
+
**Enables or disables automatic restarting of SourceMod after a gamedata update.
**The default value is "no". A value of "yes" will let the server automatically restart.
+
**The default value is "no". A value of "yes" will make SourceMod reload itself and refresh the map.
 
*AutoUpdateServer
 
*AutoUpdateServer
**Sets the server to connect to for auotmatic gamedata updates.
+
**Sets the server to connect to for automatic gamedata updates.
**Default is "hayate.alliedmods.net"
+
**Default is "smupdate.alliedmods.net"
 
*AutoUpdatePort
 
*AutoUpdatePort
 
**Sets the port to connect to on the AutoUpdateServer server
 
**Sets the port to connect to on the AutoUpdateServer server
 
**Default is 6500
 
**Default is 6500
  
=Developers=
+
==Details==
  
The daemon is a c++ linux console app that listens for incoming gamedata requests and replies with any changed files.
+
Gamedata files are only replaced if their contents are recognized.  For example, if you make custom changes to your files, they will not be replaced even if a newer version is available.  For this reason it is recommended that you submit any changes upstream through the [https://bugs.alliedmods.net/ bug tracker].
The default listening port is 6500.
 
SourceCode is available from mercurial under tools/daemon.
 
  
==File Layout==
+
Gamedata files from snapshots are not tracked.  Only gamedata files from official releases will be automatically updated.  This means if you are using a snapshot, your files may not receive updates.
  
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==
+
=Developers=
 
 
*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
+
See tools/gamedata_md5 and tools/daemon for the code that analyzes and handles update requests for gamedata files.  Please report any bugs [https://bugs.alliedmods.net/ at the usual place].
*Run another test with the recent gamedata changes
 
*Add structs gamedata file to the daemon
 

Revision as of 20:07, 28 December 2008

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 SourceMod after a gamedata update.
    • The default value is "no". A value of "yes" will make SourceMod reload itself and refresh the map.
  • AutoUpdateServer
    • Sets the server to connect to for automatic gamedata updates.
    • Default is "smupdate.alliedmods.net"
  • AutoUpdatePort
    • Sets the port to connect to on the AutoUpdateServer server
    • Default is 6500

Details

Gamedata files are only replaced if their contents are recognized. For example, if you make custom changes to your files, they will not be replaced even if a newer version is available. For this reason it is recommended that you submit any changes upstream through the bug tracker.

Gamedata files from snapshots are not tracked. Only gamedata files from official releases will be automatically updated. This means if you are using a snapshot, your files may not receive updates.


Developers

See tools/gamedata_md5 and tools/daemon for the code that analyzes and handles update requests for gamedata files. Please report any bugs at the usual place.