Upload Game Binaries to Steam with steamcmd and ContentBuilder

Quick overview of the steamcmd tool for Windows, Linux and OSX

Thu, 02 Dec 2021

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.

Buy Me A CoffeeDigitalOcean Referral Badge
Loading...
Edward Beazer

Edward Beazer - I just like to build shit. Sometimes I get stuck for hours, even days while trying to figure out how to solve an issue or implement a new feature. Hope my tips and tutorials can save you some time.