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 atData/ClassicsPatch/TFE_Dir.var
.
- Path to The First Encounter is now specified in
- 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
, andStartMap()
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
andMSG_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.
- Made icon shake upon value change toggleable (
- 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
- SamClassicPatch/CoreLib#9
- SamClassicPatch/Mod#1
- 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.