24 Commits

Author SHA1 Message Date
Kawe Mazidjatari
661874025f Engine: add functionality to run game without the platform system
Unbind the game from the platform system, which is useful when developing for or debugging the game. This was supposed to make it into the SDK back in 2021, but wasn't due to the ability to spoof usernames. This is no longer possible on servers requiring authentication as the player's name is actually checked along with the Nucleus ID.
2024-06-01 11:52:54 +02:00
Kawe Mazidjatari
8005993da0 Ebisu: allow overriding global game language setting
The code originally fetches available and selected languages from Origin/EADesktop. The issue however is that its hard to change the language through the Origin/EADesktop app. The second issue is that the languages returned by Origin/EADesktop isn't necvesarily supported by our version of the game, for example, the original implementation of EbisuSDK_GetLanguage() also returns ar_SA, which is supported by the retail version of the game, but our version doesn't have the code to render this language. The code has been rewritten to allow the user to easily change the language using the command line '-language' parameter. The miles code has also been slightly adjusted to fetch the language directly from HEbisuSDK_GetLanguage() instead of miles_language since otherwise we would still error out in engine code as miles_language will be out of sync.
2024-06-01 11:52:53 +02:00
Kawe Mazidjatari
6bb622314e Improve persona name validations
Move all server convars out of the EbisuSDK lib, the min/max name len are now parameterized. This also makes it possible to use the code on the client if ever needed.
2023-07-19 02:16:06 +02:00
Kawe Mazidjatari
aac74c11b2 Use 'IsDedicated()' inline 2023-06-01 22:55:36 +02:00
Kawe Mazidjatari
0c25246f91 Check if dedicated using global
Global instead of directive as the ebisusdk lib is used for both the server and client. Removed useless directives.
2023-05-13 19:41:57 +02:00
Kawe Mazidjatari
7ecad819be Set dedicated nucleus id to '9990000' 2023-04-29 20:36:57 +02:00
Kawe Mazidjatari
4827a3cc84 Fix 'unreachable code' compiler warning 2023-04-16 01:23:11 +02:00
Kawe Mazidjatari
dda78ed36e
Update persona name pattern
Add '-' character to allowed characters in persona name.
2023-04-05 15:32:00 +02:00
Kawe Mazidjatari
2fb54ad8c4 Guard 'IsValidPersonaName' out for client.dll
Don't compile 'IsValidPersonaName' for client.dll.
2023-04-01 22:58:43 +02:00
Kawe Mazidjatari
67180e51ff Validate client's origin name on connect
Recently, there has been a sudden influx of players playing with a name that isn't valid. Names such as "    " or "@something $very !crazy". This patch fixes this problem by enforcing checks during connect by default.
2023-03-31 22:37:53 +02:00
Kawe Mazidjatari
588cb146bf Cleanup ebisusdk init 2023-02-04 15:55:32 +01:00
Kawe Mazidjatari
c9fa7f7767 Rename origin globals 2023-02-04 00:39:34 +01:00
Kawe Mazidjatari
93efd3792b Cleanup EbisuSDK
Renamed 'g_OriginNucleusToken' to 'g_NucleusToken', and reordered globals.
2023-01-25 02:30:54 +01:00
rexx
b15b876eed Revert "add more miles debug hooks"
This reverts commit feeaf5c54536a6ff7dae385314f9036ff45c4cd2.
2022-11-27 20:26:58 +00:00
rexx
feeaf5c545 add more miles debug hooks 2022-11-27 20:14:41 +00:00
Kawe Mazidjatari
2010e11310 Add 'fatal' functionality to Error()
When fatal is set, the function will show a error dialogue, which will halt the process and close when the message is dismissed. Else we will end up in a crash.
2022-08-22 12:42:41 +02:00
Kawe Mazidjatari
2c7aaf531f Host_Changelevel_f rebuild 2022-08-22 03:53:38 +02:00
Kawe Mazidjatari
5548a74d59 Major cleanup (see description)
* Fix all compiler error for GameSDK on S0 and S1.
* Remove some unused patterns and globals (launch performance gains of 100ms).
* Remove most duplicate patterns.
* Relocate globals from engine to a more appropriate location.
* Renamed some unknown vars to a more appropriate name (most of these where obtained a while back, but as we reversed more parts of the engine, some of these vars become known).
* Renamed some vars to fit the naming convention used in the SDK.
* Fixed pattern debug logging using the wrong pointer, thus displaying the wrong address.
2022-08-18 02:15:23 +02:00
Kawe Mazidjatari
4b72afb74f Light refactor for logging
Moved logging functions to dbg.h (tier0) and export them from the dll.
Added additional functions for checking bad pointers (debug only!).
Reduced output code size.
2022-05-25 14:18:29 +02:00
PixieCore
d930cb66e0 Migrated CClient to CBaseClient. 2022-03-27 23:50:35 +02:00
Amos
a359ae25bc Small update
* IVEngineServer::PersistenceAvailable() only sets the persistence var in the CClient struct when 'g_bIsPersistenceVarSet[clientidx]' is false.  It sets it to true when a client connects and the var has been set. The var gets reset on any disconnection, and 'g_bIsPersistenceVarSet[clientidx]' gets set to false by CBaseClient::Clear()

* current Origin globals are already cross season compatible.
2022-01-17 23:26:42 +01:00
IcePixelx
55b708c9fe Comment regarding persistence and hardcoded variables. 2022-01-17 03:41:27 +01:00
Amos
c486c2d593 Portability to S2 completed
CServer functions are evolving quite heavily over these seasons, so these need a bit of work
2022-01-05 02:11:21 +01:00
Amos
d5b2e58dae Code base refactor + major performance and readability improvement. Read description for details.
* Codebase restructured to SourceSDK codebase style and .cpp/.h assertion paths in the game executable.
* Document most functions with valve style 'Purpose' blocks.
* Rename variables to match the rest of the codebase and Valve's naming convention.
* Dedicated DLL and the SDKLauncher now share the same codebase as the DevSDK.

* Obtain globals or pointers directly instead of waiting for runtime initialized data.
* Dynamically search for all functions and globals (this doesn't count for dedicated yet!).
* Initialize most in-SDK variables.

* Move certain prints and other utilities under ConVars to reduce verbosity and increase performance.
* Print all pattern scan results through a virtual function to make it easier to add and debug new patterns in the future.
* Type global var pointers appropriately if class or type is known and implemented.
* Forward declare 'CClient' class to avoid having 2 'g_pClient' copies.
* Add IDA's pseudo definitions for easier prototyping with decompiled assembly code.

* RPAK decompress Command callback implementation.
* Load decompressed RPaks from 'paks\Win32\' overriding the ones in 'paks\Win64\' (the decompress callback will automatically fix the header and write it to 'paks\Win32\').

* VPK decompress Command callback implementation.
* Move CRC32 ands Adler32 to implementation files.

* Server will print out more details about the connecting client.

* Upgrade ImGui lib to v1.86.
* Don't compile id3dx.h for dedicated.
* Don't compile id3dx.cpp for dedicated
* Implement DevMsg print function allowing to print information to the in-game VGUI/RUI console overlay, ImGui console overlay and the external windows console

* Fixed bug where the Error function would not properly terminate the process when an error is called. This caused access violations for critical/non-recoverable errors.
* Fixed bug where the game would crash if the console or server browser was enabled while the game was still starting up.
* Several bug fixes for the dedicated server (warning: dedicated is still considered work-in-progress!).
2021-12-25 22:36:38 +01:00