Releases: SamClassicPatch/SuperProject
1.9.4 patch
This patch implements a slightly better system for taking game screenshots and overhauls in-game patch options to hopefully be easier to navigate and configure.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.9.3
Common changes
- Implemented a new system for taking global screenshots akin to Steam. You can now take screenshots of the game, the game menu and NETRICSA, as well as the HQ screenshots via the observer camera using a new rebindable key (F12 by default).
- They are saved under the
Screenshotssubdirectory within the game folder in one of the following formats: PNG (default), JPG and TGA (sam_iScreenshotFormatcommand). - If Steam Overlay is active and its screenshots are hooked (
steam_bHookScreenshots = 1), this new key is disabled in favor of Steam's own screenshot shortcut.
- They are saved under the
- Added a fatal error upon starting the installed Classics Patch build on the incorrect version of the game/engine.
- This behavior can be disabled by creating a dummy file named
BypassBuildCheckin the root game directory.
- This behavior can be disabled by creating a dummy file named
Mod changes
- Fixed choppy rendering of the console and NETRICSA from accumulating too much CPU time.
- Replaced arrays of viewmodel position and rotation multiplication with separate additive variables per axis and per angle:
wpn_afViewPos[3](multiplicative) ->wpn_fViewPosX,wpn_fViewPosY,wpn_fViewPosZ(additive)wpn_afViewRot[3](multiplicative) ->wpn_fViewRotH,wpn_fViewRotP,wpn_fViewRotB(additive)
- Added 7 new arrays for adding position (XYZ), rotation (HPB) and FOV per individual weapon for more thorough viewmodel customization.
Game changes
- Fixed choppy rendering of the menu from accumulating too much CPU time.
- Implemented
KeyBindtype for config options for binding key identifiers toINDEXvariables the same way as keys in player controls. - Fixed crash from using the
Include:command in option configs with no priorGadget:commands. - Added single player game options (
Scripts/Menu/SPOptions.cfg) on top of the "Customize game" menu for easy access upon starting any level in single player. - Added a button to the in-game pause/Escape menu for quickly toggling the "photo mode" using the observer camera system (
ocam_bActive). - Allowed adding up to 17 custom level categories by using a smaller font for buttons if there are more than 10 custom categories.
- Slightly reorganized some patch options to hopefully make certain settings easier to find.
- Added new patch options for the observer camera & photo mode.
Other changes
- Rewrote the documentation on the new commands to be more in line with the in-game options.
Known issues
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.groand put it in the game folder to install desired localization of the patch.
1.9.3 patch
A sizable patch for the 3rd anniversary of Classics Patch that fixes a few old issues and implements experimental scripting support.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.9.2
Common changes
- Merged all code of engine patches module (
ClassicsPatches.dll) with the core library (ClassicsCore.dll).ClassicsPatches.dllfrom the previous versions should be manually deleted from theBinfolder.
Mod changes
- Fixed crashes from loading worlds with non-existent textures for a world map, e.g. TFE campaign or any world that's prefixed with a number 1-15 in TSE that requires extra TFE world map textures.
- Fixed
|text cursor with big console font being centered on top of another character instead of rendering to the left of it. - Allowed running Squirrel scripts from the console by prefixing the line with
sq>.
Game changes
- Made the patch treat
ClassicsPatchModmod as vanilla game, similar to theSeriousSammod, otherwise it prevented the patch from connecting to vanilla servers: #25 - Potentially fixed lens flares showing through everything when the game is rendered in the background of an open menu: #26
- Relocated patch option configs from
Scripts/ClassicsPatch/toScript/Menu/ClassicsPatch/to separate them from other generic patch files.
Editor changes
- Fixed texture mapping on all selected brush polygons resetting to the mapping of the first selected polygon: #18 (thanks to @Tinsed)
Plugin changes
Extended Input
- A new extension that implements proper gamepad support and other input functionality (previously part of the
ClassicsPatches.dllmodule). - Fixed broken controls after using automatic axis detection: #22
- Updated the underlying SDL2 library to an SDL3 library.
- It implements support for more controller buttons, which shifted some buttons in the existing control schemes. You'll have to rebind the incorrect controller buttons manually or reload predefined settings using one of the included game controller presets.
Scripting Engine
- A new experimental extension that implements support for Squirrel scripting language.
- Supports limited interaction with Serious Engine via new Squirrel libraries.
- Currently can only be executed through the game's shell using new commands:
scr_ExecuteString()(for running scripts from strings) andscr_ExecuteFile()(for running scripts from.nutfiles within the game directory).
World Converters
- A new extension that implements converters of specific world formats to the game's world format (previously part of the
ClassicsPatches.dllmodule). - Supports implementation of custom world converters externally.
- Replaced a single
sam_iWorldConvertercommand with the desired level format of the loaded world (sam_iWantedWorldFormatcommand) and allowed converting worlds using multiple converters in a specific order (sam_strWorldConverterscommand). - Added command for listing available world converters by name (
wld_ListConverters()command).
Other changes
- Merged code of all repositories into a single one for easier project development.
- Implemented "extension" plugins that are used for decoupling optional patch functionality into separate plugins that the patch interacts with through a new API.
- Updated example plugin (which is now an "extension sample") to include features of the new extension API.
- Made
PatchInfo()command report the game version that the installed patch was built for, e.g. "TSE v1.07" instead of a simple engine version for debugging purposes. - Packed MAP files with each build that can be used by the
DecodeReportutility for debugging purposes. Example:
./DecodeReport.exe "SeriousSam_Custom.RPT" "DecipheredReport.rpt" "DebugFiles/"Known issues
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.groand put it in the game folder to install desired localization of the patch.
1.9.2 patch
This patch includes a few useful features, mainly for the in-game menu interface.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.9.1
Common changes
- Allowed toggling input patches that implement proper controller support with a global config property (
ExtendedInputproperty). - Allowed forcing a specific seasonal event with a global config property instead of automatically determining it (
ForceSeasonalEventproperty).
Mod changes
- Added command for toggling fade-out of
ModelHolder2entities to allow them to be visible at any distance (gfx_bAdjustModelHolderMipFactorcommand). - Extended upper limit of the
gfx_fEnvParticlesRangecommand from2.0to10.0. Use at your own risk.
Game changes
- Prevented mods from hiding patch options under the Options -> Classics Patch menu if they exclude the entire "Scripts" directory by having it in
BaseBrowseExclude.lstfor some reason. - Made the URL to the mod page be clearly displayed in the message box upon trying to connect to a server that runs a mod that doesn't exist.
- Added a one-time notification about the current seasonal event when starting the game during its active period.
- Allowed config options to apply their values in real time using
RealTime:property, just like how volume sliders used to work before. - Made scrollbars in lists of option values behave more like real GUI scrollbars with proper dragging. The old positioning based on the vertical mouse position now only works when clicking on the empty space around the scrollbar.
- Added option to replace old "Page Up" and "Page Down" buttons on the left with a proper draggable scrollbar on the right (
sam_bModernScrollbarscommand).
Plugin changes
Local Cheats
- Synchronized cheat commands between all clients when the server client executes them (all except for
cht_Noclip()andcht_iAutoKill).
Known issues
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.groand put it in the game folder to install desired localization of the patch.
1.9.1 patch
A small patch with a couple of bug fixes to wrap up this year. Merry Christmas and Happy Holidays!
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.9
Game changes
- Fixed master server switch in the server list not updating the master server string in the engine (if vanilla query was used).
Editor changes
- Fixed resource replacement functionality not working: SamClassicPatch/WorldEditor#3
Known issues
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.groand put it in the game folder to install desired localization of the patch.
1.9 update - "Taking Back Control"
This update focuses primarily on implementing improved support of game controllers and reworked game menu functionality.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.8
Common changes
- Replaced
sam_bNotifyAboutUpdatescommand with aNotifyAboutUpdatesconfig property to allow update notifications to be toggled globally instead of per mod (since the command state was stored inPersistentSymbols.ini). - Added observer camera command for multiplying speed for changing the FOV (
ocam_fFOVChangeMulcommand). - Added shell command for clearing the entire console log (
ClearConsole()command). - Extended input functionality by patching input interface methods:
- Finally made Mouse Button 4 and Mouse Button 5 work properly.
- Improved game controller support by replacing Windows Multimedia Joystick functionality with SDL_GameController.
- Renamed all controller buttons & axes from generic joystick names to actions of an Xbox-like controller.
- Allowed controller axes to be bound as regular buttons (primarily for triggers).
- Added
inp_fAxisPressThresholdcommand for controlling the movement threshold after which an axis is considered "pressed".
- Added
- Added display of currently connected controllers using
inp_JoystickInfo()command.
- Added Italian localization via a separate GRO file with translation files (thanks to @Kappa971).
Mod changes
- Fixed modded GameGUI windows not opening in any editor: SamClassicPatch/Mod#5
- Synchronized message counters between player predictions and real player entities to get rid of the notification sound every time an enemy is killed with prediction on.
- Made Game library replace old camera commands (starting with
cam_) with new observer camera ones (starting withocam_) to avoid errors from using them. - Added new gameplay extension for toggling fast movement while holding a knife in Cooperative mode (like in Deathmatch).
- Added command for toggling gradual coloring of crosshairs depending on the target's health (
hud_bCrosshairGradualColoringcommand).
Game changes
- Reworked certain parts of the menu to hopefully make going from menu to menu more reliable.
- Replaced hardcoded "Video Options" & "Audio Options" menus with custom option configs.
- Allowed custom screen resolutions to be added using
Data/ClassicsPatch/Resolutions.lstfile (in aWIDTHxHEIGHTform, e.g.1440x720).
- Allowed custom screen resolutions to be added using
- Allowed using controllers for navigating the game menu and NETRICSA.
- Completely remade "Advanced Joystick Setup" menu to be more convenient to use.
- Made sliders continuously change values only on the initially clicked slider (instead of any one underneath the mouse while LMB is held down).
- Fixed sliders being unable to continuously change values on held LMB in fullscreen mode.
- Changes to option configs:
- Made option config display a fatal error instead of crashing, if its file cannot be loaded.
- Allowed translating strings using
PATCHLOCALIZEchunk instead ofTTRSto prevent it from being detected by the Depend utility. - Added
BigFilltype to theSlider:property that creates big fill bars, akin to the volume sliders. - Added
Buttontype for creating clickable buttons that recursively open another option config specified with the nextInclude:property. - Added
AutoValue:property that automatically adds specific values to an option and does extra configuration for it based on the specified variable. If no variable is specified, it simply adds the value as is and uses it as an automatically translated display name. - Implemented convenient drop-down lists for
Toggleconfig options with more than 2 values (sam_bConfigValueListscommand).
Server changes
- Rewrote internal logic of built-in extension packets, which breaks compatibility with previous versions of the patch. Any demos that have been recorded with extension packets being used are going to be broken starting from this version.
- Added built-in extension packets for playing global sounds for all clients (
pck_PlayQuickSound()andpck_PlayGlobalSound()commands).
Plugin changes
Server Utilities
- Fixed the issue with only the last weapon from the list being given out/taken away on all
PlayerMarkerentities. For example, only Sniper was given out when Chainsaw, Tommygun and Sniper were enabled.
Other changes
- Completely redesigned and rewrote the API for the Core library. The new external frontend is now implemented via C API.
- Added API version using
CLASSICSPATCH_INTERFACE_VERSIONmacro to patch info that's displayed usingPatchInfo()command. - Added new
ClassicsPatchAPIshell symbol for identifying patch versions with the new API to replaceCoreAPI.
- Added API version using
- Took out a lot of code from the entire project to form a standalone header library and utilized its code instead.
- Added experimental build configuration for the open-source forks of The Second Encounter v1.10, much like the Revolution configuration.
- Added tools to the main repository for assisting in creation of localizations to other languages.
- Updated patch credits page in the game menu to include third party resources.
- Added default control presets for game controllers in slots 1-4.
Changes since 1.9-pre1
Show changelog
- Fixed the case where after selecting a level from the list for Network/Splitscreen game, going back to the previous menu would return back to the level selection screen instead of the actual previous menu.
- Replaced
Rangeoption config property with another variable inAutoValue. - Completely reworked how plugin events are defined and registered through the API for proper backward compatibility.
- Made some fatal error messages more informative to understand where they happened and why.
- Fixed "Back" button in the network connection settings menu sometimes either not working at all, or going forward to the player selection menu instead of returning back.
- Added gameplay extension for toggling fast knife in Cooperative mode.
- Implemented gradual color changing on crosshairs.
Known issues
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.groand put it in the game folder to install desired localization of the patch.
1.9 update (Pre-release 1)
THIS IS A PRE-RELEASE VERSION! This means that it's not yet ready for proper usage!
If you'd like to help testing it, install it just like a regular Classics Patch update. All found bugs should be reported as soon as possible!
Primary features to test
- New controller support and Mouse Button 4 & Mouse Button 5.
- Overall game menu due to major modifications.
- Overall stability due to the rewritten API.
- Italian localization.
NOTE: The wiki will be updated to reflect changes in this version once the full release happens.
Changes since 1.8
Common changes
- Replaced
sam_bNotifyAboutUpdatescommand with aNotifyAboutUpdatesconfig property to allow update notifications to be toggled globally instead of per mod (since the command state was stored inPersistentSymbols.ini). - Added observer camera command for multiplying speed for changing the FOV (
ocam_fFOVChangeMulcommand). - Added shell command for clearing the entire console log (
ClearConsole()command). - Extended input functionality by patching input interface methods:
- Finally made Mouse Button 4 and Mouse Button 5 work properly.
- Improved game controller support by replacing Windows Multimedia Joystick functionality with SDL_GameController.
- Renamed all controller buttons & axes from generic joystick names to actions of an Xbox-like controller.
- Allowed controller axes to be bound as regular buttons (primarily for triggers).
- Added
inp_fAxisPressThresholdcommand for controlling the movement threshold after which an axis is considered "pressed".
- Added
- Added display of currently connected controllers using
inp_JoystickInfo()command.
- Added Italian localization via a separate GRO file with translation files (thanks to @Kappa971).
Mod changes
- Fixed modded GameGUI windows not opening in any editor: SamClassicPatch/Mod#5
- Synchronized message counters between player predictions and real player entities to get rid of the notification sound every time an enemy is killed with prediction on.
- Made Game library replace old camera commands (starting with
cam_) with new observer camera ones (starting withocam_) to avoid errors from using them.
Game changes
- Reworked certain parts of the menu to hopefully make going from menu to menu more reliable.
- Replaced hardcoded "Video Options" & "Audio Options" menus with custom option configs.
- Allowed custom screen resolutions to be added using
Data/ClassicsPatch/Resolutions.lstfile (in aWIDTHxHEIGHTform, e.g.1440x720).
- Allowed custom screen resolutions to be added using
- Allowed using controllers for navigating the game menu and NETRICSA.
- Completely remade "Advanced Joystick Setup" menu to be more convenient to use.
- Made sliders continuously change values only on the initially clicked slider (instead of any one underneath the mouse while LMB is held down).
- Fixed sliders being unable to continuously change values on held LMB in fullscreen mode.
- Changes to option configs:
- Made option config display a fatal error instead of crashing, if its file cannot be loaded.
- Allowed translating strings using
PATCHLOCALIZEchunk instead ofTTRSto prevent it from being detected by the Depend utility. - Added
BigFilltype to theSlider:property that creates big fill bars, akin to the volume sliders. - Added
Range:property that automatically generates a list of values from 0% to 100% by specifying the min value, the max value and the step size (e.g.Range: 1 2 0.65will add1 (0%),1.65 (65%)and2 (100%)values). - Added
Buttontype for creating clickable buttons that recursively open another option config specified with the nextInclude:property. - Added
AutoValue:property that automatically adds specific values to an option and does extra configuration for it based on the specified variable. If no variable is specified, it simply adds the value as is and uses it as an automatically translated display name. - Implemented convenient drop-down lists for
Toggleconfig options with more than 2 values (sam_bConfigValueListscommand).
Server changes
- Rewrote internal logic of built-in extension packets, which breaks compatibility with previous versions of the patch. Any demos that have been recorded with extension packets being used are going to be broken starting from this version.
- Added built-in extension packets for playing global sounds for all clients (
pck_PlayQuickSound()andpck_PlayGlobalSound()commands).
Plugin changes
Server Utilities
- Fixed the issue with only the last weapon from the list being given out/taken away on all
PlayerMarkerentities. For example, only Sniper was given out when Chainsaw, Tommygun and Sniper were enabled.
Other changes
- Completely redesigned and rewrote the API for the Core library. The new external frontend is now implemented via C API.
- Added API version using
CLASSICSPATCH_INTERFACE_VERSIONmacro to patch info that's displayed usingPatchInfo()command. - Added new
ClassicsPatchAPIshell symbol for identifying patch versions with the new API to replaceCoreAPI.
- Added API version using
- Took out a lot of code from the entire project to form a standalone header library and utilized its code instead.
- Added experimental build configuration for the open-source forks of The Second Encounter v1.10, much like the Revolution configuration.
- Added tools to the main repository for assisting in creation of localizations to other languages.
- Updated patch credits page in the game menu to include third party resources.
- Added default control presets for game controllers in slots 1-4.
Known issues
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.groand put it in the game folder to install desired localization of the patch.
1.8 update - "Steamy Observation"
This update adds a whole bunch of new (and untested) thingamajigs, doodads, gizmos even. As well as extended compatibility with Revolution levels and quality-of-life features for Steam players!
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.7.2
Introducing: Observer camera
- Implemented new observer camera system (a.k.a. "OCAM") that allows advanced spectating via controllable free-fly camera (
ocam_bActivecommand). - Supported by the vast majority of mods (even with custom mod libraries).
- Works in recorded demos and while observing an active game.
- Can be used as a sort of "photo mode" with its high quality screenshot functionality.
- Supports recording of camera movements in demos for creating simple scripted movies.
Common changes
- Allowed using as many local players as there are real players (more than 4 split-screen players), assuming there's custom logic written to support them.
- Added config properties for enabling access to Steam via dedicated servers and tool applications.
- Extended interactions with the client log.
- Added shell functions for displaying the log, deleting entries from it and resaving/reloading it.
- Simplified full information about each client and added display of specific client characters for more detailed information.
- Added separate switches to patch config for toggling mounting of each game directory (instead of having to input invalid paths to games).
- Changed default value of vertical FOV setting to "Yes (only player view)" (
sam_bUseVerticalFOV = 2) for compatibility with vanilla maps. - Fixed texture script processing patch always displaying errors instead of working properly upon trying to create animated textures.
- Added experimental command for automatically replacing missing resources with placeholders (
sam_bUsePlaceholderResourcescommand).
Warning
This feature should only be used when playing alone! It is not multiplayer synchronized!
- Fixed skipped determination of the world format upon loading saved games. This used to produce bugs during gameplay on converted non-TSE levels in TSE with network features turned off (e.g. in singleplayer).
- Fixed replacement of Bio-mechanoid types from Revolution, which now correctly replaces
Artillery->SergeantandSpawner->Small. - Started using Steamworks API to its full potential:
- Automatic game pause upon opening Steam overlay mid-game.
- Ability to take high quality screenshots using observer camera.
- Every screenshot will now include a level name attached to it as "Location" when uploaded to Steam Community.
- Ability to join the same server via a friend by using "Join game" button.
- Even players without a patch can join this way while the game is closed!
Mod changes
- Built custom Entities library for The First Encounter and The Second Encounter on 1.05 engine version with all of the patch changes from The Second Encounter v1.07.
- Created a new entity pack that comes with custom mod that implements missing entities for compatibility purposes. So far it includes:
- Cut enemies from Serious Sam Alpha.
Destroyer,Elemental,Headman,UghzyandWalkerenemies from Serious Sam Revolution.DamagerandSoundHolderentities from Serious Sam Revolution.- Other new entities from Serious Sam Revolution for world compatibility.
- Terrain entity.
- Allowed using "Monster" Arachnoid type on levels from Serious Sam Revolution.
- Added projectile types from Serious Sam Revolution to The Second Encounter for compatibility with its levels.
- Restored internal "CAM" functionality using new "OCAM" system from Core. Also works in Singleplayer & Cooperative game modes.
- Fixed various issues with flame particles in The Second Encounter, e.g. no reflection of flames in a mirror.
- Added option to toggle local player prediction to eliminate player jittering during predictions while playing on servers with latency below 50ms (
gam_bDisableLocalPredictioncommand). - Added commands for extra scaling of big fonts in console and NETRICSA (
con_fBigFontScaleandcmp_fBigFontScalecommands). - Allowed vanilla FOV command (
plr_fFOV) to be used in Deathmatch and limited it to 60-110 range, just like patch's FOV commands. - Fixed Sniper Rifle overriding FOV value from
plr_fFOVwith constant 90 degrees in The Second Encounter. - Added command for switching Cannon viewmodel position between The First Encounter and The Second Encounter modes (
wpn_bTSECannoncommand).
Game changes
- Added button for visiting this repository's wiki under the "Extras" menu.
- Added confirmation dialog before restarting the game using the button under the "Extras" menu.
- Added ability to edit buttons of common game controls (from
Controls/System/Common.ctl) in the same menu as personal player controls. - Changed amount of key bindings on screen from 14 to 16 (much like config options).
- Removed
+tfecommand line argument for specifying path to The First Encounter. It's advised to use theTFEDirconfig property instead. - Added "Extreme" option to rendering preferences in video options for setting best possible graphics. This is an equivalent to executing "GFX: Extreme quality" addon with
mdl_iLODDisappear = 1afterwards. - Added button to the server list menu for changing current master server for the Legacy protocol.
- Allowed typing characters from different ANSI code pages (e.g. cyrillics from Windows-1251) instead of only Latin characters in any textbox and console.
- Fixed translation files not being loaded if the patch is launched through the "Mods" menu.
- Added warning about gameplay extensions incompatibility to the "Customize game" button on the difficulty selection screen.
Server changes
- Implemented voting system via chat commands. Allows players and observers to initiate voting processes and vote in them.
- Voting to change the current map to another one from a predefined map pool.
- Voting to kick and ban a specific player for some short period of time.
- Voting to mute a specific player for some short period of time.
- Voting to skip current round on a dedicated server.
- Implemented system for kicking clients that became too annoying overtime (managed by plugins).
- Added new built-in extension packets:
- For changing the current world using different methods.
- For modifying session properties in batches of bytes.
- For modifying gameplay extensions by variable names.
Editor changes
- Grouped menu buttons for importing and exporting 3D objects together under the "File" dropdown menu.
- Added new export options for previously undocumented functions and put all three of them under an "Export" submenu:
- Entity exporting from 1.10 to Serious Engine 2+ (shortcut:
F11). - Entity placement exporting from 1.10 to Serious Engine 2+ (shortcut:
Shift+F11).
- Entity exporting from 1.10 to Serious Engine 2+ (shortcut:
Plugin changes
Accessibility
- Fixed player info sound patch not working in The First Encounter due to a different sound component ID.
Advanced HUD
- Fixed snooping colors for borders of lives and message counters.
- Added option to disable decorative tags in player names (
ahud_bDecoratedNamescommand). - Made certain function hooks optional to maximize compatibility with mods.
- Added tags above players in Cooperative mode (or any gamemode while observing and in demos) that display their names and relative distance to them.
- Added ability to separately customize color of player names in the list and tags (
ahud_iColorNamescommand).
Local Cheats
- Prevented bad synchronizations by displaying a warning upon trying to use cheats on a remote server.
Server Utilities
- Added ability to toggle specific button actions by using a button mask (
sutl_iActionButtonscommand). - Added ability to disable third person view by blocking the button action received by the server and by forcing all characters to disable "Prefer 3rd person view" option on change.
Other changes
- Implemented packet and timer events for plugins.
- Fixed a crash upon using dummy chat command in the example plugin.
- Fixed a typo in the model config for the Demon computer model that prevented it from being loaded properly.
- Fixed some incorrectly written methods of
se1::maptemplate class. - Reworked
sam_bReinitWorldcommand intosam_iWorldConverterand improved its functionality. - Added compiler version using
_MSV_FULL_VERmacro to patch info that's displayed usingPatchInfo()command. - Added Steamworks SDK to the repository and updated it to v1.59, including the
steam_api.dllredistributable.
Known issues
- SamClassicPatch/Mod#5
- SamClassicPatch/Plugins#1
- SamClassicPatch/WorldEditor#1
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_RevResources.groand put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_RUS.groand put it in the game folder to install Russian localization.
1.7.2 patch
This patch implements some quality-of-life features and fixes a few reported bugs.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.7.1
Common changes
- Fixed "too many open files" error upon starting the game when
SSRDirandSSRWorkshopproperties are explicitly set to empty strings. - Adjusted logic timer patch to hopefully fix some sub-tick inconsistencies, e.g. with Trigger delays being set to 1.5 ticks on Serpent Yards that rounded down to 1 tick instead of 2.
- Made Steam API be initialized only for the game client for now instead of every tool and dedicated servers.
Mod changes
- If the mod is launched from the unpatched game for some reason, it will now try restarting itself via
Bin/SeriousSam_Custom.exe. If it's not found, an error is displayed instead of crashing. - Added commands for customizing weapon viewmodel position (
ResetWeaponPosition()command for resetting to defaults).- Position multiplication by XYZ (
wpn_afViewPos[3]command). - Rotation multiplication by HPB (
wpn_afViewRot[3]command). - FOV multiplication (
wpn_fViewFOVcommand). - Viewmodel mirroring, a.k.a. left-handed mode (
wpn_bViewMirroredcommand). - Display of active power-up particles (
wpn_bPowerUpParticlescommand).
- Position multiplication by XYZ (
- Added ability to split split-screen views vertically for 2 players on a single screen or 3-4 players on any "dualhead" resolution (
gam_bVerticalSplitScreencommand).
Game changes
- Added ability to change scroll speed of game credits using mouse wheel.
- Added button to the "Extras" menu for displaying game or mod credits without having to quit the game.
- Now selected tab and current position in option configs is preserved after applying changes.
- Added command for restarting the game client like the new "Restart" button (
Restart()command). - Added GoneSpy back into the "Legacy master server" list and made 333networks and 42amsterdam master servers use direct domains (
333networks.comand42amsterdam.netrespectively) for compatibility with vanilla query manager (see below).
Server changes
- Added ability to return vanilla query manager from the engine and simply replace GameSpy master server address with the Legacy one without having to replace query manager in its entirety (
ms_bVanillaQuerycommand). - Added internal support for more than 4 local players per client (up to maximum player limit).
Other changes
- Allowed using "Advanced HUD" plugin in mods with modified entities without creating a config for each mod with
SameHook=1(experimental feature). - Added a few preset scripts under "Execute addon" for automatic configuration of the patch.
- Added patch to "Accessibility" plugin for skipping NETRICSA notification sound after killing every enemy while playing on a server with prediction turned on (
axs_bFixPlayerInfoSoundcommand).
Known issues
- SamClassicPatch/Mod#5
- SamClassicPatch/WorldEditor#1
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.groand drop it into the game folder to install Russian localization.
1.7.1 patch
This Steamy Holiday patch brings a few features for better compatibility with other mods.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.7
Common changes
- Made sure that mods that want to use custom patch libraries (with
_Custommod extension, likeClassicsPatchMod) behaved identically to vanilla game with "Custom mod libraries" enabled. - The patch can now detect specific seasonal events that can be used for cosmetic purposes.
- Added new gameplay extension for multiplying gravity acceleration and even inverting it using negative values on any level of any mod (
gex_fGravityAcccommand). - Added ability to optionally connect with the Steam client and notify it that the game is running as if it was launched directly through Steam (using new
Steamconfig switch). If Steam isn't running or the game is unavailable (not owned), this feature is disabled.
Mod changes
- Blood & gibs can now be customized locally instead of being tied to the server settings and be automatically replaced during specific seasonal events (
gam_iCustomBloodColorandgam_iCustomBloodThemecommands). - Now all models in NETRICSA are loaded from predefined configs from
Models/CompConfigsinstead of being constructed in place via code.
Game changes
- Allowed all slider gadgets to be dragged instead of simply clicking on it each time to change the value.
- Allowed scheduling individual commands inline instead of entire scripts for config options using
Command:keyword. - Allowed hiding options from configs that don't belong to specific mods (or belong to any but specific mods by prefixing them with
!) usingMods:keyword. - Made option configs remove the last tab if it only contains separators.
- Aspect ratio is now adjusted before drawing any menus, optimizing them for widescreen resolutions in all mods.
Known issues
- SamClassicPatch/Mod#5
- SamClassicPatch/WorldEditor#1
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.groand drop it into the game folder to install Russian localization.
1.7 update - "Compatibility Mode"
This update introduces support for most content from Serious Sam Revolution, opens up new opportunities via intricate features and fixes a lot of annoying bugs from both the engine and the previous versions of the patch.
Check out the FAQ and the setup instructions before playing, as well as the rest of the wiki for the new commands and such!
Changes since 1.6.2
Introducing: Serious Sam Revolution support
- Implemented mounting of Serious Sam Revolution and its workshop via
SSRDirandSSRWorkshopconfig properties, just like The First Encounter.
Note
The First Encounter v1.05 patch only supports workshop mounting and doesn't support level conversion. It's mostly useful for content replacements and player models.
- Patched world info reading to support worlds from Revolution.
- Patched dictionary and file reading to support weird/incorrect file paths from Revolution.
- Revolution worlds can now be opened and edited in any Serious Editor of your choice.
Common changes
- Replaced CD path usage for The First Encounter installation directory with an entirely new game directory system.
- Reworked resource loading priority from different directories. Now instead of loading resources from GRO packages in an alphabetical order, they are loaded from GRO packages in this order:
- Mod directory.
- Mod directory on a CD.
- Extra content directories specified in
Data/ContentDir.lst. - Root game directory.
- Directories of other game installations.
- CD path.
- Fixed streams not reading text lines correctly that didn't have a line break before EOF: SamClassicPatch/EnginePatches#1
- Patched entity creation method to allow non-existent classes (or class files) to be substituted with other ones, just like other resources.
- Fixed entity property type 29 (
EPT_DOUBLE) from Serious Sam Revolution being read incorrectly. - Patches for world methods are now also applied in Serious Editor.
- Enabled full integration of patch functionality into tool applications, i.e. file system extensions and 64-bit system support via the new
FullAppIntegrationswitch in the patch config. Works with both vanilla tools and Steam-patched ones. - Fixed file replacement upon reading entity properties not actually replacing anything.
- Made file replacement work during the game by reading the list with replacement entries from
Data/BaseForReplacingFiles.txt.
- Made file replacement work during the game by reading the list with replacement entries from
- Implemented system with gameplay extensions from the patch for customizing gameplay experience:
- If the gameplay extensions are enabled for a new session, game saves and demos will write extra information into them that makes them incompatible with vanilla games (
gex_bEnablecommand). On the contrary, vanilla saves and demos can be properly loaded and played. - Added patches for entity logic timers to fix the infamous slowdown bug (
gex_bFixTimerscommand). - Added various settings for customizing player movement (only for custom mod entities).
- If the gameplay extensions are enabled for a new session, game saves and demos will write extra information into them that makes them incompatible with vanilla games (
- Added special interface for easier interaction with the patch via mods by including a single standalone header or by creating new config files.
- Added ability to create custom lists of game difficulties similar to level categories.
- Added array of constants that contains values of current input axes (
inp_afAxisValues[AXIS_CT]commands). - Added shell function for retrieving index of a plugin by its display name (
GetPluginIndex()command). - Fixed INI configs crashing upon trying to read empty values without surrounding quotes (e.g.
Key =). - Patched sound objects to allow local (
SOF_LOCAL) sounds to play properly instead of silencing/skipping them while playing with prediction turned on. - Prevented FOV from being unpatched on non-player views (
sam_bUseVerticalFOV = 2) if the game isn't running (to align it with the projection).
Mod changes
- Rewrote map type determination to display the world map more reliably (which incorrectly displayed a TSE map for TFE levels sometimes): SamClassicPatch/Mod#3
- Ability to toggle big font in console or just last lines for better chat readability that also scales with resolution (
con_iBigFontcommand). - Added local indicators for spawn invulnerability via an active power-up and a power-up sound (
plr_iSpawnInvulIndicatorcommand). - Fixed
Womanclass not actually detaching an attached kamikaze in the editor, if needed. - Fixed
Walkernot being removed from fuss forMusicHolderafter dying that kept the fight music active for another 10 seconds. - Added arrays for each controls axis (translation, rotation & view rotation) for mimicking joysticks using keyboard keys by adding values to them per local player (
ctl_afAddTranslation[3],ctl_afAddRotation[3]andctl_afAddViewRotation[3]commands). - Fixed Minor Bio-mechanoids (
WalkerSmall) having rocket launcher attachments instead of lasers in NETRICSA. - Extended compatibility with The First Encounter levels:
- Added key types from The First Encounter.
- Rebalanced Highlander Reptiloid (
Beastclass) by lowering its health and attack run speed, and weakening its projectiles. - Prevent particles from
ParticlesHolderfrom being hidden upon deactivation.
- Compatibility with Revolution levels:
- Aforementioned TFE key types.
- Added support for new blend modes to
BlendController,WorldBaseandWorldSettingsController. - Added support for new surface types (gravel, no impact versions etc.).
- Added cut down version of the "Serious Jump" powerup (acting more like an additional mode for "Serious Speed").
- Marked
gam_iQuickSaveSlotsas "persistent" to save its value inPersistentSymbols.inibetween sessions. - Applied vertical screen edge offset from "Advanced HUD" plugin (
ahud_iScreenEdgeYcommand) to centered & pickup messages and "Analyzing..." label. - If
hud_bShowClockis set to anything higher than1, it will now display seconds as an extra.
Game changes
- Made update checks a bit more reliable and made it send only one request to GitHub every 6 hours. Otherwise it shows a prompt to download the version that was received within the last 6 hours.
- Added ability to create up to 16 custom difficulties for mods.
- Added new options for filtering levels in the list: by world format and by display title.
- Level filtering options can now also be toggled (
sam_bLevelFilteringcommand).
Server changes
- Master server will not start upon starting the server anymore if server enumeration is disabled.
- Fixed an issue with player characters being copied and reset after loading an old quicksave: SamClassicPatch/CoreLib#9
Warning
This is fixed by simply forcing GUID masking to be disabled in all cases other than running a multiplayer server (not local split screen).
- If gameplay extensions are enabled, the server will now append its settings while replying to the client with the server's session state (something like custom session properties).
- Fixed entity property extension packets setting received values into float properties incorrectly.
- Declared entity flags (
ENF_*) and entity physics flags (EPF_*) exactly how they are in Serious Engine code as extra shell constants for use with entity extension packets. - Added support for server administrators and server operators that can log in using
!loginchat command during the game with passwords configured by the server (ser_strAdminPasswordandser_strOperatorPasswordcommands). - Added
!rconchat command for server operators for executing console commands on the server side. - Added
!savechat command for server operators for saving a game on the dedicated server's computer (like pressing "SAVE" in the menu).
Other changes
- Added shell commands for replacing individual ammo types (
sutl_iAmmoType<0 - 30>commands) or all of them at once (sutl_iReplaceAmmocommand) to "Server Utilities" plugin. - Changes to the "Advanced HUD" plugin:
- Added display of remaining lives (credits) above the messages in Cooperative mode in the style of early builds of Serious Sam Xbox (
ahud_bShowLivescommand). - Removed the gap between the messages and the screen edge.
- If
hud_bShowClockis set to anything higher than1, it will now display seconds as an extra.
- Added display of remaining lives (credits) above the messages in Cooperative mode in the style of early builds of Serious Sam Xbox (
- Adapted a bunch of code for 1.10 engine version and specifically Serious Sam Revolution.
- Added an experimental build configuration for building the project under the Serious Sam Revolution engine.
- SamClassicPatch/WorldEditor#2 issue seems to have resolved itself a few releases ago and doesn't seem to happen anymore, so it is temporarily marked as fixed. If you encounter further issues with it, please leave a comment on that issue.
- Added button to context menu of any terrain editing mode for exporting the height map of a terrain that's usable on terrain primitives/brushes (next to 8-bit/16-bit export buttons).
Known issues
- SamClassicPatch/Mod#5
- SamClassicPatch/WorldEditor#1
Installation
- Download desired version of the patch (
TFE1.05_<date>.ziporTSE1.07_<date>.zipfor Steam). - Navigate to the game folder and extract contents of the ZIP archive into it.
- Agree to replace existing files (original unmodified copies of the files are included with an
_OGsuffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.groand drop it into the game folder to install Russian localization.