Serious Sam 3 Update Released

Product Update - Valve

Mar 29, 2013

- Added workaround for a bug in ATI OpenGL driver causing menu and loading background to be black.- Thoroughly refactored and optimized postprocessing shader system. Some effects are up to 5x faster.- Choose Levels menu now shows bigger thumnails for each level, and best statistics for it for the current player.- Fixed a crash caused by Sirian bracelet when multithreaded rendering was enabled.- Fixed a crash that could happen if a player carrying a flag in CTF game fell into abyss while in third person mode - with multithreaded rendering enabled.- Fixed banding on very dense haze which starts couple of meters away from viewer when MSAA is not used. - If thr_iAffinityStrictness was set to a value different than default, it would not be applied on game start. Fixed.- Fixed the game's affinity strictness leaking into video and audio drivers, if they allow their threads to inherit affinity from main thread. This could potentially improve performance on Linux.- The default "program has requested the runtime to terminate in an unusual way" message is replaced new logging which can be actually useful in troubleshooting.- OSX: Added OSX input config for Logitech gamepads as created by Logitech. - OSX: Fixed ability to dump crash reports on OSX. - Linux+OSX: Fixed a case where application would sometimes lock up, instead of dumping a crash report, when a crash happened.- Linux+OSX: Added support to remap controller input to support any types of controllers. New controller configs (.xml files) can be created by users as needed. See http://serioussam.com/wiki/index.php?title=Controller_Config for more details.- Linux+OSX: Added control mappings for XBox 360, Playstation 3 and Logitech F510/F310/F710 controllers. - Multiplayer: Fixed an issue where, if a player dies while carrying a flag in CTF game mode, the flag may be irretrievable if flag carrier dropped the flag in an abyss field, etc. In all such cases, the flag item will not be dropped at all, instead, the flag will return directly to its base. - Multiplayer: Red/Blue team spawn markers worked only in CTF. That feature is now usable in all team modes.- Multiplayer: Fixed a problem where no servers would appear in versus/cooperative server list if you previously used server filter in the other mode.- Multiplayer: Added speedhack detection. Players caught using speed hacks will be marked as cheated in the player list.- Multiplayer: Clients now cannot connect to the server if their UTC times differ by more than a day.- Editor: Enemies placed in the world (not spawned) were bugged on clients if a cutscene starts on the first chapter. Fixed.- Editor: Added cvars for forcing Depth-of-Field effect; "efx_fForcedDoFDistance" and "efx_fForcedApertureSize". (For testing purposes only!) - Editor: Fixed problem with wrong lighting on a model influenced by really really big probe light (like, 20km box). - Editor: Cvar wld_strPreferredStartChapter (available in editor only) can be used for easier testing of bigger levels.- Editor: All cvars needed to generate texture precaching resources (used for texture cache warmup befor cutscenes) are now available in final editor builds. - Scripting: It is now possible to define new input controls from Lua scripts and read their values. See http://serioussam.com/wiki/index.php?title=Lua/CustomCommandsAndBindings for details.- Scripting: Added new macro math functions: mth*To*() (where * is Euler, Quaternion, AxisAngle, DirectionVector)- Scripting: Added a new macro function: mthDotV3f(), which calculates the dot product of two 3D vectors. - Scripting: Created new macro functions on puppet for script-driven combat: DoRangedAttack() and DoMeleeAttack(), which are latent and thus can be waited on in scripts. - Scripting: Added macro functions SetGoalPoint() and GetBoundingBoxSize() to puppet, which can be used to control puppet movement via goal points. - Scripting: CBaseEntity::InflictDamageToTarget(). This function complements the previous damage inflicting functions and allows specifying all damage parameters at once. Note that in this function, "self" is source, not target!- Scripting: Added ability to filter damage on entities from scripts. Use CBaseEntity::EnableReceiveDamageScriptEvent(); Catch all ReceiveDamage events on that entity, and do whatever is needed in response to that. Call the HandleDamage() function _on that event object_ if you want to actually apply the damage (adjusted if needed).- Scripting: All lua scripts located in Content/SeriousSam3/Scripts/Startup/ will be executed upon project boot (right after the menu system is initialized). These startup scripts can be re-executed at any time using prjExecuteStartupScripts cvar. (This works even in non-moddable version, as these are console scripts.)- Scripting: When starting a world, after executing WorldScripts.lua, all custom Lua scripts from Content/SeriousSam3/Scripts/CustomWorldScripts/ are enumerated and executed. (Only in editor and in moddable version.)- Scripting: Created a new macro function: ResolveResource(). This function will resolve a smart pointer to a resource and return a raw pointer that can be used to call functions on it (if the resource class supports sripting). - Scripting: Base script entity class now exposes a new scripting function: GetWorld(). - Scripting: Added support for dynamic creation of entities from world scripts. Create one or more templates using "Template properties holder" resource, and save it; In a script, use global ResolveResource() and CTemplatePropertiesHolder::CreateTemplate() to get a local CEntityProperties object; Use CEntityProperties::SetPlacement() to adjust to desired position, then CTemplatePropertiesHolder::SpawnEntity() to spawn the new entity.(Notes: Using CWorldInfoEntity::LoadResource(), one can dynamically load new template holders as needed.; Note that the result of ResolveResource() is strictly local, do not try to cache it across frames!)- Scripting: Added scriptable hud elements CTextBoxHudElement and CModelHudElement.- Scripting: HUD element creation now allows multiple instances of the same script hud element class. - Scripting: Player puppet now exposes GetHUD() function, which retrieves player's HUD. Can be used to control custom HUD elements.- Scripting: Added CPuppetEntity::IsLocalViewer(), CPuppetEntity::IsLocalOperator() usable to determine which player(s) is playing locally, and which is viewed from locally (could be playing, or being specated).- Scripting: Implemented ViewerChanged script event which is sent on WorldInfo whenever current local viewer changes. - Scripting: When an entity is deleted an 'EntityDeleted' script event is sent. - Scripting: Added macro functions GetPlayerId and GetPlayerName to the CPlayerPuppetEntity class. - Scripting: The "playerkilled" XML tag in log now has the player id. - Scripting: A new XML tag "roundstart" is printed to log at the beginning of a match containing information about the gamemode.- Scripting: Added custom event XML_Log which can catch all XML messages printed to log. - Scripting: All XML_Log events are now sent both to console scripts and to world scripts. The player Chat event is now removed. Note that this means that world scripts have access to contents of player chat. (It can be used to implement remote commands in chat.)