Packaging
Last updated
Last updated
Steam CMD is Valve's official tool for uploading your app to Steam, there are 3rd party visual interfaces for the tool though we recommend you learn the command line version and how to work with VDFs as they offer far more flexibility and are the "official" method supported by Valve. A quick Google search will find you various open-source visual tools for modifying VDFs and using the Steam CMD tool ... here is one such search result ... please note we are not affiliated with this tool at all its simply an example of a search result.
Steam CMD has a feature "Content Builder" which is the traditional way to upload your games and in our opinion, the better method as it's more flexible and doesn't depend on you opening the engine or some 3rd party tool. It can be easily automated with whatever build processes you're currently using and is the "official" method support by Valve so they can help with any issues if you get stuck.
Your first step is to download the Steamworks SDK, this is a zip file that has a slew of tools and examples meant to help you get to terms with the Steamworks tools.
In short, we are going to create a script that will run SteamCMD and tell it to read another script called an "app build vdf" ... that app build vdf is just a script that describes what app it is we want to upload for and what depots we want to upload to.
The app build vdf further references "depot build configuration vdf" files that detail each depot that will be leveraged and what that depot reads
Once you have that downloaded you should unpack it to a location on your local machine. The folder you're looking for within the SDK is the SDK -> Tools -> ContentBuilder folder.
In short, you can use a couple of simple commands to upload your build to Steam via Steam CMD. This setup can even be scripted so that all you need to do is run your script.
To get started let us create the script that you will execute to upload your builds, follows is a template you can use.
We like to do these for testing though keep in mind you are typing a username and password into what amounts to a text file so make sure it's in a secure location like a secured and restricted build server. This tool uploads the game to Steam so obviously it will need a net connection with the ability to read from disk and call out to the web.
To use the above template open up Notepad or your preferred plain text editor and paste that command in. Next, we are going to replace the following text
[Username] This should be your Steam User Name that you use for the Steam Developer Portal
[Password] This is the password for that same account
[appid] This is the numeric app id that you want to upload
Next, save the file to the ContentBuilder folder ... we suggest you give it a name such as run_build_MyGameName.bat
this will make it easier to sort, search and remember which app this goes to.
This script does the following things
Run SteamCmd
Log in as the indicated user
Indicate the script..\scripts\app_build_#####.vdf
The final command there is passing in a file as part of the argument ... a file located in the scripts folder, it's that vdf file that describes what is to be uploaded, where the content should be read from and what depots it should be pushed to.
You can create variations of this script for different builds and different apps, this gives you a 1 click way to upload all your content and you can even have it upload multiple builds at once.
How? The next section covers it.
The .vdf format from Valve does 2 things, there are:
"appbuild" These VDFs describe what is to be uploaded e.g. the app id, the description of the build, the content folder the build content can be found in, etc.
"DepotBuildConfig" These VDFs describe the depot itself that an upload should push to, this will include the depot ID and its file mapping information as well as any file exclusion rules such as excluding *.pdb files from being uploaded
This should be saved in the scripts folder with a name such as app_build_####.vdf
where the ### is your app ID.
You should replace the text defined below with the values appropriate for your game
[appId] The app ID this build is about
[description] The description of this build ... is usually something like "MyGame's base build" or "MyGame's Windows Build"
[gameFolder] This is the location of your build content, and as you can see we assume you're putting your build in the SDK -> Tools -> ContentBuilder -> content folder. We recommend you make sub-folders in that for each game ... and for each platform ... for example
sdk/tools/ContentBuilder/content/MyGame/Windows
sdk/tools/ContentBuilder/content/MyGame/Linux
sdk/tools/ContentBuilder/content/MyOtherGame/Windows
In this example, the value would be ..\content\MyGame\
[DepotId] This is the list of DepotBuildConfig files to be included, it is an array so you can include more than 1 for example
The Depot Build Config define what content they will read or not from the content folder they are pointed to. How this works will make more sense as you read over the template for the Depot Build Configuration
This should be saved in the scripts folder with a name such as depot_build_####.vdf
where the ### is your depot ID.
Here we will replace the following text
[DepotId] This is the depot's ID as seen in the Steam Developer Portal and is a number such as 123456
[RootFolderOfTheGame ... where the platform folder live]]
This is the root folder where the content will read from ... for example
C:\Builds\ContentBuilder\content\MyGame
[Platform]
This is a sub-folder within the content root so if I entered the value .\Windows\*
then I am telling it to read all files and folders in C:\Builds\ContentBuilder\content\MyGame\Windows
Once you have the 3 layers of scripts created that is the Run Build Script, the App Build VDF and the Depot Build Config VDFs you can now upload your build by simply running the "Run Build Script" you set up. This can now be easily tied into your build process if you're using one or even run manually by double-clicking the bat file.