A local content server (LCS) is basically a local HTTP server, like Apache or nginx. Using a LCS improves depot iteration time since they are not uploaded and distributed through the public Steam network. Instead, all the depot content is stored on your LCS in chunk files and served to Steam clients that have access to your LCS.
When building content for your LCS, the depot builder needs to talk to the Steam Master Depot Server (MDS) but does not upload any content. Only metadata about your local depots is uploaded to Steam, since local content is managed through the Steamworks site, just like public content.
The LCS only serves depot content and doesn't override any other game configuration. Depot content is always encrypted on your LCS (as it is for public content servers). Even if somebody managed to download depot chunks from your LCS, they wouldn't be able to decrypt the data, since they don't have the depot decryption keys.
Setting Up Local Content Server
First choose a simple, but high performance web server that only needs to serve static files. We are using the open source web server mongoose
, since Apache download performance on Windows was too low (3MB/sec) and configuration is complicated.
In your Steamworks SDK there is a directory called '/tools/ContentServer/'. This directory contains a prebuilt version of mongoose-3.1.exe. Run this application from the ContentServer directory.
Create a new app_build vdf script. The format we typically follow is
This vdf should be similar to your regular SteamPipe upload scripts but must have a "local" key.
Run your new app_build vdf script with steamcmd.
Once you've successfully built a local version of your game, go to the SteamPipe Builds
page for your game.
Find your local build in the list of current builds and select Local from the dropdown next to the desired local build, then click 'Preview Change'.
Configuring Steam Client To Use Your Local Content Server
For the Steam client to know where to look for your game, you'll need to create a file,
in the same directory that contains steam.exe.
This file should contain the following text:
- Either the server IP or server hostname can be used.
- If you need to specify another port then 80, it must be "ip:port" in quotes
- Don't add "http://" in front, HTTPS is not supported
Note: The default location of the Steam executable is: