Skip to content

Releases: SamClassicPatch/SuperProject

1.8 update - "Steamy Observation"

28 May 08:50
Compare
Choose a tag to compare

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 and Spawner -> 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 and Walker enemies from Serious Sam Revolution.
    • Damager and SoundHolder 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 and cmp_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 the TFEDir 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).

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 and skipped them if functions don't exist 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 (similar to the ones from Advanced Multiplayer 2 mod).
  • Added ability to separately customize color of player names in the list and tags (ahud_iColorNames command).

Local Cheats

  • Now a warning is displayed upon trying to execute local cheats while connected to a remote server to prevent bad synchronization.

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 into sam_iWorldConverter and improved its functionality.
  • Added compiler version using _MSV_FULL_VER macro to patch info that's displayed using PatchInfo() command.
  • Added Steamworks SDK to the repository and updated it to v1.59, including the steam_api.dll redistributable.

Known issues

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_RevResources.gro and put it in the game folder if you intend on playing Revolution levels without mounting Revolution itself.
  5. (Optional) Download `SE1_ClassicsPatch_RU...
Read more

1.7.2 patch

13 Jan 14:31
Compare
Choose a tag to compare

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 and SSRWorkshop 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).
  • 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 and 42amsterdam.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

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.7.1 patch

19 Dec 13:59
Compare
Choose a tag to compare

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, like ClassicsPatchMod) 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 and gam_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 !) using Mods: 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

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.7 update - "Compatibility Mode"

21 Oct 22:37
Compare
Choose a tag to compare

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 and SSRWorkshop 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:
    1. Mod directory.
    2. Mod directory on a CD.
    3. Extra content directories specified in Data/ContentDir.lst.
    4. Root game directory.
    5. Directories of other game installations.
    6. 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.
  • 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).
  • 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 for MusicHolder 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] and ctl_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 and WorldSettingsController.
    • 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 in PersistentSymbols.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 than 1, 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 and ser_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 than 1, it will now display seconds as an extra.
  • 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

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.6.2 patch

16 Jul 13:13
Compare
Choose a tag to compare

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

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.6.1 patch

09 Jul 18:25
Compare
Choose a tag to compare

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 the Game 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 and GameGUI libraries without entity logic, which is only compatible with The Second Encounter v1.07.
  • 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 and cli_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 of Bin/Plugins).
  • Replaced PatcherOutput file next to executables with a convenient DebugPatcher property in the patch config.
    • Removed unnecessary notifications with debug actions, since they're printed into the log file as well.

Known issues

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.6 update - "Anniversary Update"

22 Jun 14:30
Compare
Choose a tag to compare

This is a commemorative update that celebrates one full year since the first release of Classics Patch. It implements a big amount of new quality-of-life features and enhances multiplayer experience for the clients.

Click here to check out the release trailer!

Complete description of the patch for the latest version.

Changes since 1.5.1

Brand new mod

  • Laid a foundation for a special mod exclusively for the patch that will fix more intricate issues and expand gameplay possibilities in the future. Only for The Second Encounter v1.07!
    • This mod will be automatically activated in the main game and in mods that don't utilize custom DLL files for enhancing the overall game experience (which can also be disabled, if needed).
  • By popular demand, made text font in NETRICSA larger if the resolution is higher than 720 pixels (gam_bBigComputerFont command).
  • Made background menu elements scale properly for different aspect ratios.
  • Added game theme customization for menu elements, console and NETRICSA to fit with custom HUD themes introduced by Advanced HUD plugin (gam_strClassicsPatchTheme command contains a path to an INI config with the theme to set).
  • Synchronized text colors in Player and PlayerWeapons entities with HUD themes from Advanced HUD.
  • Added command for changing fade time of the console (con_tmConsoleFade command).
  • Allowed game's mouse pointer to be rendered in borderless window mode (gam_bShowPointerInBorderless command).
  • Added ability to display advanced observer view windows to the side of the main view instead of over it and added a slider to adjust their width (instead of taking up 25% of the screen).

Common changes

  • Implemented methods for compressing data for network packets and reworked custom packet logic.
  • Implemented interface for sending HTTP requests.
  • Implemented a parser for simple INI configuration files and utilize INI configs for simpler customization of various elements of the patch.
  • Fixed broken shadows on brush polygons from dynamic lights after loading a saved game.
  • Fixed fullbright brush polygon layers on The First Encounter maps due to engine differences in The Second Encounter.
  • Fixed shade color during storm on The First Encounter maps in The Second Encounter.
  • Added a configuration file for the whole patch with global properties that's loaded before the engine (located at Data/ClassicsPatch/Config.ini).
    • Path to The First Encounter is now specified in TFEDir property within the config instead of a separate file at Data/ClassicsPatch/TFE_Dir.var.
  • Added Russian font for Revolution HUD theme to the localization.
  • Added a useful shell function for executing script files because include command doesn't support string variables (IncludeScript() command).
  • Made API hooks work more reliably and fixed some edge cases that didn't call them.
  • Fixed a serious issue from vanilla that caused a crash for all clients and the server if any of the clients tried changing their player character while not being fully connected (i.e. during the <player name> connected message on screen).

Game changes

  • Removed GoneSpy from the "Legacy master server" list due to being shut down.
  • Made confirmation popup dialogs more customizable and made their width fixed on every aspect ratio.
  • Implemented automatic checks for new patch updates and a prompt display to download them upon starting the game (sam_bNotifyAboutUpdates command toggles these notifications).
  • Added command for listing levels that match a wildcard string (ListLevels() command).
  • Added commands for quickly starting levels from the console (cmd_iGoToMarker, cmd_bServer, and StartMap() commands).
  • Added extra menu before any level list with categories for separating one huge level list into smaller lists, such as official games and user-made content (sam_bLevelCategories command toggles this feature).
  • Added a new Games: parameter for option configs to hide settings that don't belong in a specific game or engine version. For example, to hide sniper scope customization options for Advanced HUD in The First Encounter.
  • Added a new List: parameter for option configs for generating a list of value options from files under a specific directory instead of statically specifying paths to them by hand. This list can also be statically populated with extra string values, if needed.

Server changes

  • Fully reimplemented processing of the MSG_REQ_CHARACTERCHANGE packet.
  • Added custom processing of the MSG_ACTION and MSG_SYNCCHECK packets.
  • Backported MSG_REP_DISCONNECTED packet from Serious Engine 1.07 to 1.05 and made clients send it when appropriate.
  • Made sync check calculation separate for each client.
  • Implemented GUID masking of player characters to prevent other server clients from stealing them (ser_bMaskGUIDs command).

Warning

Due to engine limitations, if server saves a map with GUID masking on, reconnecting players will not be attached to their dummy player entities and will instead spawn as if they connected for the first time.

  • Fixed incorrect patches of packet handling methods which couldn't process more than one packet at a time.
  • Made client log automatically load upon program initialization and resave every time the current game ends.
  • Implemented some built-in extension packet types for synchronized entity manipulation with corresponding console commands (prefixed with pck_).
  • Added command for notifying clients about bad syncs whenever their game state doesn't sync with the server (ser_bReportSyncBadToClients command).
  • Fixed client muting not working if chat messages aren't limited or the anti-flood system is disabled.
  • Simplified output of a client log and added ability to display full information about a specific client identity.

Plugin changes

  • Made plugins read configuration files with the same name as the library (but with a .ini extension) with custom properties that the plugin may need.
  • Changes to the "Advanced HUD" plugin:
    • Made icon shake upon value change toggleable (ahud_bIconShake command).
    • Made high score display in Singleplayer/Cooperative modes toggleable (ahud_bShowHighScore command).
    • Made depleted ammo icons toggleable (ahud_bShowDepletedAmmo command).
    • Made sniper scope display health level of a target like a normal crosshair (ahud_bScopeColoring command).
    • Adjusted text colors of the player list and current score for Revolution theme.
    • Adjusted position of the match info (TIME LEFT etc.) to follow set screen edges and scale the position properly.
    • Made the plugin somewhat compatible with mods that modify standard entities. It won't show linking errors on launch anymore and it can be loaded into compatible mods via the config (SameHook=1 property).
    • Replaced static list of HUD color presets with a list of custom configs that reside in the Scripts/ClassicsPatch/HUDColorPresets directory.
  • Added new cheat to "Local Cheats" for triggering entities at the crosshair position like vanilla cht_bOpen (cht_Trigger() command).
  • Fixed "Server Utilities" allowing replacement of items with invalid or nonexistent item types, which it will now reset to type 1 (such as Knife weapon type in vanilla).
  • Implemented IListenerEvents interface for plugins for catching event-related logic within entities.
  • Implemented IDemoEvents interface for plugins for custom logic upon recording and playing demos.
  • Added hooks to INetworkEvents upon adding and removing player entities (joining and leaving the server).

Other changes

  • Implemented macro switches for excluding specific features from building.
  • Updated example plugin project with more code examples.
  • Updated documentation (wiki) structure to be easier to navigate.

Known issues

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.5.1 patch

26 Mar 19:08
Compare
Choose a tag to compare

This is a patch for the 1.5 update that mostly includes changes that didn't make it into the full release due to the lack of time.

Complete description of the patch for the latest version.

Changes since 1.5

Common changes

Other changes

  • Changes to the "Advanced HUD" plugin:
    • Reworked many parts of the plugin for easier maintenance of multiple HUD themes.
    • Added new Revolution HUD theme.
    • Made health and armor boxes dynamically stretch to fit bigger values in them (up to 5 digits, i.e. 99999).
    • Backported local PC time display on top of the HUD using a hud_bShowClock command from TSE to TFE.
    • Added ping display next to the stats in the player list (ahud_iShowPlayerPing command).
    • Added command for toggling rendering of the ammo row (ahud_bShowAmmoRow command).
    • Added commands for colorizing different elements of the HUD with color presets.
    • Fixed sizes and positions of specific elements, such as oxygen & boss health bars and high score centering.
    • Made ahud_bEnable command work without having to manually disable the CPlayer::RenderHUD(...) patch.

Known issues

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.5 update - "Platinum Edition"

21 Mar 19:28
Compare
Choose a tag to compare

This is a commemorative update released for the 22nd anniversary of Serious Sam that unifies both classic games under The Second Encounter. A so-called "fusion" update for Serious Sam Classics titled "Platinum Edition".

Complete description of the patch for the latest version.

Changes since 1.4.2

Common changes

  • Patched engine's file system and repurposed engine's "CD path" to be used to specify a path to The First Encounter installation directory for The Second Encounter.
    • Added console command for specifying a path to The First Encounter during the game (sam_strTFEDir command).
  • Patched world loading and implemented interface for automatically converting worlds from The First Encounter format into The Second Encounter to allow playing levels from both games without manual conversions.
    • Added console command for forcing complete reinitialization of worlds upon loading, as if they were resaved in the editor (sam_bReinitWorld command).

Game changes

  • Added +tfe as an alias for the +cdpath launch argument.
  • Made +tfe launch argument apply to mods upon launching them from the menu.
  • Fixed tooltips in the level list being stuck if any levels were marked with an unusual format.
  • Marked levels from The First Encounter directory with a special format.
  • Allowed displaying more characters per line in the console, which dynamically scales with the game resolution.
  • Fixed textbox options not executing scheduled commands specified in option configs.

Other changes

  • Reworked and improved unzipping functions separate from the engine.
  • Fixed certain issues related to memory allocation of patched streams.
  • Fixed plugins being forcefully released even if they might still be in use.
  • Added IGameEvents and IWorldEvents event interfaces for plugins, moving some methods from INetworkEvents into IGameEvents.
  • Added console command for getting a function patch index by its assigned name (GetFuncPatch() command).
  • Added new "Advanced HUD" plugin that replaces vanilla HUD and implements various improvements and additions to the HUD. Includes three classic themes usable across all games.

Known issues

Installation

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.

1.4.2 patch

23 Feb 14:35
Compare
Choose a tag to compare

This small patch fixes a few annoying bugs.

Complete description of the patch for the latest version.

Changes since 1.4.1

Game changes

  • Implemented a temporary fix that prevents termination of server list enumeration upon receiving a packet with player list instead of the server information from the master server.
  • Implemented a workaround for skipping duplicate server listings (i.e. the servers with the exact same address but different ping).
  • Fixed "42amsterdam" master server freezing the game indefinitely upon listing servers via Legacy protocol (thanks to @tx00100xt).

Other changes

  • Fixed SKA models not being affected by fog and haze if their surfaces were fullbright.
  • Added extra option to the FOV adjustment setting that makes it fix vertical FOV only while viewing from the the player and not an external camera or any other entity (sets sam_bUseVerticalFOV to 2).
  • Fixed crash upon starting a new game with autokill cheat being enabled beforehand.
  • Made autokill cheat work in a safer manner.

Known issues

Installation

If you're upgrading from version 1.3.1 or earlier, clear the Bin/Plugins folder within your game folder before installing this version!

  1. Download desired version of the patch (TFE1.05_<date>.zip or TSE1.07_<date>.zip for Steam).
  2. Navigate to the game folder and extract contents of the ZIP archive into it.
  3. Agree to replace existing files (original unmodified copies of the files are included with an _OG suffix at the end of the name).
  4. (Optional) Download SE1_ClassicsPatch_RUS.gro and drop it into the game folder to install Russian localization.