SteamPipe
SteamPipe is Steam's new content distribution system introduced in 2013.
It changes the way programs (including dedicated servers and the Source engine) are downloaded, updated and stored.
Benefits
Players
The benefits to players are:
- Faster and smoother downloads
- Faster game boot times and map load times
- Easier distribution, installation, and management of mods
- Smoother dedicated server distribution and update rollover
Server administrators
Instead of a proprietary delivery protocol, SteamPipe uses HTTP, which allows datacenters hosting multiple servers to set up a caching HTTP proxy, necessitating only a single download of an update from Valve's servers.
Game developers
Game developers using SteamPipe can issue updates themselves; the previous system required manual intervention by Valve when an update was to be published.
LAN Caching
As SteamPipe now uses HTTP it allows not only datacenters hosting multiple servers to setup a caching but is also very useful for LAN's. Setting up a caching proxy can significantly reduce the amount of bandwidth required for multiple clients or servers to preform updates.
LANcache – Dynamically Caching Game Installs at LAN’s using Nginx is an example of how to setup caching proxy for SteamPipe as used at Multiplay's Insomnia Gaming Festival. steam-squid is a Docker image containing a Steam-optimised version of the Squid caching proxy for easy installation.
Downsides
Players
- Many Source SDK mods that use Half-Life 2 (and/or its Episodes) content that did not make the jump to the update are broken, this also includes some (but not all) Half-Life mods.
Fortunately, there are known fixes for many Half-Life 2 mods. Those fixes can be found here.. - Most Source 2013 games (including third-party games) now contain duplicate copies of the Half-Life 2 base files (except in ), wasting storage drive space.
- Warning:While the it is possible to point multiple games to the same VPK, not all VPKs with the same name are the same on all games! For example, the "hl2" VPKs are different from the VPKs actually used by , and the "hl2" VPKs are different from the other "hl2" VPKs.Workaround:Two options are such:
- Use relative links to the VPKs (or folders) in gameinfo.txt, so they look something like this:
game "../Half-Life 2/hl2/hl2_textures.vpk"
- Use Symbolic links or Hardlinking VPKs (or folders) using programs such as Link Shell Extension (easier), or via Windows's
mklink
command; more info can be found here.
- Use relative links to the VPKs (or folders) in gameinfo.txt, so they look something like this:
- After the SteamPipe update, Half-Life: Source was not properly updated which resulted the game having more bugs and glitches, with graphical issues. This issue has never been fixed and Valve instead de-listed the game from search in favor of promoting the original version instead, 10 years after the SteamPipe update was released.
Developers
The Source SDK Launcher does not have support for Source 2013 games. Tools for games that used to be in the Source SDK Launcher must now be launched by going to "C:\Program Files (x86)\Steam\SteamApps\common\[game name]\bin" (see example path below) then launching the .bat files (Example: Hammer.bat to launch Valve Hammer Editor).
Example path to SDK: C:\Program Files (x86)\Steam\SteamApps\common\Half Life 2\bin
Changes
- Downloads are performed using HTTP instead of a proprietary protocol.
- Data files are no longer placed into GCFs but directly into the file system.
- To counteract the performance issues with accessing many tiny files (the reason why GCFs were used in the first place), all Source games (prior to Left 4 Dead) distributed via SteamPipe now store their assets in VPK archives.
- Data generated before/during gameplay is no longer stored in user-specific subdirectories of SteamApps; instead, the common subfolder is used.
- Dedicated servers are using SteamCMD (a stripped-down version of the full Steam client).
See also
- GoldSource SteamPipe Directories for the list of directories used by GoldSource engine games
- IFileSystemV009 for the C++ interface used to access files through SteamPipe in GoldSource