top of page

This is an SDK launcher used to launch the game with our SDK. The launcher allows the user to set the most common settings before launching the engine, such as the resolution, FPS limiter, network encryption, etc...

User could also specify the map and playlists, in which the game will directly launch into it.

​

We had an SDK launcher before (injecting DLLs into the game process using Microsoft Detours). However, this was a command line application. I implemented a graphical user interface by popular demand. The command line logic is still in place and can also be used instead of the GUI.

​

The source code for this project can be found in this GitHub link.

INTRODUCTION

PROGRAMMING

This code parses all VPK files installed in the VPK directory of the game. Each VPK file has a name containing the map name, such as "englishserver_mp_rr_aqueduct.bsp.pak000_dir.vpk". I created a simple regex which obtains the map name from the VPK file name. I check if the name isn't already in the combo list, and add it in to be displayed in the dropdown menu. The "mp_common" VPK is the only exception, the engine handles this particular VPK as "mp_lobby". The "frontend" VPK contains no BSPs, it only contains textures, materials, UI resources and shader files.

sdk_launcher_map_dropdown.png

This image shows the dropdown menu containing all installed maps, which we parsed with the above code. The user could select one of these maps, and hit the "Launch Game" button, which will instruct the game engine to load this map immediately after initialization. This is very useful for spinning up dedicated servers in a preconfigured manner!

sdklauncher_playlists.png

Here we select the playlist (gamemode) we want to start the engine with.

SHOWCASE

sdklauncher_mode.png

Here we select the mode we launch the engine in. Each launch option uses a separate dll and/or engine executable. This is to save as much memory as possible, by not initializing unnecessary subsystems. We don't initialize the shader system on the dedicated server for example.

  • Host  = server & client

  • Server = dedicated server

  • Client = standalone client

bottom of page