No description
  • C++ 76.1%
  • C 21.4%
  • SWIG 0.8%
  • C# 0.4%
  • Python 0.3%
  • Other 0.6%
Find a file
2026-05-06 08:03:07 +02:00
.github/workflows Uncomment some workflow jobs & fixed libcurl linking for winamd64 2026-04-14 09:04:48 +02:00
.vscode Update tasks.json 2023-01-16 07:54:17 -08:00
app/legion
appframework Let's fix workflows 2026-04-08 05:53:27 +02:00
bitmap add macos workflow, fix filesystem_async max thread count 2023-04-24 18:54:23 +00:00
choreoobjects
common DXVK port 2025-09-16 02:46:37 +02:00
datacache Added prediction for triggers, thanks oblivious 2024-08-23 00:42:58 +02:00
datamodel Add support for cpp26 2026-05-01 20:53:44 +02:00
dedicated dedicated(win32): fix crashes( now it works #310 #225 ) 2023-12-13 21:28:17 +03:00
dedicated_main dedicated(win32): fix build issues #322 2023-12-13 20:18:31 +03:00
devtools Added Parallax Corrected Cubemaps 2024-09-20 17:30:31 +02:00
dmserializers
dmxloader Replace empty constructors with default constructors #88 2022-11-05 14:23:05 +03:00
dx9sdk We have now better angle update 2024-09-12 22:33:24 +02:00
engine Fix memory corruption on decompression 2026-05-06 08:03:07 +02:00
external Interpolation has been reworked 2025-08-18 22:20:54 +02:00
fgdlib
filesystem Fix windows (3) 2025-08-19 01:41:28 +02:00
game Add support for cpp26 2026-05-01 20:53:44 +02:00
gamedata@24f095b689 Improved hit registration debugging 2026-04-05 08:03:54 +02:00
gameui gameui: fix disconnect in video settings for multiplayer games 2023-10-08 02:40:43 +03:00
gcsdk fix sln generation 2022-07-26 13:03:48 -07:00
hammer fix sln generation 2022-07-26 13:03:48 -07:00
hammer_launcher
inputsystem Fixed double click for mouse_5 2024-08-31 21:53:00 +02:00
ivp@5c9bdb8bf6 Add support for cpp26 2026-05-01 20:53:44 +02:00
launcher Added launcher for CS:S Enhanced 2024-09-15 23:15:08 +02:00
launcher_main Added launcher for CS:S Enhanced 2024-09-15 23:15:08 +02:00
lib@a636a21cd5 Updated libcurl Android archives 2026-04-15 21:20:27 +02:00
linux
linux_sdk
masterserver Added check for post_auth_verify (check_server_authorized) 2026-04-15 19:41:51 +02:00
materialsystem Let's fix workflows 2026-04-08 05:53:27 +02:00
mathlib Remove some unwanted macro checks for SSE 2025-08-13 06:45:16 +02:00
mdllib
mdlobjects
movieobjects
networksystem Fix compilation under MSVC(VS2019) 2022-01-13 16:18:38 +02:00
particles Remove some unwanted macro checks for SSE 2025-08-13 06:45:16 +02:00
public Fix memory corruption on decompression 2026-05-06 08:03:07 +02:00
raytrace
replay Fix CreateThreadPool 2022-11-20 19:32:30 +02:00
scenefilecache fix windows build scripts, add windows opus support 2022-07-28 14:27:56 +03:00
scripts Added libcurl for Windows 2026-04-14 07:50:12 +02:00
sdklauncher
serverbrowser Fixed some edge cases with TCP streaming 2025-08-27 23:18:30 +02:00
sfmobjects
soundemittersystem fix windows build scripts, add windows opus support 2022-07-28 14:27:56 +03:00
soundsystem fix windows build scripts, add windows opus support 2022-07-28 14:27:56 +03:00
sourcevr
stub_steam waf: don't install some shared libraries when building sdk only 2023-05-24 16:46:25 +00:00
studiorender Added SIMD version of ExecuteDefferredBuild 2025-09-12 07:27:55 +02:00
thirdparty@e6d7b2f810 Add support for cpp26 2026-05-01 20:53:44 +02:00
tier0 DXVK port 2025-09-16 02:46:37 +02:00
tier1 Add support for cpp26 2026-05-01 20:53:44 +02:00
tier2 Reworked cl_show* commands to use game events instead 2024-07-25 18:10:35 +02:00
tier3 arm64 : fix intptr_t size 2022-06-05 01:12:32 +03:00
togl DXVK port 2025-09-16 02:46:37 +02:00
togles DXVK port 2025-09-16 02:46:37 +02:00
tools
tracker
unicode fix windows build scripts, add windows opus support 2022-07-28 14:27:56 +03:00
unitlib workflows: add tests.yml 2022-08-17 12:54:11 +03:00
unittests unitests: add mathlib test 2023-04-23 23:45:09 +03:00
utils Fixed pred & lagcomp when fps lower than tickrate 2025-08-21 10:49:06 +02:00
vgui2 Add support for cpp26 2026-05-01 20:53:44 +02:00
vguimatsurface Interpolation has been reworked 2025-08-18 22:20:54 +02:00
video Fix macOS build (#146) 2022-11-27 16:48:27 +03:00
vpc_scripts Merge branch 'master' into windows 2022-07-27 12:58:56 +03:00
vphysics Replace empty constructors with default constructors #88 2022-11-05 14:23:05 +03:00
vpklib Merge branch 'master' into windows 2022-07-27 12:58:56 +03:00
vstdlib Fix windows 2025-08-19 00:35:22 +02:00
vtf vtf: fix vtf loading for windows arm( and for other platforms ) 2023-08-14 18:26:28 +03:00
.clang-format Updated clang format 2024-08-30 23:12:32 +02:00
.gitignore Add support for cpp26 2026-05-01 20:53:44 +02:00
.gitmodules Add support for cpp26 2026-05-01 20:53:44 +02:00
LICENSE
README.md Updated README 2026-04-08 13:12:06 +02:00
thirdpartylegalnotices.txt
waf Added precompiled headers 2024-09-14 05:46:07 +02:00
waf.bat fix loading libraries with lib prefix 2021-04-08 22:40:26 +03:00
wscript Add support for cpp26 2026-05-01 20:53:44 +02:00

Counter-Strike: Source Enhanced

Discord server: Permanent Link

It has been started from a fork of from nillerusr, a huge thanks to him for having port most of the valve project generator stuff to waf.

How to build:

First install dependencies: https://github.com/nillerusr/source-engine/wiki/Source-Engine-(EN)
You also need:

  • dxvk native library
  • zstd library

To compile for CS:S Enhanced a command line can look like so: ./waf configure clangdb install -p -o build -T fastnative --prefix ./gamedata/css_enhanced/game

  • clangdb generates compilation database for LSP
  • install installs into the prefix ../css_enhanced the binaries
  • -T fastnative, compiler build the source code for a performance oriented release for your specific machine.
  • -d for dedicated (server) build.
  • -P <0-4> is to enable profiling with different levels, 1 is usually enough if you want to know what takes more framerate.

How to play:

  • Compile the game as above.
  • Run the game with css_enhanced(.exe).
  • I have my own server at cssserv.xutaxkamay.com, when it isn't down.

What was enhanced:

A lot! Here is a comprehensive list of the core changes and enhancements based on our codebase rework:

Networking & Synchronization

  • Precise Float Encoding: Network compression (quantization) on floats was mostly removed, so the client receives full 32-bit exact values from the server, avoiding coordinate and rotation precision loss.
  • ZSTD Compression: Implemented ZSTD compression with pre-trained dictionary data for entity updates, compressing/decompressing very fast for an excellent ratio (around 1/10).
  • TCP Snapshots: Added option (sv_send_snapshot_on_tcp) to send reliable entity snapshots via TCP instead of UDP. Previously, if UDP packets containing entity updates were lost, the client would lack the data needed to interpolate entity positions. Because the client missed this history while the server maintained the true state, lag compensation would completely break down during packet loss. Sending snapshots asynchronously via TCP ensures the client always receives the entity updates, guaranteeing perfectly reliable lag compensation.
  • Tick Synchronization (TODO): The server now sends back the client's perceived tick in NET_Tick to precisely manage clock drift. Snapshot tick IDs and command queue info are also tracked. (Note: This feature is still a work-in-progress)
  • Increased Network Limits: Network rate limit raised drastically (up to 64 MB/s), frame history increased for better lag compensation window, and max user message size increased to support larger game events.

Prediction, Hit Registration & Input

  • Trigger & Output Event Prediction: Client-side trigger and solid movement prediction (trigger_push, trigger_multiple, trigger_teleport ...). This eliminates the classic "mismatching between server and client" console warnings and interaction delay. (Note: Output event prediction still misses logic_* entities and some others like doors, buttons).
  • Local Player Interpolation: Completely rewritten to be time-based (cl_interpolation_amount) rather than ratio-based. Additionally, interpolated network variables for the local player are now explicitly calculated during prediction and user command processing using interpolation_amount_frac, ensuring perfectly accurate interpolation across all framerates without relying on sub-ticks.
  • Lag Compensation Overhaul: The entire server-side lag compensation system was rewritten from scratch. Instead of the old system that just stored basic position data, it now uses a proper interpolation framework that smoothly tracks everything: player positions, angles, animations, and movement states. This means the server can accurately reconstruct exactly what the client saw at any point in time, resulting in much more reliable hit registration. The system is also designed to eventually support lag compensation for non-player entities like moving platforms and triggers.
  • View Angle Synchronization: The mouse view angle update (CL_ExtraMovementUpdate) was moved to occur before frame processing instead of after. Previously, the rendering view was always one frame ahead of the view angles sent to the server in CreateMove, causing a constant mismatch. This change ensures the server's view perfectly synchronizes with what you see on screen.
  • Animation Transition Fix: The rendered model now matches enemy hitboxes during prediction. When you shoot, the client predicts bullet collision against enemy hitboxes (via FireBullet). Previously, the visual model could differ from these predicted hitboxes due to client-side animation blending. By disabling client-side animation (m_bClientSideAnimation), sequence transitions are no longer maintained locally - the model strictly follows server values. It's less smooth (no blending), but what you see now matches what the prediction system uses for hit detection, and both match the server.
  • No Autobhop Lag: Bunnyhopping movement operates perfectly smoothly.

Performance & Engine Limits

  • Unlimited FPS: fps_max 0 is now possible without triggering speedhacking false positives, allowing framerates well over 1k FPS.
  • Input System Performance: Removed the legacy Windows raw input system processing when in fullscreen mode, reclaiming around ~300 FPS.
  • DXVK Integration: Added native SDL windowing flags to support DXVK rendering paths.

Modding, Game Events & Features

  • Dynamic Game Events: The network serialization for game events (IGameEvent) was completely rewritten. Instead of relying on strict schema definitions (.res files) where the client and server must agree on the event structure beforehand, events are now serialized dynamically over the network (sending key names and types on the fly). This allows attaching arbitrary data to events without engine restrictions, powering new events like bullet_impact, bullet_hit_player, and player_lag_hitboxes.
  • New Weapon: Added the Barrett M82A1 sniper rifle.
  • Separate RCON Port: RCON traffic has been moved to a separate dedicated port (27024) instead of sharing the main game traffic port.
  • Build & CI/CD: Added automated GitHub Actions prerelease workflows for Windows and Linux AMD64, along with comprehensive .clang-format rules for modern C++ styling.

Future Plans (TODO)

  • New Weapons: Expanding the arsenal (e.g., Gluon Gun).
  • Shareable Custom Skins: A system allowing players to use their own skins and have them visible to other players on the server.
  • Advanced Replay & SourceTV: Upgraded demo recording and SourceTV that perfectly recreates the player's perspective by re-using lag compensation data.
  • Enhanced Hit Indicators: Continued improvements to hit feedback (e.g., cl_enable_hitmarks).
  • Hitbox Upgrades: Moving towards sphere/cylinder-based hitboxes for better precision.
  • Engine Bug Fixes: Patching long-standing engine quirks like edge bugs and surf ramp bugs.
  • Social Features: Implementing Avatars and a Clan system.
  • In-Game Timer: A built-in timer for speedrunning/movement modes.