Releases: DreamyCecil/Serious-Engine
[Snapshot] 2024-09-09 - Linux support
Outline
This snapshot implements initial support for Linux operating systems with working DedicatedServer & SeriousSam projects, as well as a lot of fixes and improved support of game controllers.
Code cleanup
- 84b2d74 - Removed additional inclusion of
io.h
from various source files since it is already included inEngine/Base/FileSystem.h
for Windows. - 7fae8c4 - Moved
EAX_ENVIRONMENT_*
enum values under a separate header file. - cde4405 - Removed
extern
keyword from variable definitions. - e510e60 - Removed old unused code for disabling some Windows actions.
- 8c07199 - Removed GCC inline assembly code from math functions.
- ee633cb - Removed some Win32-isms.
Code changes
- 1dba771 - Added function for displaying error messages without terminating the game.
- Filesystem improvements:
- 1f4221e - Reworked filename methods of
CTString
to make them recognize and process forward slashes in paths as well. - 336f9fa - Replaced various
fopen()
calls withFileSystem::Exists()
in stream methods. - af67faa - Added a cross-platform alternative to the standard
fopen()
method. - 7c45372 - Adapted path-related code to Unix filesystems.
- c52ac15 - Made application paths be determined on non-Windows systems.
- 1f4221e - Reworked filename methods of
- 92a979b - Created strong typedefs for Win32 handle types for non-Windows platforms.
- e68d0bf - Slightly improved
_strupr()
implementation for Unix systems. - 23374a9 - Added support for running the entire engine on the same thread.
- Master server query rework:
- 5e98924 - Fixed
ser_bEnumeration
being ignored when working with master server. - 9f062b4 - Replaced GameAgent code with query manager from Classics Patch.
- Added support for "DarkPlaces" master server protocol.
- Adapted query manager code to Unix.
- 5e98924 - Fixed
- Linux support:
- 402ec96 - Adapted ECC code to Unix.
- 3e2a626 - Adapted thread synchronization code to Unix.
- 50fc784 - Adapted smaller chunks of code for Unix.
- bc51639 - Adapted SeriousSam initialization code to Unix.
- 58daa17 - Adapted communication interface code to Unix.
- d2c095c, 22b8c42 - Adapted graphics code to Unix.
- ffc597f - Adapted DedicatedServer code to Unix.
- 50996f7 - Made engine gather info about hardware upon initialization on Unix.
- e47ed4f - Added name hashes to shell symbols for retrieving symbols faster.
- d362f78, 35b096d - Linked Ogg Vorbis library statically under static configurations.
- Input & window events rework:
- 6869a57 - Refactored and abstracted code related to input & game window events.
- a4df5eb, 06a54b4 - Separated second mouse and joystick functionality from the main input code.
- ca4a0c9 - Made
OS::GetCursorPos()
method work more likeSDL_GetMouseState()
and removedOS::ScreenToClient()
method. - a5dad01 - Reworked window & input messages into their own custom cross-platform events.
- 0887a76 - Replaced Windows Multimedia Joysticks functionality with
SDL_GameController
. - 9e55e76, d69b6f9 - Implemented full input support using SDL, if it's preferred, and added proper support for Mouse Button 4 and Mouse Button 5.
- 162c6a2 - Added method to
OS::Window
for retrieving the native window handle under Windows platforms.
Fixes
- Various cross-platform fixes:
- e6bdc8f - Made
CSelection
template code more cross-platform. - f481f57 - Got rid of
I64
suffix from 64-bit integer values. - 77b68d9 - Replaced the last
Sleep()
methods withCTimer::Suspend()
in SeriousSam. - 3ba2c46 - Added
const
specifier to reference arguments in some game functions. - 0e6b6c2 - Fixed zlib compression for network packets under Unix.
- e6bdc8f - Made
- f5322e2 - Used full path to
MenuPrinting.h
relative to SeriousSam project inMenuGadget.h
. - Implicit string conversion fixes:
- a6db89c - Fixed various warnings and errors for GCC.
- 4d04da7, 8ae5d8a - Got rid of various comparisons of
this
withNULL
that might have been optimized away by GCC. - 9c3fe44 - Fixed minor issues from warnings.
- 64d77ec - Fixed assertions upon trying to render computer images in Deathmatch.
- bca14aa - Fixed compilation errors under newer C++ standards using MSVC.
Project cleanup
- 8160332, 09ccafa - Renamed
Statistics_Internal.h
toStatistics_internal.h
for case consistency. - 6583db4, 0e7657e - Fixed filename case of some included headers.
- c5d6d96, e005e80 - Fixed casing in names of some headers.
- 7e58616 - Removed deprecated compiler option from project files.
Project changes
[Snapshot] 2024-08-11 - Quality-of-life features & fixes (Pt. 4)
Outline
This snapshot introduces a new "extra content directories" system, adds support for more aspect ratios and resolutions by the game window and fixes a few issues.
Code cleanup
- de2bf44 - Replaced
SE1_D3D
macro with a newSE1_DIRECT3D
macro switch in the config that can be easily toggled instead of having to define it for all projects. - 730f8b3 - Reworked
SE1_3DFX
macro into macro switch in the config that can be easily toggled instead of having to define it for all projects.
Code changes
- 954ec4d - Added new server-to-client packet for making clients dump synchronization data on bad syncs for debugging purposes.
- ae3051d, de61379 - Added more options for the game window:
- Added support for multiple aspect ratios with more resolutions for each of them.
- Made native screen resolution be automatically added under the closest aspect ratio list.
- Added "Borderless" window mode.
- Made the game window DPI-aware to prevent it from being scaled by Windows.
- a79174f - Moved binary data generated by game & tool applications under the "UserData" directory as well.
- ee4c7cd - Moved ZIP entry class definition into the header file and added a method for retrieving a specific entry by its index.
- Added support for extra content directories for loading resources from other games and folders:
Fixes
- f70d891 - Fixed other player controls not loading when selecting their presets.
- a5a9cff - Fixed some compilation errors under Visual Studio 2010 and Visual Studio 2013.
- e0d81c6 - Fixed compilation error when Direct3D support is enabled without Truform support.
- 02dbc5a - Wrote a Direct3D implementation for the
gfxSetTextureMatrix2()
method that's used solely by the terrain system.
[Snapshot] 2024-07-13 - Quality-of-life features & fixes (Pt. 3)
Outline
This snapshot focuses on fixing various issues, some of which were left by the last release.
Code cleanup
- 555036f - Removed unnecessary
DllMain()
function from Engine.
Code changes
- 4adbdfa - Made the game store all user files under the
UserData/
directory. - 13acf41, 79c719a - Made the engine store log files under the
Logs/
directory. - Fixed unreliable logic related to player jumping.
- fe26720 - Added
SE1_DOUBLE_TIMER
macro switch for toggling double-precision timer values.
Fixes
- 1e3c80d - Made the engine detect the game directory from any subdirectory under
Bin/
. - e04bd9a - Adapted perspective projections and drawports to wider aspect ratios.
- 2bf95e5 - Fixed rare crashes related to non-existing sound interface.
- 38df2e9 - Replaced console warning in
CStaticArray::New()
with the old commented assertion. - bd97444 - Made sure that the internal mask shader is set only once to avoid assertion spam.
- 5fc305d - Commented out an unnecessary assertion in
CTFileStream::Close()
. - 9c0acdb - Adapted HUD code from EntitiesMP to double-precision timer values.
- 9eb6ff8 - Fixed some more GCC-specific warnings and errors.
- bd09bbe - Converted backslashes into forward slashes in the filename that's passed into ECC.
- 6398a4c - Made engine skip IFeel initialization on non-Windows systems.
[Snapshot] 2024-07-11 - Static building support
Outline
This snapshot focuses on adding configurations for static building of all dynamic libraries and linking them by including their code into individual executable files.
Code cleanup
- 5bf6327 - Moved entity component management methods from
CEntityClass
toCDLLEntityClass
. - b859216 - Reworked exporting and importing APIs for different modules.
- 208ad40 - Reformatted more conversions of filenames and strings.
- a5b1886 - Moved all code related to
wed_bUseGenericTextureReplacement
into Engine. - 2eb1ffc, 2f1a3cb - Removed wrappers of GameMP's LCD functions from SeriousSam.
- 5479a52 - Marked
CTString::Split()
as const.
Code changes
- Reworked entity classes and shaders to register themselves in special engine registries upon dynamic module initialization.
- de22950 - Added OS structure for dynamic modules that utilize the engine.
- 2b035bd - Made entity classes and shaders utilize new engine module structure.
- Reworked various dependencies on EngineGUI, GameGUIMP and GameMP projects.
- 0c066e3 - Added interface class for EngineGUI module in the engine.
- 3217027 - Reworked EngineGUI to utilize its new engine interface.
- d506c8f - Directly linked and utilized GameMP and GameGUIMP libraries.
- 7fb0d61 - Used some functions directly from GameMP instead of accessing them through the shell.
- Support for static linking of all projects.
- 81250d8 - Defined some variables and functions only used within their source files as static.
- 4875d45 - Renamed
_hwndMain
to_hwndCurrent
in Engine. - 42218e7, 5e379bb - Used custom prefix for Bison/Flex scripts in SeriousSkaStudio.
- fe3cfdf, aaee7b9 - Defined some inline methods properly in Engine.
- 8002d64 - Adapted engine code to the new static build configurations.
- b1e1e26 - Add
CTString
method for converting any path in the string into a full absolute path. - 139d0e2 - Implemented a new improved method for determining application paths on demand and a method for creating all subdirectories in a path relative to the game directory.
- Prevented
_fnmApplicationPath
and_fnmApplicationExe
variables from being accidentally modifiable. - Obsoleted and removed
IgnoreApplicationPath()
andUseApplicationPath()
functions because of constant path variables.
- Prevented
- 86b6187 - Made SeriousSam launch mods using the exact same executable filename and removed old functions for launching mods and teasers after the game.
Project changes
- cedffb3 - Added new build configurations for static building of some projects.
- Renamed "Debug" and "Release" build configurations to "Dynamic-Debug" and "Dynamic-Release".
- Renamed property sheets for dynamic build configurations from "Debug.props" and "Release.props" to "DynamicDebug.props" and "DynamicRelease.props".
- Added property sheets for static build configurations.
- Added missing "DisplaceShader.cpp" source file to Shaders project.
- 401b5bc - Added special source files for statically linking specific projects.
- 2ab9628 - Sorted built binaries into their own Bin folders.
- 6a34742 - Appended "-Dynamic" and "-Static" suffixes to built executables depending on the build configuration.
[Snapshot] 2024-05-29 - Quality-of-life features & fixes (Pt. 2)
Outline
This snapshot focuses on extended support of SDL functionality, reworks identification of applications for the engine, reworks fundamental support of different sound APIs and fixes a few bugs.
Code cleanup
- 30b7448 - Removed obsolete and unused
CMessageDispatcher::md_strGameID
field. - 230eed6 - Reworked configuration header and moved it outside the Base directory.
- 8240cf7 - Initialized IFeel via a new external method to reduce clutter in the main engine source file.
- bdb431f - Added own implementation of bit rotation for
CTString::GetHash()
. - f748db4 - Marked some character arrays as
const
inChoosePixelFormatTB()
method.
Code changes
- 76b2a9b - Replaced game ID string and global application flags upon engine initialization with a new engine application type.
- a8d3d5c - Reworked sound library to rely on dynamic sound API classes that switches between them when needed. WaveOut and DirectSound (with EAX) interfaces are now separate from each other and reside under their own source files.
- 9f49f26 - Disabled DirectSound on non-Windows platforms and disabled any interaction with the sound library when running a dedicated server application.
- Better SDL support.
- a25a435 - Slightly adjusted code for timers.
- d7834a5 - Made
CTempDC
class compatible with SDL window management. - f8bb408 - Made SDL automatically initialize and shut down in the engine if it's available.
- 00765dd - Added temporary solutions for
HWND
usage if SDL usage is preferred. - e0173c7, b43d80f - Made SDL manage windows of the game client if its usage is preferred.
- Implemented OpenGL rendering using SDL.
- 185f496 - Refactored initialization code for graphics APIs.
- 197efd7 - Made SDL setup OpenGL display adapter if its usage is preferred.
- 4e737a9, 1d32618, 6e0e7cd - Implemented OpenGL rendering using SDL if its usage is preferred.
- 69cf253 - Added SDL Audio as an alternative sound interface for non-Windows platforms.
- 6141825 - Made SDL permanently available in the engine regardless of the platform.
- 56bcf61 - Dynamically filled arrays of graphics & sound APIs for in-game options using available interfaces from the engine.
- 131d219 - Determined CPU speed on non-Windows platforms.
Fixes
- 6045225 - Renamed
thread_local
macro toSE1_THREADLOCAL
to avoid conflicts. - a4c6d06 - Specific fixes for potential support of the MSVC 6.0 compiler.
- 533babb - Fixed incorrect calling conventions when using GLEW under the
x86
platform. - f97a053 - Adjusted assertions inside
CTString::GetSubstr()
andCTString::GetChar()
methods to prevent them from being triggered on empty strings when searching from the very beginning. - 693a3d1 - Compatibility fixes for
OS::Window
and dynamic library loading. - fc593ab - Exported
FileRequester()
function from EngineGUI via C API. It also fixed the bug where it couldn't be loaded because it expected aCTFileName
as one of the arguments, which doesn't exist in the engine anymore.
Project cleanup
[Snapshot] 2024-02-04 - Quality-of-life features & fixes (Pt. 1)
Outline
This snapshot implements new third party modules for future functionality, reworks fundamental support of different graphics APIs and fixes a few important crashes.
Code cleanup
- af56069 - Added proper comments to
CEntity
methods related to predictions to help clear up any confusion on what each method does.
Code changes
- 2985078 - Completely cleaned up code of various templates and improved their functionality.
- Reworked back end for graphics APIs.
- 5d22a72, 0d0ae39, 4b31f60 - Reworked type checking of graphics APIs.
- 4638bcc, 084c643 - Allowed some methods to work with any graphics API type.
- f186638 - Moved
GfxAPIType
enum fromGfxLibrary.h
toGfx_wrapper.h
to make it more accessible. - e254447, 09acb74, ee500fd, 84895d6, 01788cc - Organized existing graphics APIs into proper interfaces instead of relying on generic function pointers in global scope.
- 8fd0081 - Made sure that
GetWindowsError()
can format the message at all. - 9b027c8 - Added OS method for loading libraries or throwing exceptions on any error during loading.
- 7009d1c, a0f4154, fd68c34 - Added support for Simple DirectMedia Layer that's disabled on Windows by default.
- 2e57cf9, a1ef45f - Added optional support for The OpenGL Extension Wrangler Library.
- b98a6ff - Surrounded all Truform-related code with a
SE1_TRUFORM
macro switch. - 05f7831 - Surrounded all 3Dfx-related code with a
SE1_3DFX
macro. - 2072bf9 - Added base for a cross-platform window handler class and utilized it in all projects, excluding those that utilize MFC.
- 29b238f, 38d38af - Reworked
CTString
methods and added new useful ones to be functionally close tostd::string
.
Fixes
- 30150ce - Restored
this == NULL
checks forCNetworkLibrary
methods. - 8f8789a - Fixed issues with mismatching sizes of
INDEX
andtime_t
types. - 80cf095 - Fixed crash upon creating an animated texture from the root game directory.
- 75a5592 - Made error message upon opening the log for writing more informative in order to understand what caused it.
Project cleanup
- 27b8bff - Removed profile-specific control files that are generated upon starting the game anyway.
Project changes
[Snapshot] 2023-10-19 - World Editor hotfix
Outline
This snapshot fixes a bug left by the last release that made Serious Editor unusable and restores all logic of the GameGUI library.
Fixes
[Snapshot] 2023-10-18 - Code quality fixes
Outline
This snapshot compiles fixes related to building code under different configurations and using compilers other than MSVC.
Code cleanup
- d8c0a16 - Removed useless template definitions.
- 2e8d74b - Removed unused string from the scan upon parsing axis actions during controls loading.
- 56b3266 - Fixed some minor code quality issues.
- 0a83caf - Added proper include guard to
Gfx_wrapper.h
and added a coupleSE1_D3D
macro blocks.
Code changes
- ffb710b - Improved architecture and system detection in the config header and add automatic macro switch for Unix operating systems.
- 59e3b7c - Replaced Windows methods for working with dynamic libraries with the ones from the new OS interface.
- ad45449 - Utilized cross-platform
thread_local
keyword for marking specific variables. - 9015daa - Disabled IFeel and multimonitor support on non-Windows platforms.
- 4155e9d - Added support for
TIME
being a double-precision floating-point type (i.e. exponentially more precise timer ticks). - 361b818 - Replaced
Sleep()
method from Windows API with a new cross-platformCTimer::Suspend()
method. - cf2978c - Made registry methods exclusive to the Windows platform.
- 9754e73, 660c6ed - Made all interactions with the file system cross-platform by replacing Windows API methods with a new
FileSystem
interface. - cca9105 - Replaced
CTStream
operators for writing and reading ofCTFileName
with proper methods for easier differentiating between serialization of filenames and simple strings. - 25e3bbb - Completely removed
CTFileName
as a separate class and migrated all of its methods and functionality intoCTString
.CTFileName
is now an alias forCTString
for compatibility reasons. - b9bfab4, 637a5d0 - Replaced BSP template classes with proper classes based on
DOUBLE
precision and 3D space. - 8a8db08 - Made shell class initialize before anything else.
- 0cd5dda - Added some methods from Windows API to the cross-platform OS interface and utilize them instead of Windows API directly (for future cross-platform support).
Fixes
- c760daf - Utilized new macro switches for detecting Windows and Unix platforms everywhere.
- 91db734 - Utilized integer types from the engine everywhere for consistency.
- a184bb8 - Fixed compilation errors and warnings related to engine templates.
- 704bad5, 766091d, 60cd2e0, 179cb18 - Fixed a lot of GCC-specific errors and warnings.
- 7081d0a - Added alternatives to a couple of code chunks for GCC.
- 61d85b7 - Fixed errors related to Direct3D support:
- Fixed all build errors under
x86
with Direct3D support enabled. - Fixed errors under
x64
from simply having Direct3D headers under any appropriate include directory. - Added a new header file with dummy Direct3D types used by fields of graphics classes in case Direct3D support is disabled.
- Fixed all build errors under
- 97c1496 - Fixed a crash upon trying to snap brush vertices in Serious Editor without selecting any vertices.
- 3d7d5f6 - Made
ModelPolygonVertex
remember indices of set vertices in new fields instead of converting pointers into index storages and vice versa for serialization. - 55e723a - Fixed conversions of
CTFileName
&CTString
intoconst char *
for printing; reformatted conversions ofconst char *
&CTString
intoCTString
&CTFileName
. - cd8123c - Optimized code related to memory management for GCC.
- d7e4200 - Fixed weird behavior of sounds with
SOF_LOCAL
flag set for predicted listeners. - a0e2b6f - Disabled
CSetPriority
logic for non-Windows platforms. - 30fdfae - Fixed some code quality issues within memory streams and replaced usage of
VirtualAlloc()
andVirtualFree()
with byte array allocation. - 06ceabf - Added some missing types for non-Windows platforms.
Project changes
- b651c70 - Adjusted project properties related to precompiled headers.
- 71f7688 - Replaced backward slashes with forward slashes in paths to ES files for custom building.
- ddc25d1 - Added source files with special code with platform-specific types and logic.
- a7af17a - Updated common property sheet to make sure that the short platform name is always consistent between all sorts of configurations (either
x86
orx64
); removed semicolons from paths to DX8 to allow specifying paths relative to them.
[Snapshot] 2023-05-02 - Essential fixes
Outline
This snapshot compiles essential fixes and quality-of-life features to the engine.
Code changes
- 504f010 - Added new
CTString
helper methods for finding and replacing characters. - 6b07906 - Reworked
CTString
methods for finding substrings and added a method for finding a pointer to the beginning of a substring. Also added a method for finding position of a character in a string.
Fixes
- 6bb88d3 - Fixed issues with building under the
x86
platform left by porting engine under thex64
platform. - 180cdeb - Fixed float functions in Engine under the
x64
platform that triggered a series of assertions in Debug mode (thanks to @sultim-t). - 545922b - Fixed usage of out-of-bounds array indices in particle star positions in EntitiesMP.
- bfa8bcc - Utilized new
CTString
helper methods for finding and replacing characters, as well as the default method for finding substring positions. - 794d0e9 - Fixed
CTString::Undecorated()
method skipping two characters instead of one while parsing the flashing tag. - 5cb517e - Fixed
CTString::VPrintF()
by allocating a local character buffer within the method instead of using a static one. - 5207ce8 - Fixed incorrect deletion of an array of characters in EngineGUI.
- 9a661ca - Fixed warning about custom build of the
SeriousSkaStudio.cnt
file in SeriousSkaStudio. - 3074611 - Made exception handling code compatible with the
x64
platform. - a63f003 - Reverted definition of the
NEXTARGUMENT
macro to fix returned values from shell function arguments. - 0c1ebe4, 68cdf59, 95af3e0 - Fixed SKA model rendering in fog and haze.
Project cleanup
- f29a071 - Removed some source files generated by Bison & Flex that were pushed by mistake.
[Snapshot] 2023-03-27 - x64 platform support
Outline
This snapshot compiles changes that make it possible to build and run Serious Engine under the x64 Windows platform.
Code cleanup
- 704510d - Added include guards to specific Engine files to avoid multiple inclusions.
Code changes
- 9985e8c - Added new useful integer types and included headers used by newer Visual Studio compilers.
- 5840767 - Replaced engine's
ByteSwap()
method with a newByteSwap32()
. - b2a9026 - Utilized new macro switches defined by the config header instead of generic macros.
- 7c914bb - Replaced
pwoCurrentWorld
shell symbol with a proper and direct pointer to the world that's exported from the engine. - 4e6f241 - Removed assembly code related to byte swapping and replace it with the new
ByteSwap32()
method. - d243dfe, bb67839, df3413f, 273935b - Added alternative C++ implementations to assembly code. Important parts:
- Graphics/rendering functions.
- Layer mixing functions (lighting/shadows).
- Sound mixing functions (thanks to @Tinsed for fixing C++ translation of
MixStereo()
).
- 6ec02f1 - Made
SplashWindowProc()
method from SeriousSam project compatible with thex64
platform. - 51523eb - Made
ReportGlobalMemoryStatus()
shell function from Engine project compatible with thex64
platform. - 5a0eefa - Made float functions in the engine cross-platform.
- 71800e3 - Replaced
strlen()
methods withCTString::Length()
on everyCTString
variable. - fee2ca5 - Made
Write_t()
andRead_t()
methods ofCTStream
classes takesize_t
for data length. - cf4709c - Added some useful helper methods to
CTString
.
Fixes
- d737181 - Made MFC code in GUI applications compatible with the
x64
platform. - a73abd5 - Fixed
CRC_AddWORD()
method taking an integer of a wrong type and added methods for getting a unique integer out of pointers that's compatible with thex64
platform. - dce797f, febb9f7, dfde0d9 - Adapted specific pointer-related code and fixed integer conversions for the
x64
platform. - b05a48c - Fixed issues with the color palette and certain elements of the terrain interface in WorldEditor.
- cfd0b2d - Fixed certain issues related to quaternion calculations and trigonometric functions on newer Visual Studio compilers.
- f3b37af - Fixed
MAX_SWORD
macro being defined with a wrongUWORD
type instead ofSWORD
. - a6ef19c - Improved safety checks inside the
CTextureData::SetAsCurrent()
method. - 7ad7038 - Removed obsolete
_ulPageSize
variable from streams. - 963adcf - Utilized new
CTString
helper methods across the engine to eliminate potential issues with improper implicit conversions (such as pureCTFileName
inPrintF
arguments).
Project changes
- df2e05b - Added new headers.
- Header with Serious Engine configuration that defines macro switches depending on current operating system and platform.
- Header with new byte-swapping functions to replace inline code in the engine.
- 9525791 - Properly set up debugging commands for launching executables from Visual Studio.