Nothing interesting ever happens on a Tuesday. Except for January 19th, 1999. This is when Sven Co-op beta 0.8 was released to the just recently formed Half-Life community. When it became clear that Half-Life (unlike its predecessors Doom and Quake) would not have a co-operative mode, the community took the task upon itself to fill the void Valve left behind. One of those people was Sven Viking.

At this point, Sven Co-op was not much more than a proof of concept, or to put it into Sven's own words: "mostly just to give everyone an idea of what I'm doing, partly because of various bugs in the map that I don't know how to fix ". At this point the mod consisted of only one map and a few scripts. Sven found help sorting out the initial problems he was facing and the few rooms that made up beta 0.8 quickly grew into a full fledged map, which was released in early May of that same year.

This all happened 20 years ago, in a time when, for many people, going on-line was met with dial-up tones from your modem, playing games on low resolution software rendering and a latency of 300 ms wasn't something to complain about. Luckily for us all, technology has moved forward and so has Sven Co-op. Ever since that first map, SC has tried to push the boundaries of what is possible with Half-Life. We've seen thousands of maps, models and other custom assets made by our community members, millions of downloads and, most importantly, countless hours of co-operative game play fun!

After two decades, Sven Co-op still has a steady and rich player base and a dedicated group of talented developers and we believe, especially since our standalone release on Steam in 2016, that there will be much more to look forward to in the future!

Come celebrate Sven Co-op's anniversary with us by joining the servers and make sure to give "svencoop1" a replay for old times' sake. We'll be there! For the nostalgic or the curious, the original website from 1999 is available here. This is also where you can still find the original beta 0.8!

An update for Sven Co-op has been released. If you are running a dedicated server please use SteamCmd to update your servers. Those of you that were using the public release candidate can remain to do so, as this branch now matches the standard branch.

This is officially the first release to drop support for Windows XP/2003, Windows Vista/2008, and Linux with GLibC earlier than version 2.24. -- Sven Co-op may fail to work completely on those operating systems. More information

Changes are as follows:

Notable changes

  • Event system to adjust various content according to the event. -- Content for our 20th anniversary included.
  • Better support for Stretch and Buster versions of Debian Linux.


Game library

  • Linux specific:
    • Added local build of LibSSL 1.0.0, so secure connections will now work on Stretch and Buster versions of Debian.
    • Removed "vgui2_controls.a".
    • Removed i486 binaries.
    • Removed local build of LibSTD C++ 6.
    • Updated local build of LibCURL to 7.63.0, and fixed the certificate authority path not being correct for some distributions.


  • Added new hooks: PickupObject::CanCollect, PickupObject::Materialize, PickupObject::Collected.
  • DamageInfo.pVictim is no longer constant. (Fixes casting issues.)
  • Documentation: Changed how hook description is handled and added description for all existing hooks.
  • The plug-in manager can handle multiple plug-in lists now.
  • Updated AngelScript to version 2.33.0 (22nd December 2018).
    • IMPORTANT: Arrays no longer contains a "length" property. Getting the length of an array must be done with "array.length()" instead of "array.length".


  • Added support for wide-screen menu backgrounds. In wide-screen mode "BackgroundLoadingLayoutWide.txt" / "BackgroundLayoutWide.txt" definition files are checked first, and if not found "BackgroundLoadingLayout.txt" / "BackgroundLayout.txt" is used as a fall-back.
  • All search paths are cleaned up before they get registered by the file system. (This should fix path inconsistencies caused by the SvenDS launcher still returning relative paths on some Linux systems.)
  • Both launchers (client and server) now use the same method when building their "basedir" path. (The server originally returned "." instead of the actual absolute path causing content to be missing if you hadn't set the shell's working directory first.)
  • Dedicated server UI:
    • Fixed dedicated server not starting properly occasionally when launched in the UI mode.
    • Fixed graph axis labels.
    • Fixed some fields not initializing properly until a minute later.
  • Detailed information is provided if client or server library fails to load. (This is especially useful on Linux where it should report any missing ".so" dependencies.)
  • Files created by the engine (server logs, tempdecal.wad, custom.hpk, user.scr, settings.scr) now use the "GAMECONFIG" PathID to make sure they will always end up in the main game directory ("svencoop") even if some other path was added later on ("svencoop_hd", "svencoop_event_*" etc.).
  • Fixed an issue where the key value parser accessed and potentially corrupted memory beyond the terminating zero if an empty string was passed in.
  • Fixed an issue where the string loaded from background layout files wasn't zero-terminated correctly before parsing.
  • Fixed buffer overflow and some unsafe string operations when un-mounting file system paths.
  • Fixed buffer overflows in demo parsing. (HL Github issue #1654)
  • Fixed heap corruption issue that would occur when destroying stack-located instances of UtlBuffer.
  • Fixed Mod_Extradata() accessing model data incorrectly for sprites.
  • Fixed some garbled and/or misleading error messages.
  • Fixed script includes not working between the different game folders ("svencoop", "svencoop_addon", "svencoop_downloads", etc.) on dedicated servers.
  • Host_EndGame messages are always printed to the console now, even if the "developer" CVAR is set to "0".
  • Legacy sound system: Removed support for automatic ambient sounds, including the "ambient_level" and "ambient_fade" CVARs. (Quake feature, broken and unused in GoldSrc.)
  • Linux: Fixed a client crash when changing video settings.
  • Linux: Removed i486 binaries.
  • More specific reason is provided if the engine fails to create an SDL Window.
  • Server Browser: Removed default ping ports not related to GoldSrc based games.
  • Resolution of chrome textures is no longer locked to 64 x 64 px.
  • The UI code now uses separate pathID "UI" to load resources. (Only relevant paths are searched now.)
  • Video Options: Everything with aspect ratio >= 1.4 is considered as a wide-screen now.
  • VGUI2:
    • Combo box, check box, radio button, scrollbar, and frame now use Marlett font glyphs for their graphics.
    • Fixed editable panels not resizing correctly.
    • Fixed fonts being too large on Linux compared to Windows. (Proper height to PPEm calculation is used now.)
    • Fixed some fonts not loading on Linux.
    • Minor visual tweaks to some of the VGUI2 controls.


  • Attack trace line strike sound now uses the new dirt/grass impact for CHAR_TEX_DIRT
  • If a material definition is too long it will be trimmed until it fits. (Still logged it as a warning though for the mapper's attention.)

Non-playable characters

  • NPCs using an MP5 will now use 1 of 3 sounds randomly when firing instead of just 1: Bodyguard, human grunt (HL and OP4), male assassin, and robot grunt.
  • [HWGrunt] Will now stop firing the minigun if launched into the air.


  • Fixed a holder's item (item_inventory) list pointer being wrongly nulled even when they still have items, for example ones that can be kept on respawn.
  • Fixed an issue where the active weapon wouldn't get detached from the player when he died and used cheats to revive himself.
  • Fixed ammo and weaponbox entities not firing their targets when collected.
  • Fixed the player's MP5 only pre-caching and using 1 sound instead of all 3.
  • Weapon pick-ups now retain their target name, target, colour map, skin, and body when respawned.


  • All options are described directly in "event_info.txt".
  • Console commands:
    • "ev_list" - lists all detected events
    • "ev_scan" - scans for new/updated events
    • "ev_curtime" - prints the current (UTC) time as returned by Steam API
    • "ev_enable <event_name>" - enables event
    • "ev_disable <event_name>" - disables event
    • "ev_activate <event_name>" - force-activates event
    • "ev_release <event_name>" - deactivates force-activated event



  • Moved second checkpoint away a bit and placed it next to the chair inside of generator room.


  • [Part 2] Added one barnacle weapon right below checkpoint at middle of jumping puzzle.


  • Added objective signs in the central area.
  • More explosives available.
  • Reduced Garg HP from 3000 to 2500 on hard.
  • Reduced round time from 10 to 7 minutes.
  • When playing with reduced weapon respawn rate: Weapon respawn frequency changed from 7 to 5.5 minutes.

Single player campaign portal

  • Added They Hunger campaign.
  • Changed paths of sounds, models and scripts to one name pattern.



  • New impact/ricochet sounds for dirt/grass and sand/gravel.



  • Added "Glow Shell" to render effects.

Map compile tools

  • MAX_MAP_PLANES is now 65535. (Limit of 32767 was only there for the faces limit, which is now 65536.)


  • Bones with attachments are always preserved.
  • Brand new help screen.
  • New command line argument "-k": keep all unused bones.
  • New QC command "$keepallbones": keep all unused bones.
  • New QC command "$keepbone <bonename>": keep specified bone even if unused.
  • New QC command "$protected <bonename>": same as "$keepbone" (Added for compatibility with DoomMusic's StudioMDL).
  • Removed UV clamping. (This was only ever supposed to be used in the removed "$cliptotextures" mode.)
  • Resolution of chrome textures is no longer locked to 64 x 64 px.
  • Tweaked few error messages; added new warning messages.



  • Linux SvenDS launcher:
    • Added a warning message for users running as a root (why would you do that?
    • Double quotes wherever was needed to avoid issues with spaced strings.
    • Host CPU family below 6 (i486) will just quit the script. (We're not in 80's/90's any more!)
    • If "-map" is not specified at start-up, _server_start is used by default. (Can be disabled with "-nodefaultmap".)
    • Improved auto update feature:
      • Added support for updating with passworded branches. (-beta_password)
      • Added support for SteamCMD script. (-steamcmd_script)
      • Tries to auto detect SteamCMD binary location if "-autoupdate" is specified without "-steam_dir", either from system installed (package manager) or "$svends_dir/steamcmd" folder (vanilla GoldSrc way). User defined "-steam_dir" overrides this even if it is invalid! (Skips auto-update if none is found.)
    • Increased "ulimit -c" max core file size settings to "unlimited". (This has no effect without "-debug" parameter.)
    • Lots of optimization and standardization.
    • Re-implemented auto detection for CPU vendor and selecting proper binary (svends_i686 or svends_amd). This was previously available in older GoldSrc script. (Can be overridden with "-binary" parameter.)
    • Removed unused console log option.
    • Replaced forum URL with Discord vanity URL in crash message.
  • Server example configurations:
    • Added a read-me to guide you though what the folder is for and how to use it.
    • Added more profile examples with lots of improvements.
    • Changed "sv_zmax" to 32768.
    • Changed misspelled "sv_player_log_frequency" CVAR name to "sv_log_player_frequency".
    • Renamed "servers" to "servers_example" so Steam updates don't ruin your changes.
  • Removed "platformconfig/InGameDialogConfig.vdf".
  • Removed reslist files.

Version details

Steam build ID numbers: Game 3482406, dedicated server tool 3482409, SDK tool 3482410.

Please use the steam build ID number as a reference when posting an issue or query on our message boards. You can find the build number you currently have within Steam by right clicking our game or tools, selecting Properties, then selecting the Local Files tab.