Releases: SamClassicPatch/SuperProject
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 (
ExtendedInput
property). - Allowed forcing a specific seasonal event with a global config property instead of automatically determining it (
ForceSeasonalEvent
property).
Mod changes
- Added command for toggling fade-out of
ModelHolder2
entities to allow them to be visible at any distance (gfx_bAdjustModelHolderMipFactor
command). - Extended upper limit of the
gfx_fEnvParticlesRange
command from2.0
to10.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.lst
for 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_bModernScrollbars
command).
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>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_RevResources.gro
and put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.gro
and 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>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_RevResources.gro
and put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.gro
and 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_bNotifyAboutUpdates
command with aNotifyAboutUpdates
config 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_fFOVChangeMul
command). - 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_fAxisPressThreshold
command 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_bCrosshairGradualColoring
command).
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.lst
file (in aWIDTHxHEIGHT
form, 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
PATCHLOCALIZE
chunk instead ofTTRS
to prevent it from being detected by the Depend utility. - Added
BigFill
type to theSlider:
property that creates big fill bars, akin to the volume sliders. - Added
Button
type 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
Toggle
config options with more than 2 values (sam_bConfigValueLists
command).
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
PlayerMarker
entities. 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_VERSION
macro to patch info that's displayed usingPatchInfo()
command. - Added new
ClassicsPatchAPI
shell 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
Range
option 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>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_RevResources.gro
and put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.gro
and 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_bNotifyAboutUpdates
command with aNotifyAboutUpdates
config 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_fFOVChangeMul
command). - 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_fAxisPressThreshold
command 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.lst
file (in aWIDTHxHEIGHT
form, 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
PATCHLOCALIZE
chunk instead ofTTRS
to prevent it from being detected by the Depend utility. - Added
BigFill
type 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.65
will add1 (0%)
,1.65 (65%)
and2 (100%)
values). - Added
Button
type 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
Toggle
config options with more than 2 values (sam_bConfigValueLists
command).
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
PlayerMarker
entities. 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_VERSION
macro to patch info that's displayed usingPatchInfo()
command. - Added new
ClassicsPatchAPI
shell 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>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_RevResources.gro
and put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_<language>.gro
and 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_bActive
command). - 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_bUsePlaceholderResources
command).
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
->Sergeant
andSpawner
->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
,Ughzy
andWalker
enemies from Serious Sam Revolution.Damager
andSoundHolder
entities 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_bDisableLocalPrediction
command). - Added commands for extra scaling of big fonts in console and NETRICSA (
con_fBigFontScale
andcmp_fBigFontScale
commands). - 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_fFOV
with constant 90 degrees in The Second Encounter. - Added command for switching Cannon viewmodel position between The First Encounter and The Second Encounter modes (
wpn_bTSECannon
command).
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
+tfe
command line argument for specifying path to The First Encounter. It's advised to use theTFEDir
config 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 = 1
afterwards. - 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_bDecoratedNames
command). - 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_iColorNames
command).
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_iActionButtons
command). - 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::map
template class. - Reworked
sam_bReinitWorld
command intosam_iWorldConverter
and improved its functionality. - Added compiler version using
_MSV_FULL_VER
macro to patch info that's displayed usingPatchInfo()
command. - Added Steamworks SDK to the repository and updated it to v1.59, including the
steam_api.dll
redistributable.
Known issues
- SamClassicPatch/Mod#5
- SamClassicPatch/Plugins#1
- SamClassicPatch/WorldEditor#1
Installation
- Download desired version of the patch (
TFE1.05_<date>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_RevResources.gro
and put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself. - (Optional) Download
SE1_ClassicsPatch_RUS.gro
and 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
SSRDir
andSSRWorkshop
properties 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_fViewFOV
command). - Viewmodel mirroring, a.k.a. left-handed mode (
wpn_bViewMirrored
command). - Display of active power-up particles (
wpn_bPowerUpParticles
command).
- 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_bVerticalSplitScreen
command).
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.com
and42amsterdam.net
respectively) 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_bVanillaQuery
command). - 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_bFixPlayerInfoSound
command).
Known issues
- SamClassicPatch/Mod#5
- SamClassicPatch/WorldEditor#1
Installation
- Download desired version of the patch (
TFE1.05_<date>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.gro
and 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
_Custom
mod 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_fGravityAcc
command). - 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
Steam
config 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_iCustomBloodColor
andgam_iCustomBloodTheme
commands). - Now all models in NETRICSA are loaded from predefined configs from
Models/CompConfigs
instead 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>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.gro
and 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
SSRDir
andSSRWorkshop
config 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
FullAppIntegration
switch 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_bEnable
command). 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_bFixTimers
command). - 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_iBigFont
command). - Added local indicators for spawn invulnerability via an active power-up and a power-up sound (
plr_iSpawnInvulIndicator
command). - Fixed
Woman
class not actually detaching an attached kamikaze in the editor, if needed. - Fixed
Walker
not being removed from fuss forMusicHolder
after 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 (
Beast
class) by lowering its health and attack run speed, and weakening its projectiles. - Prevent particles from
ParticlesHolder
from being hidden upon deactivation.
- Compatibility with Revolution levels:
- Aforementioned TFE key types.
- Added support for new blend modes to
BlendController
,WorldBase
andWorldSettingsController
. - 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_iQuickSaveSlots
as "persistent" to save its value inPersistentSymbols.ini
between sessions. - Applied vertical screen edge offset from "Advanced HUD" plugin (
ahud_iScreenEdgeY
command) to centered & pickup messages and "Analyzing..." label. - If
hud_bShowClock
is 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_bLevelFiltering
command).
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
!login
chat command during the game with passwords configured by the server (ser_strAdminPassword
andser_strOperatorPassword
commands). - Added
!rcon
chat command for server operators for executing console commands on the server side. - Added
!save
chat 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_iReplaceAmmo
command) 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_bShowLives
command). - Removed the gap between the messages and the screen edge.
- If
hud_bShowClock
is 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>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.gro
and drop it into the game folder to install Russian localization.
1.6.2 patch
This small patch contains a few adjustments and fixes.
Complete description of the patch for the latest version.
Changes since 1.6.1
Common changes
- Fixed
IncludeScript()
shell function taking an integer argument by mistake instead of a string. - Added support for reading properties types of Serious Sam Revolution entities.
Game changes
- Made sure that oversized fonts that are used in the menu fit within their appropriate height.
- Fixed another crash related to listing levels from Serious Sam Revolution.
Other changes
- Made "Maximum Ammo" setting from "Server Utilities" override properties of PlayerMarker entities that take all ammo of specific weapons.
- Fixed HUD color presets not applying because of the
IncludeScript()
issue in "Advanced HUD". - Potentially fixed all issues related to random "Cannot set function patch" errors.
- Fixed Serious Editor not working under the Debug build configuration.
- Fixed incorrect utilization of the patch config by tool applications by loading it too late.
- Made a few function patches more efficient.
Known issues
- SamClassicPatch/CoreLib#9
- SamClassicPatch/EnginePatches#1
- SamClassicPatch/Mod#3
- SamClassicPatch/Mod#5
- SamClassicPatch/WorldEditor#1
- SamClassicPatch/WorldEditor#2
Installation
- Download desired version of the patch (
TFE1.05_<date>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.gro
and drop it into the game folder to install Russian localization.
1.6.1 patch
This sizeable patch improves upon the features introduced in the last update and adds new features for convenience and server setup.
Complete description of the patch for the latest version.
Changes since 1.6
Common changes
- Reworked application path logic to allow the patch binaries to be standalone under their own
Bin
directory. - Fixed third-party entity packs not loading with the custom mod turned on.
- Started treating
GameGUI
library as a plugin, just like theGame
library. - Completely reworked INI configs that fixed some bugs and implemented new features:
- Proper support for boolean, integer and double value types.
- Ability to add spaces around keys and values that are automatically trimmed.
- Ability to surround the value in quotes (
"
) for preserving spaces around the string.
- Every time the console is resized (reinitialized), it will now skip empty lines in the beginning before restoring the console log.
- Restored rain on The First Encounter levels in The Second Encounter in the most compatible way possible.
- Added console command for toggling automatic shadow update upon loading into games or playing demos (
gam_bAutoUpdateShadows
command).
Mod changes
- Built limited version of the mod for v1.05 versions of games, including The First Encounter.
- This version only contains custom
Game
andGameGUI
libraries without entity logic, which is only compatible with The Second Encounter v1.07.
- This version only contains custom
- Fixed crash upon joining servers with prediction on: SamClassicPatch/Mod#1
- Restored vanilla logic of resetting the overlaid observer views if it's set to more than 3 views (when Num 4 is pressed, for example).
- Made
EnvironmentParticlesHolder
render its particles outside of the defined boundaries on TFE levels to restore the original rain rendering.
Game changes
- Added a new field for a client password in the menu with player configuration before connecting to some server (
cli_strConnectPassword
command). - Added new options config for setting
Data/ClassicsPatch/Config.ini
properties for the next time the game starts. - Added new button to the server configuration menu for accessing extra server options from the patch (from
Scripts/ClassicsPatch/02_ServerSettings.cfg
). - Fixed "Give Laser" and "Give Cannon" options from the "Server Utilities" plugin affecting wrong weapon slots in The First Encounter.
- Added new connection setting ("Classics Patch preset") that can be customized by the user in the patch settings before selecting it (
cli_bCustomPrediction
,cli_iCustomBufferActions
,cli_iCustomMinBPS
andcli_iCustomMaxBPS
commands).
Server changes
- Fully reimplemented processing of the
MSG_REQ_CONNECTREMOTESESSIONSTATE
packet.- Made server check for any additional information at the end of the packet and see if the client runs the same patch version as the server.
- Made client send additional information at the end of this packet, i.e. the patch identification tag and a version of the installed patch.
- Added new setting that only allows clients with the same patch to connect to the server by checking that additional information (
ser_bForbidVanilla
command).
Other changes
- Patch built under the "Debug" configuration will now load plugins from the same subdirectory as the game libraries (i.e.
Bin/Debug/Plugins
instead ofBin/Plugins
). - Replaced
PatcherOutput
file next to executables with a convenientDebugPatcher
property in the patch config.- Removed unnecessary notifications with debug actions, since they're printed into the log file as well.
Known issues
- SamClassicPatch/CoreLib#9
- SamClassicPatch/WorldEditor#1
- SamClassicPatch/WorldEditor#2
Installation
- Download desired version of the patch (
TFE1.05_<date>.zip
orTSE1.07_<date>.zip
for 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
_OG
suffix at the end of the name). - (Optional) Download
SE1_ClassicsPatch_RUS.gro
and drop it into the game folder to install Russian localization.