/source2gen

Source2 games SDK generator

Primary LanguageC++Apache License 2.0Apache-2.0

Source2Gen

Source2Gen is a tool to generate Source 2 SDKs.
This project aims to provide an easy way to generate SDKs for various Source 2 games.
An example of such SDKs could be found at source2sdk.


Usage

Open the source2gen-loader binary, it will automatically(if supported) find the game path, and it will also set up the needed environment

Windows

source2gen-loader.exe

Linux

./scripts/run.sh "$HOME/.steam/steam/steamapps/cs2/"
# view generated sdk
ls ./sdk

You can also invoke source2gen directly , e.g. for debugging, by running

LD_LIBRARY_PATH=$HOME/.steam/steam/steamapps/cs2/game/bin/linuxsteamrt64/:$HOME/.steam/steam/steamapps/cs2/game/csgo/bin/linuxsteamrt64/ \
  source2gen

Source2Gen for Linux support is currently in an alpha state. There will be errors, bugs, and wrong output. Please only file issues if you want to work on them. This note will be removed once we have thoroughly tested Source2Gen on Linux.

Getting Started

These instructions will help you set up the project on your local machine for development and testing purposes.

Prerequisites

Windows

  • Visual Studio 2019 or newer
  • CMake

Linux

  • g++-13 or newer
  • CMake

Clone the repository

To clone the repository with submodules, run the following command:

git clone --recurse-submodules https://github.com/neverlosecc/source2gen.git

Update the Game Definition

Before building the project in Visual Studio, you will need to update the game definition. The default definition is CS2.
Possible options are: CS2, SBOX, ARTIFACT2, ARTIFACT1, DOTA2, UNDERLORDS, DESKJOB, DEADLOCK.

When using CMake, you can set cmake -DSOURCE2GEN_GAME=CS2

Building the project

With CMake

  • Open a command prompt or terminal in the project's root directory.
  • Run the following sequence of commands to build the project:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DSOURCE2GEN_GAME=CS2
cmake --build build

Credits

This project is made possible by the contributions of various individuals and projects. Special thanks to the following:

This project also utilizes the following open-source libraries/tools:

If you've contributed to the project and would like to be listed here, please submit a pull request with your information added to the credits.