Before, we had to do a hack of capturing the command line using GetCommandLineA, and then checking if a certain argument is present. This was required due to how early the GameSDK dll was loaded (the g_CmdLine object was far from initialized in the engine). Due to the loader refactor, the commandline can be used directly after creation in the game's entry point (which is the time the SDK is getting loaded). Therefore, no copies of the command line are required anymore. This commit contains the following changes: - Correctly ordered the initialization, and deinitialization of systems (first init = last shutdown). - Factored out command line string copy in favor of game's implementation. - Factored the R5Reloaded emblem print into its own function. - Removed 'SpdLog_PostInit()', we can now directly call DevMsg() once SpdLog_Init() has been called, the logger callback sink deals with the formatting of the output. - Fixed a bug where the logger did not print the correct color for 'SYSTEM_WARNING' and 'SYSTEM_ERROR' in the external console. - Fixed a bug where the command line did not work when the game wasn't launched with the '-launcher' parameter. - Logs now equally appear on the external, and in-game console windows.
Source SDK
- This repository houses the source code for the development package targeting the game Apex Legends.
Building
R5sdk uses the CMake project generation and build tools. For more information, visit CMake.
In order to compile the SDK, you will need to install Visual Studio 2017, 2019 or 2022 with:
- Desktop Development with C++ Package.
- Windows SDK 10.0.10240.0 or higher.
- C++ MFC build tools for x86 and x64.
- [Optional] C++ Clang/LLVM compiler.
Steps:
- Download or clone the project to anywhere on your disk.
- Run
CreateSolution.bat
in the root folder, this will generate the files inbuild_intermediate
. - Move all the game files in the
game
folder so that the pathgame/r5apex(_ds).exe
is valid.
- Run
- Open
r5sdk.sln
in Visual Studio and compile the solution.- All binaries and symbols are compiled in the
game
folder. - Run
launcher.exe
, toggle and set the desired options and hit theLaunch Game
button.
- All binaries and symbols are compiled in the
Debugging
The tools and libraries offered by the SDK could be debugged right after they are compiled.
Steps:
- Set the target project as Startup Project.
- Select
Project -> Set as Startup Project
.
- Select
- Configure the project's debugging settings.
- Debug settings are found in
Project -> Properties -> Configuration Properties -> Debugging
. - The
Working Directory
field should be set to$(SolutionDir)\game\
. - The
Command
field should be set to the target executable (r5apex_ds.exe
for example). - Additional command line arguments could be set in the
Command Arguments
field.
- Debug settings are found in
Launch Parameters
- The
-wconsole
parameter toggles the external console window to which output of the game is getting logged to. - The
-ansicolor
parameter enables colored console output to enhance readability (NOTE: unsupported for some OS versions!). - The
-nosmap
parameter instructs the SDK to always compute the RVA's of each function signature on launch (!! slow !!). - The
-noworkerdll
parameter prevents the GameSDK DLL from initializing (workaround as the DLL is imported by the game executable).
Launch parameters can be added to the startup_*.cfg
files,
which are located in <gamedir>\platform\cfg\startup_*.cfg
.
Note [IMPORTANT]
This is not a cheat or hack; attempting to use the SDK on the live version of the game could result in a permanent account ban.
The supported game versions are:
- S0
R5pc_r5launch_J1557_CL387233_2019_01_28_07_43_PM
. - S0
R5pc_r5launch_J1624A_CL394493_2019_02_24_09_29_PM
. - S1
R5pc_r5launch_N52A_CL399039_2019_03_12_03_21_PM
. - S2
R5pc_r5launch_N428_CL436418_2019_08_07_09_35_PM
. - S3
R5pc_r5launch_N1094_CL456479_2019_10_30_05_20_PM
.
Pylon [DISCLAIMER]
When you host game servers on the Server Browser (Pylon) you will stream your IP address to the database, which will be stored there until you stop hosting the server; this is needed so other people can connect to your server.
There is a checkbox in the Server Browser called Server Visibility
that defaults to Offline
.
Offline
: No data is broadcasted to the Pylon master server; you are playing offline.Hidden
: Your server will be broadcasted to the Pylon master server, but could only be joined using a private token.Online
: Your server will be broadcasted to the Pylon master server, and could be joined from the public list.
Alternatively, you can host game servers without the use of our master server. You can grant people access to your game server
by sharing the IP address and port manually. The client can connect using the connect
command. The usage of the connect
command is as follows: IPv4 connect 127.0.0.1:37015
, IPv6 connect [::1]:37015
. NOTE: the IP address and port were examples.