mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
The game internally obtains a auth token from Origin. On connect to a gameserver, it will send it to the masterserver. The master server will create a JWT token and send this back to the client. The client stores this token in 3 userinfo cvars (token, sig1, sig2). the sig1 and sig2 cvars are there to compensate for the truncation caused by sending the cvar, as each cvar string length could be up to 255 (byte max). The server verifies this token (the signature, timestamp, expiry); if they are valid, the has successfully authenticated and will connect.
203 lines
4.2 KiB
CMake
203 lines
4.2 KiB
CMake
cmake_minimum_required( VERSION 3.16 )
|
|
|
|
macro( add_sdk_project PROJECT_NAME )
|
|
add_module( "shared_lib" ${PROJECT_NAME} "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
|
|
|
|
start_sources()
|
|
|
|
if( NOT ${PROJECT_NAME} STREQUAL "dedicated" )
|
|
file( GLOB PNG_SOURCES
|
|
"${ENGINE_SOURCE_DIR}/resource/png/*.png"
|
|
)
|
|
add_sources( SOURCE_GROUP "Resource"
|
|
"${ENGINE_SOURCE_DIR}/resource/r5dev.rc"
|
|
"${PNG_SOURCES}"
|
|
)
|
|
endif()
|
|
|
|
add_sources( SOURCE_GROUP "Core"
|
|
"assert.h"
|
|
"dllmain.cpp"
|
|
"init.cpp"
|
|
"init.h"
|
|
"logdef.cpp"
|
|
"logdef.h"
|
|
"logger.cpp"
|
|
"logger.h"
|
|
"r5dev.h"
|
|
"resource.h"
|
|
"shared_pch.h"
|
|
"stdafx.cpp"
|
|
"stdafx.h"
|
|
"termutil.cpp"
|
|
"termutil.h"
|
|
)
|
|
|
|
target_link_libraries( ${PROJECT_NAME} PRIVATE
|
|
"advapi32.lib"
|
|
"bcrypt.lib"
|
|
"crypt32.lib"
|
|
"dbghelp.lib"
|
|
"wldap32.lib"
|
|
"ws2_32.lib"
|
|
"Rpcrt4.lib"
|
|
|
|
"vpc"
|
|
"memoverride"
|
|
"tier0"
|
|
"tier1"
|
|
"tier2"
|
|
"launcher"
|
|
"appframework"
|
|
|
|
"vstdlib"
|
|
"vpklib"
|
|
"mathlib"
|
|
"vphysics"
|
|
|
|
"SigCache_Pb"
|
|
"SV_RCon_Pb"
|
|
"CL_RCon_Pb"
|
|
|
|
"rtech_tools"
|
|
"rtech_game"
|
|
"stryder"
|
|
|
|
"libdetours"
|
|
"liblzham"
|
|
"libcurl"
|
|
"libprotobuf"
|
|
"libspdlog"
|
|
"libdetour"
|
|
"navdebugutils"
|
|
|
|
"networksystem"
|
|
"pluginsystem"
|
|
"filesystem"
|
|
"datacache"
|
|
"EbisuSDK"
|
|
"GFSDK"
|
|
|
|
"localize"
|
|
|
|
"vscript"
|
|
"game_shared_static"
|
|
)
|
|
|
|
if( NOT ${PROJECT_NAME} STREQUAL "dedicated" )
|
|
target_link_libraries( ${PROJECT_NAME} PRIVATE
|
|
"libimgui"
|
|
"codecs"
|
|
|
|
"inputsystem"
|
|
"materialsystem"
|
|
|
|
"studiorender"
|
|
|
|
"vguimatsurface"
|
|
"vgui"
|
|
"rui"
|
|
|
|
"d3d11.lib"
|
|
"${THIRDPARTY_SOURCE_DIR}/nvapi/amd64/nvapi64.lib"
|
|
)
|
|
endif()
|
|
|
|
if( NOT ${PROJECT_NAME} STREQUAL "client" )
|
|
target_link_libraries( ${PROJECT_NAME} PRIVATE
|
|
"libmbedcrypto"
|
|
"libmbedtls"
|
|
"libmbedx509"
|
|
"libjwt"
|
|
)
|
|
endif()
|
|
|
|
# Determine the compiler definitions and link libraries per project.
|
|
if( ${PROJECT_NAME} STREQUAL "gamesdk" )
|
|
end_sources()
|
|
|
|
target_link_libraries( ${PROJECT_NAME} PRIVATE
|
|
"engine"
|
|
"server_static"
|
|
"client_static"
|
|
)
|
|
target_compile_definitions( ${PROJECT_NAME} PRIVATE
|
|
"GAMESDK"
|
|
)
|
|
|
|
elseif( ${PROJECT_NAME} STREQUAL "dedicated" )
|
|
end_sources()
|
|
|
|
target_link_libraries( ${PROJECT_NAME} PRIVATE
|
|
"materialsystem_nodx" # Needs the No-DirectX version for patching.
|
|
"engine_ds"
|
|
"server_static"
|
|
)
|
|
target_compile_definitions( ${PROJECT_NAME} PRIVATE
|
|
"MATERIALSYSTEM_NODX"
|
|
"SERVER_DLL"
|
|
"DEDICATED"
|
|
)
|
|
|
|
elseif( ${PROJECT_NAME} STREQUAL "client" )
|
|
end_sources( "${BUILD_OUTPUT_DIR}/bin/x64_retail/" )
|
|
|
|
target_link_libraries( ${PROJECT_NAME} PRIVATE
|
|
"engine_cl"
|
|
"client_static"
|
|
)
|
|
target_compile_definitions( ${PROJECT_NAME} PRIVATE
|
|
"CLIENT_DLL"
|
|
)
|
|
|
|
endif()
|
|
|
|
target_link_options( ${PROJECT_NAME} PRIVATE
|
|
"/STACK:8000000" # Match game executable stack reserve size
|
|
|
|
# The only reason this has to be done, is because
|
|
# the _xxxx_dbg malloc functions could otherwise
|
|
# throw a linker error, as they are already defined
|
|
# in the CRT library, but there doesn't seem to be
|
|
# a standard way to override these, unlike the
|
|
# _xxxx_base malloc functions. Since this is only
|
|
# relevant for debug builds, this linker flag should
|
|
# only be toggled for DEBUG!!!
|
|
$<$<CONFIG:Debug>:/FORCE:MULTIPLE>
|
|
)
|
|
|
|
add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -P ${ENGINE_SOURCE_DIR}/cmake/PostBuild.cmake
|
|
)
|
|
|
|
if( ${PROJECT_NAME} STREQUAL "dedicated" )
|
|
set_target_properties( ${PROJECT_NAME} PROPERTIES
|
|
VS_DEBUGGER_COMMAND "r5apex_ds.exe"
|
|
)
|
|
else()
|
|
set_target_properties( ${PROJECT_NAME} PROPERTIES
|
|
VS_DEBUGGER_COMMAND "r5apex.exe"
|
|
)
|
|
endif()
|
|
|
|
if( ${PROJECT_NAME} STREQUAL "client" )
|
|
set_target_properties( ${PROJECT_NAME} PROPERTIES
|
|
VS_DEBUGGER_COMMAND_ARGUMENTS "-wconsole -ansicolor -dev -devsdk -noserverdll"
|
|
)
|
|
else()
|
|
set_target_properties( ${PROJECT_NAME} PROPERTIES
|
|
VS_DEBUGGER_COMMAND_ARGUMENTS "-wconsole -ansicolor -dev -devsdk"
|
|
VS_DEBUGGER_WORKING_DIRECTORY "$(ProjectDir)../../../${BUILD_OUTPUT_DIR}/"
|
|
)
|
|
endif()
|
|
|
|
set_target_properties( ${PROJECT_NAME} PROPERTIES
|
|
VS_DEBUGGER_WORKING_DIRECTORY "$(ProjectDir)../../../${BUILD_OUTPUT_DIR}/"
|
|
)
|
|
|
|
endmacro()
|
|
|
|
add_sdk_project( "gamesdk" )
|
|
add_sdk_project( "dedicated" )
|
|
add_sdk_project( "client" )
|