# Ubuntu and Debian
sudo apt update
sudo apt upgrade
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install build-essential gcc-multilib g++-multilib libedit-dev lib32z1-dev lib64z1-dev git libsdl2-dev:i386 libfreetype6-dev:i386 libfontconfig1-dev:i386 libopenal-dev:i386 libjpeg-dev:i386 libpng-dev:i386 libcurl4-gnutls-dev:i386 libbz2-dev:i386 libedit-dev:i386 libopus-dev python3 python-is-python3 python3-venv
# Arch Linux
# Note: 32-bit will not compile on Arch, as libedit's 32-bit variant has been removed from the mirrors and archives.
yay -Syu
yay -S git python gcc gcc-multilib g++-multilib sdl2 freetype2 fontconfig zlib bzip2 libjpeg libpng curl openal opus lib32-gcc-libs lib32-sdl2 lib32-freetype2 lib32-fontconfig lib32-zlib lib32-bzip2 lib32-libjpeg lib32-libpng lib32-curl lib32-openal lib32-opus
# Build
cd ~
git clone --recursive --depth 1 https://github.com/nillerusr/source-engine
cd source-engine
# 64-bit
./waf configure -T release -d --prefix=~/srcds --build-games=cstrike --enable-opus --disable-warns
# 32-bit if you want metamod and sourcemod to work
./waf configure -T release -d --prefix=~/srcds -4 --build-games=cstrike --enable-opus --disable-warns
# Enable vprof patch for sourcemod
base64 -d <<< "ZGlmZiAtLWdpdCBhL3B1YmxpYy90aWVyMC92cHJvZi5oIGIvcHVibGljL3RpZXIwL3Zwcm9mLmgKaW5kZXggNGRiZGMzY2YuLjVjNmFiMTQzIDEwMDY0NAotLS0gYS9wdWJsaWMvdGllcjAvdnByb2YuaAorKysgYi9wdWJsaWMvdGllcjAvdnByb2YuaApAQCAtMTUsNiArMTUsMTAgQEAKICNpbmNsdWRlICJ0aWVyMC92cHJvZl90ZWxlbWV0cnkuaCIKIAogLy8gVlByb2YgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIGFsbCBjb25maWd1cmF0aW9ucyAtZXhjZXB0LSBYMzYwIFJldGFpbC4KKyNpZiAhKCBkZWZpbmVkKCBfWDM2MCApICYmIGRlZmluZWQoIF9DRVJUICkgKQorI2RlZmluZSBWUFJPRl9FTkFCTEVECisjZW5kaWYKKy8vIFRPRE8obmlsbGVydXNyKTogbWFrZSBzdHViYmVkIHZwcm9maWxlCiAKICNpZiBkZWZpbmVkKF9YMzYwKSAmJiBkZWZpbmVkKFZQUk9GX0VOQUJMRUQpCiAjaW5jbHVkZSAidGllcjAvcG1jMzYwLmgiCg==" > vprof.patch
git apply vprof.patch
./waf build
./waf install --strip
# Download CSSDS
# Setup instructions for SteamCMD are on Valve's wiki: https://developer.valvesoftware.com/wiki/SteamCMD
steamcmd +@sSteamCmdForcePlatformType linux +force_install_dir ~/cssds +login anonymous +app_update 232330 validate +quit
cd ~/cssds
# Copy files from CSSDS with the compiled files from earlier
# This overwrites some existing CSSDS files, though it won't break anything.
cp ~/srcds/cstrike/bin/libserver.so cstrike/bin/libserver.so
cp ~/srcds/bin/*.so bin/
cp ~/srcds/dedicated_launcher .
# Create run script
echo "LD_LIBRARY_PATH=bin ./dedicated_launcher -game cstrike -console -insecure -nomaster +map de_dust" > start.sh
chmod +x start.sh
cd ~
# Use venv since installing python pip packages system-wide is discouraged now
python3 -m venv env
source ~/venv/bin/activate
# Install ambuild2
git clone --depth 1 https://github.com/alliedmodders/ambuild
pip install ./ambuild
# Clone Metamod:Source repo and get dependencies for CS:S
git clone --recursive --depth 1 https://github.com/alliedmodders/metamod-source
cd ~
bash metamod-source/support/checkout-deps.sh -s css
# Build Metamod:Source
cd metamod-source
mkdir build
cd build
python ../configure.py -s css --targets x86 --enable-optimize
ambuild
# Move compiled addons folder into CSSDS and deactivate venv
mv package/addons/ ~/cssds/cstrike/
deactivate
cd ~
# Metamod should now load properl, you can run the "meta" command on the console when you join the server to check.
# Use venv for ambuild
python3 -m venv env
source ~/venv/bin/activate
# Setup sourcemod repo
mkdir ~/alliedmodders
cd ~/alliedmodders
git clone --recursive --depth 1 https://github.com/alliedmodders/sourcemod
bash sourcemod/tools/checkout-deps.sh -s css
cd sourcemod
mkdir build
cd build
python ../configure.py -s css --targets x86 --enable-optimize
# Build
ambuild
# Copy built files into ~/cssds
cp -r package/addons/ ~/cssds/cstrike/
cp -r package/cfg/ ~/cssds/
# Deactivate venv
deactivate
cd ~
Slightly modified server.cfg
template from https://steamcommunity.com/sharedfiles/filedetails/?id=397365275
Download the server.cfg
from below and move it into ~/cssds/cstrike/cfg/
Hacky solution to allow players from older or newer versions of CS:S to join the server. Replace the PatchVersion
, ClientVersion
and ServerVersion
values of ~/cssds/cstrike/steam.inf
with 6630498
.
steam.inf
's contents should look like this:
PatchVersion=6630498
ClientVersion=6630498
ServerVersion=6630498
ProductName=cstrike
appID=240
ServerAppID=232330
./start.sh