Difference between revisions of "SourceMod 1.1.0 Release Notes"

From AlliedModders Wiki
Jump to: navigation, search
m
 
(33 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Map Management Changes=
+
__FORCETOC__
 +
SourceMod 1.1 is a major update, containing many features, fixes, and improvements.  If you need help upgrading, see [[Upgrading SourceMod]].
 +
 
 +
*'''This release DOES HAVE configuration changes.'''
 +
*'''This release DOES NOT break compatibility.'''
 +
<br />
 +
=Plugin Changes=
 +
 
 +
==Map Management Changes==
 
SourceMod's map management plugins have gone through huge overhauls to address many community requested features and bugs.
 
SourceMod's map management plugins have gone through huge overhauls to address many community requested features and bugs.
  
Line 5: Line 13:
 
*<tt>nominations</tt> adds nominations into map votes.
 
*<tt>nominations</tt> adds nominations into map votes.
 
*<tt>rockthevote</tt> lets users start early map votes.
 
*<tt>rockthevote</tt> lets users start early map votes.
*<tt>nextmap</tt> automatically selects the next map and provides a "nextmap" chat trigger.
+
*<tt>nextmap</tt> automatically selects the next map.
 
*<tt>randomcycle</tt> randomly selects the next map.
 
*<tt>randomcycle</tt> randomly selects the next map.
  
 
To learn more about the new map management system, see [[Map_Management_Plugins_(SourceMod)|Map Management]].
 
To learn more about the new map management system, see [[Map_Management_Plugins_(SourceMod)|Map Management]].
 +
 +
==Reserved Slot Changes==
 +
Reserved slots has a new reserve type to stop kicking players once a certain number of admins have been reached.  There is also a new kick type cvar that selects which heuristic to kick a player by.  Available heuristics are ping time, connection time, and randomly.
 +
 +
For more information, see [[Reserved_Slots|Reserved Slots]].  Sections specific to SourceMod 1.1 or higher are marked as such.
 +
 +
 +
=Gamedata Updater=
 +
One major support problem with SourceMod is that when a mod updates, it is quite easy to break SourceMod's SDKTools.  SDKTools provides "hacky" scripting functionality for internal game features, like slaying players or creating entities. 
 +
 +
To fix this 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.
 +
 +
Only official gamedata files are updated.  All gamedata updating functionality can be disabled if you deem it a security risk.  For more information, see [[Gamedata_Updating_(SourceMod)|Gamedata Updating]].
  
  
Line 16: Line 39:
 
The Client Prefs extension can be configured to use SQLite (default) or MySQL.  All operations are threaded in order to not interrupt gameplay performance.
 
The Client Prefs extension can be configured to use SQLite (default) or MySQL.  All operations are threaded in order to not interrupt gameplay performance.
  
To read more, see [[Client_Preferences_API_(SourceMod)|SourceMod]].
+
To read more, see [[Client_Preferences_API_(SourceMod)|Client Preferences API]].
  
  
 
=JIT Changes=
 
=JIT Changes=
==User Changes==
+
The concept of "debug mode" has been removed.  Debug mode is now always on, and it has been reworked to not be a performance hit.  In addition functions are now compiled on-demand rather than all at once on load.   
The concept of "debug mode" has been removed.  Debug mode is now always on.  The runtime has been reworked so this is no longer a performance loss.
+
 
 +
The JIT has received major API changes and is now decoupled from SourceMod.  For more information, see [http://www.bailopan.net/blog/?p=199 this blog post].
 +
 
 +
 
 +
=Config Changes=
 +
*<tt>core.cfg</tt> has new options for tweaking gamedata updating.
 +
*<tt>databases.cfg</tt> now contains a default entry for client preferences.
 +
*<tt>languages.cfg</tt> now contains the new user-translated languages.
 +
*<tt>maplists.cfg</tt> has been extended for the new map management plugins.
 +
*<tt>plugin_settings.cfg</tt> no longer has debug settings.
  
This decision was made partially to clean up some very inefficient code, but it's also for support.  Users no longer have to manually toggle or reconfigure plugins before reporting errors.
 
  
The JIT (just-in-time compiler) is responsible for converting plugins to machine code for speedPreviously, plugins were translated to machine code all at once on loadIn SourceMod 1.1 this has changed.  Plugins are now incrementally compiled as functions get called for the first time.  This might help load time, but was actually done to improve internal logic.
+
=Compatibility=
 +
This release is fully backwards compatibleIt is not, however, forwards compatiblePlugins compiled against SourceMod 1.1 will not run on any earlier version.
  
==Developer Changes==
 
Dependence on private or internal structures has been eliminated.  Plugins are now represented by <tt>IPluginRuntime</tt> structures, and contexts are now solely represented by an <tt>IPluginContext</tt>.  The <tt>sp_plugin_t</tt> and <tt>sp_context_t</tt> structures have been removed.
 
  
A huge number of functions in <tt>IPluginContext</tt> have been deprecated and moved to <tt>IPluginRuntime</tt> as part of this effort. Contexts are now intended only to represent a thread of execution. Similarly, function invocation is now defined as being invocation of a particular <tt>IPluginFunction</tt> combined with an <tt>IPluginContext</tt> (a default contexts exists for compatibility).   
+
=Translations=
 +
SourceMod 1.1.0 ships with a number of community provided translation packsThe following languages are included:
 +
*Brazilian Portuguese
 +
*Chinese Simplified
 +
*Danish
 +
*German
 +
*Hungarian
 +
*Japanese
 +
*Latvian
 +
*Norwegian
 +
*Polish
 +
*Romanian
 +
*Russian
 +
*Spanish
 +
*Swedish
 +
*Turkish
  
The <tt>ISourcePawnEngine</tt> API has been deprecated in favor of <tt>ISourcePawnEngine2</tt>.  The new API reflects the restructuring.  For example, it provides a single entry point for creating an <tt>IPluginRuntime</tt> from a file.
 
  
Lastly, the SourcePawn runtime (<tt>sourcepawn.jit.x86</tt>) is now entirely separated from SourceMod. It can be embedded into other GPL3 applications, for better or worseThe API is separate and stable enough such that you can take the JIT library from SourceMod 1.1 and use it right in your own app. Documentation on doing this can be written upon request.
+
=Changelog=
 +
*Added new client preferences extension (API in clientprefs.inc, {{bz|1925}}).
 +
*Added new gamedata auto-update functionality ({{bz|2602}}).
 +
*Revamped and greatly expanded map management plugins and their functionality ({{bz|2201}}).
 +
*Debug mode is now always on; as there is no longer a performance loss, there is no non-debug mode.
 +
*The timeleft trigger can now handle mp_winlimit, mp_fraglimit, and mp_maxrounds ({{bz|2344}}).
 +
*Translations can now be in separate files and placed in language-unique folders.
 +
*The leading "STEAM_0:" or "STEAM_1:" in SteamIDs can now be omitted from admin files.
 +
*Added sm_revote command so clients can participate in a vote that fell off their screen ({{bz|2156}}).
 +
*Added Core API for creating stack structures (adt_stack.inc, {{bz|2441}}).
 +
*Added API for extending mapchooser (mapchooser.inc, {{bz|2201}}).
 +
*Added Core API for map transition control and history (nextmap.inc).
 +
*Added TF2 forward for overriding how critical hits are calculated.
 +
*Added SetClientInfo() native for modifying how a server sees a client's setinfo properties.
 +
*Added CreateDirectory() native ({{bz|3253}}).
 +
*Added "magic" MaxClients variable to replace slower GetMaxClients() call.
 +
*Added support for three-letter language codes ({{bz|3526}}).
 +
*Functions to control client versus client mic listening now work as described ({{bz|2498}}).
 +
*Fixed SDKTools not being reloadable, and fixed a related bug in Handle type removal ({{bz|2753}}).
 +
*Rewrote internal translation handling.  Extensions now have access to an <tt>ITranslator</tt> API ({{bz|2535}}).
 +
*Rewrote internal handling of dependencies (especially relating to native providers) ({{bz|2466}}).
 +
*Added user config hooks to IGameConfigManager, for parsing user-defined sections.
 +
*Revamped SourcePawn APIRemoved and deprecated many structures and functions accidentally exposed publicly.
 +
*Revamped SourcePawn structure, it is now separable from SourceMod for other projects.
 +
*Renamed basefuncommands.phrases.txt to funcommands.phrases.txt ({{bz|2485}}).
 +
*Renamed basefunvotes.phrases.txt to funvotes.phrases.txt ({{bz|2485}}).
 +
*Added IDBDriver API call for extensions to handle IDBDriver dependencies properly.
 +
*Usermessage natives now validate clients to prevent crashing.
 +
*Fixed OnConfigsExecuted not working on listen servers.
 +
*Fixed out-of-handle conditions in CreateTimer() causing crashes ({{bz|3381}}).
 +
*Fixed accessing invalid Handles causing crashes ({{bz|3359}}).
 +
*Fixed memory corruption with MySQL + FetchString ({{bz|3352}}).
 +
*Fixed ReadFileString ignoring its fourth parameter ({{bz|3459}}).
 +
*Fixed sm_sql_addadmin reading the immunity field as a password ({{bz|3395}}).
 +
*Fixed ReadFile sign-extending instead of zero-extending ({{bz|3449}}).

Latest revision as of 01:22, 29 December 2008

SourceMod 1.1 is a major update, containing many features, fixes, and improvements. If you need help upgrading, see Upgrading SourceMod.

  • This release DOES HAVE configuration changes.
  • This release DOES NOT break compatibility.


Plugin Changes

Map Management Changes

SourceMod's map management plugins have gone through huge overhauls to address many community requested features and bugs.

The new "mapchooser" plugin provides a central system for other map-related plugins. In addition:

  • nominations adds nominations into map votes.
  • rockthevote lets users start early map votes.
  • nextmap automatically selects the next map.
  • randomcycle randomly selects the next map.

To learn more about the new map management system, see Map Management.

Reserved Slot Changes

Reserved slots has a new reserve type to stop kicking players once a certain number of admins have been reached. There is also a new kick type cvar that selects which heuristic to kick a player by. Available heuristics are ping time, connection time, and randomly.

For more information, see Reserved Slots. Sections specific to SourceMod 1.1 or higher are marked as such.


Gamedata Updater

One major support problem with SourceMod is that when a mod updates, it is quite easy to break SourceMod's SDKTools. SDKTools provides "hacky" scripting functionality for internal game features, like slaying players or creating entities.

To fix this 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.

Only official gamedata files are updated. All gamedata updating functionality can be disabled if you deem it a security risk. For more information, see Gamedata Updating.


Client Prefs

SourceMod 1.1 comes with a new "client preferences" extension. This extension lets plugins configure properties on clients which are preserved across connections, server restarts, and even across multiple servers. Properties are created and maintained by plugins in an API similar to ConVars (cvars).

The Client Prefs extension can be configured to use SQLite (default) or MySQL. All operations are threaded in order to not interrupt gameplay performance.

To read more, see Client Preferences API.


JIT Changes

The concept of "debug mode" has been removed. Debug mode is now always on, and it has been reworked to not be a performance hit. In addition functions are now compiled on-demand rather than all at once on load.

The JIT has received major API changes and is now decoupled from SourceMod. For more information, see this blog post.


Config Changes

  • core.cfg has new options for tweaking gamedata updating.
  • databases.cfg now contains a default entry for client preferences.
  • languages.cfg now contains the new user-translated languages.
  • maplists.cfg has been extended for the new map management plugins.
  • plugin_settings.cfg no longer has debug settings.


Compatibility

This release is fully backwards compatible. It is not, however, forwards compatible. Plugins compiled against SourceMod 1.1 will not run on any earlier version.


Translations

SourceMod 1.1.0 ships with a number of community provided translation packs. The following languages are included:

  • Brazilian Portuguese
  • Chinese Simplified
  • Danish
  • German
  • Hungarian
  • Japanese
  • Latvian
  • Norwegian
  • Polish
  • Romanian
  • Russian
  • Spanish
  • Swedish
  • Turkish


Changelog

  • Added new client preferences extension (API in clientprefs.inc, bug 1925).
  • Added new gamedata auto-update functionality (bug 2602).
  • Revamped and greatly expanded map management plugins and their functionality (bug 2201).
  • Debug mode is now always on; as there is no longer a performance loss, there is no non-debug mode.
  • The timeleft trigger can now handle mp_winlimit, mp_fraglimit, and mp_maxrounds (bug 2344).
  • Translations can now be in separate files and placed in language-unique folders.
  • The leading "STEAM_0:" or "STEAM_1:" in SteamIDs can now be omitted from admin files.
  • Added sm_revote command so clients can participate in a vote that fell off their screen (bug 2156).
  • Added Core API for creating stack structures (adt_stack.inc, bug 2441).
  • Added API for extending mapchooser (mapchooser.inc, bug 2201).
  • Added Core API for map transition control and history (nextmap.inc).
  • Added TF2 forward for overriding how critical hits are calculated.
  • Added SetClientInfo() native for modifying how a server sees a client's setinfo properties.
  • Added CreateDirectory() native (bug 3253).
  • Added "magic" MaxClients variable to replace slower GetMaxClients() call.
  • Added support for three-letter language codes (bug 3526).
  • Functions to control client versus client mic listening now work as described (bug 2498).
  • Fixed SDKTools not being reloadable, and fixed a related bug in Handle type removal (bug 2753).
  • Rewrote internal translation handling. Extensions now have access to an ITranslator API (bug 2535).
  • Rewrote internal handling of dependencies (especially relating to native providers) (bug 2466).
  • Added user config hooks to IGameConfigManager, for parsing user-defined sections.
  • Revamped SourcePawn API. Removed and deprecated many structures and functions accidentally exposed publicly.
  • Revamped SourcePawn structure, it is now separable from SourceMod for other projects.
  • Renamed basefuncommands.phrases.txt to funcommands.phrases.txt (bug 2485).
  • Renamed basefunvotes.phrases.txt to funvotes.phrases.txt (bug 2485).
  • Added IDBDriver API call for extensions to handle IDBDriver dependencies properly.
  • Usermessage natives now validate clients to prevent crashing.
  • Fixed OnConfigsExecuted not working on listen servers.
  • Fixed out-of-handle conditions in CreateTimer() causing crashes (bug 3381).
  • Fixed accessing invalid Handles causing crashes (bug 3359).
  • Fixed memory corruption with MySQL + FetchString (bug 3352).
  • Fixed ReadFileString ignoring its fourth parameter (bug 3459).
  • Fixed sm_sql_addadmin reading the immunity field as a password (bug 3395).
  • Fixed ReadFile sign-extending instead of zero-extending (bug 3449).