Upload Game Binaries to Steam with steamcmd and ContentBuilder
Quick overview of the steamcmd tool for Windows, Linux and OSX
This is going to be a quick guide to setting up your steamsdk to upload game binaries to steam using the cli. You can upload a build through the browser, but it takes longer and I also use this method as a way to automate my uploads whenever I have a game update
Steam SDK
To proceed with this tutorial you will need to have the steam sdk installed on your computer. You can get it from the Steamworks page.
Core Setup
The setup is the same across all OSs. Once you have the sdk, navigate to
tools/ContentBuilder/
Once here there are two folders that you will be working with primarily. content which is where you will end up putting your game binaries and scripts which will store the information steam needs to upload your game.
To start, we want to set up an app and depot vdf file. Go to your Steamworks page and get the ID for your App and Depot. Steam uses the vdf files are configuration files. There should be samples in there but in case there aren’t, here are mine.
Depot file
Change the name of the file to depot_YOUR-DEPOT-ID.vdf or create a new one if there isn’t a depot file already
"DepotBuildConfig"
{
"DepotID" "YOUR-DEPOT-ID"
"contentroot" "D:\steamsdk\tools\ContentBuilder\content" \\ absolute path to your content folder
"FileMapping"
{
"LocalPath" "*"
"DepotPath" "."
"recursive" "1"
}
"FileExclusion" "*.pdb" \\ this excludes debugging symbols. Can be whatever you want
}
App file
Change the name of the file to app_YOUR-DEPOT-ID.vdf or create a new one if there isn’t an app file already
"appbuild"
{
"appid" "YOUR-APP-ID"
"desc" "Default Build Script"
"buildoutput" "D:\steamsdk\tools\ContentBuilder\output" \\ absolute path to your content folder
"contentroot" ""
"setlive" "beta" \\ optional. This will make it so this build will automatically be set to live for my beta channel
"preview" "0"
"local" ""
"depots"
{
"YOUR-DEPOT-ID" "D:\steamsdk\tools\ContentBuilder\scripts\depot_YOUR-DEPOT-ID.vdf" \\ path to your depot file
}
}
That ends the setup
Usage
First, you want to add whatever you want to upload to the content directory. Once added, you can run the deployment command
Windows
PATH-STEAM-SDK\steamsdk\tools\ContentBuilder\builder\steamcmd.exe +login STEAM_USERNAME STEAM_PASSWORD +run_app_build_http PATH-STEAM-SDK\steamsdk\tools\ContentBuilder\scripts\app_YOUR-APP-ID.vdf +quit
Linux
PATH-STEAM-SDK\steamsdk\tools\ContentBuilder\builder_linux\steamcmd.sh +login STEAM_USERNAME STEAM_PASSWORD +run_app_build_http PATH-STEAM-SDK\steamsdk\tools\ContentBuilder\scripts\app_YOUR-APP-ID.vdf +quit
If it does not work and says: /home/steam/steamcmd/linux32/steamcmd: No such file or directory you will need to install lib32gcc1:
sudo apt-get install lib32gcc
This library helps run compiled c/c++ code
OS-X
PATH-STEAM-SDK\steamsdk\tools\ContentBuilder\builder_osx\steamcmd.sh +login STEAM_USERNAME STEAM_PASSWORD +run_app_build_http PATH-STEAM-SDK\steamsdk\tools\ContentBuilder\scripts\app_YOUR-APP-ID.vdf +quit
Last note, the output folder stores CSD and CSM files that are used for caching. You don’t need to keep them, but they do speed up builds.