Quick Introduction
Every time I go to an event of some kind, be it a small booth on an Expo for Primateria, a presentation, or even just small talk that leads into game development, the question that I always get is "but how do you put a game on Steam?"
I remember very clearly, many years ago, asking the same question, and although now there is a bunch of resources online, I wanted to do my part and try as much as possible to relay everything I learned about this process over the years. Hopefully this is a good way to help indie developers that are starting out, or that just never released on the biggest digital game store in the world yet.
This article can seem long and intimidating at first, but that's just because I want to be as thorough as possible to ease this convoluted, yet simple in its core process. It's very important to have in mind that:
- Although it looks scary, the steps are mostly simple, they just require research and care to do it correctly;
- This is, for the most part, a one time setup. After you have your Steamworks organization account setup, adding more games is way a quicker process;
- None of what you read here is legal of financial advice. I'll try as much as possible to relay my experiences and thought process back when me and my studio released our first game, Dual Snake.
Necessary Disclaimer
One thing I have to preface first regarding Steam and its distribution platform, Steamworks is that there are a couple caveats to talking about it. To begin your distribution journey on Steam, you will eventually need to sign an NDA with Valve. This means there are many things that I'm will not be able to talk about or share here, but I'll do my best to relay as much information as possible, always linking the official documentation (which is public).
Have a Question?
To help keep things organized, I'll try to put the most latent questions in the FAQ section at the end. So, if you have a question, I encourage you to read the FAQ first, then the further sections that cover specific steps and aspects of Steamworks and distributing games on Steam. If your question wasn't answered, feel free to reply here or shoot me a DM on Bluesky.
1. Getting Started - Where do I begin?
The first step in this process is to familiarize yourself with the Steamworks platform, which is already a bit of a challenge giving there's not much official information about it. This is how the platform is described in their official documentation:
Steamworks is the set of tools and services built by Valve that help you configure, manage, and operate your game on Steam.
So a great place to start is their Getting Started article. Reading it will be a tad bit confusing, there's a lot of information, but it's good to get familiarized with the terms and the process. I'll be covering all the steps in the article and try to give as much information, tips and advice as possible for each one.
2. Setting Up a Steamworks Account
Even though this is the first step, I remember I was very confused the first time I stumbled upon Steamworks and the setup process. It also doesn't help a lot of the videos in the official documentation are very, very old and possibly outdated. This is a required step to proceed, since all steps after this one will require you to have access to the Steamworks Platform and the official SDK.
The creation of your Steamworks account will pretty much define your relationship with Valve, and more importantly, how you will receive payments for the sales you make with your game. This is why the account setup process will ask for a bunch of personal information and, more importantly, bank and tax information.
So here comes the first decision that you'll have to make: setting Steamworks up as a "personal organization account", with your personal information, or setting up a "company organization account" for Steamworks. This step can vary heavily based on where you live.
"Personal" vs "Company" Organization Accounts
The reason I'm putting these in quotation marks is that there's not really a difference when inside Steamworks. What really varies here is the relationship between you and Valve as a corporation. Since myself and my good friend and co-founder of my studio (Yfrit Games) are from Brazil, this is mostly our experience, but note that this decision entails a bunch of smaller, but important things.
Taxes
It is thus important to keep in might this will be a bit country specific, but it's very likely your country will probably have somewhat similar processes. It's heavily recommended to seek legal counseling here, and to do as much research as you can.
As in most countries, in Brazil you have to pay income tax. There's a maximum amount you can make in a year to be exempt from it. Afterwards, you're taxed for every bit that goes over. These taxes can be very high, so if you choose to use a "personal org account", that is, put your personal bank and tax information here, there's that risk. The alternative is to setup a company, which in Brazil there's multiple ways to do it. The simplest, called MEI, didn't exist for games back when we started, giving us only complex and bureaucratic options.
So to us the question was: are we expecting to go over the anual limit, and if so, are the taxes to be paid higher than what we'll have to spend for all the company setup plus company taxes? Back then, the answer was no, so we went with a personal account. Now, we're in a much different situation. This means you can later change this, but keep in mind it's a bit of a hassle and a bureaucratic process.
If you're from Brazil, as for current times, I heard there are ways of setting up MEI accounts for game development activities. This is probably the way to go here, since it's a very easy way to setup a company and most of the other steps are also easier with MEI. Again, not legal or financial advise.
The most important thing on this step is to do your due diligence and research this as much as possible, and be mindful things will vary from country to country and state to state.
Payment
Another mandatory aspect of the account setup is providing a bank account that can receive payments from Valve. If you're using a personal account, most banks allow for international transfers, but you might need to set this up with your bank. Digital banks with global accounts are becoming more common and may offer this feature by default. If you're using a company account, you'll need to set up a company bank account to receive payments.
One crucial point to understand is Steam's revenue-sharing model. As of now, Valve operates on a 70/30 revenue split, meaning that as a developer, you receive 70% of the revenue from your game sales, while Valve retains 30% for distribution and platform services. This split is standard across major digital distribution platforms and is important to factor into your financial planning and pricing strategy.
For example, if your game sells for $10, you will receive $7 before taxes and any other applicable fees. Keep this in mind when estimating your potential earnings and setting your game's price to ensure it aligns with your revenue goals.
Important: Valve will always make payments in U.S. Dollars, so your bank account must be able to handle international transfers and currency conversion. Some global accounts manage this by making instant conversions, while others allow you to hold funds in multiple currencies. Research this thoroughly and consult with your bank to set up the most efficient system for your needs.
Revenue Share
This is a topic that I don't see talked about much and it's a very important one. Unless you're a solo developer, you'll be most likely working with other people in your game. So although it is still possible to create your Steamworks account as an individual, be mindful that, officially, that person will be the "Super Admin" of the organization, and that all payments and transfers will occur in their name. This can be problematic for revenue share.
I know many of us just want to put a game out and don't really care much about money, or income at first. This was our thought process as well with our first Steam Game, but it's important to be aware of the implications of having all revenue and the Steamworks account tied officially to only one person. Research how company partnerships work in your country and state, and seek legal advice.
Adding Users and Your Game
Once your Steamworks organization account is setup, you'll be ready to start adding your users (developers), and most important, adding your game.
Many moons ago, the process to add games on Steam was something called Greenlight, a platform where developers could submit games that would be voted in order to be added to Steam. You can read more in the article, but the main reason Steam moved away from Greenlight was the fact people paid third party platforms to artificially vote in mass on their games, bypassing the process.
To counteract this, Steam changed into the Steam Direct process, in which, instead of paying for third party bot farms to get your game on Steam, you just pay Valve directly. To add a game to Steam, you'll have to pay a $100 entry fee. This price is localized to your currency, so it can be less or more depending on where you are in the world. The fee is not refundable.
The fee is more of an advancement than a fee per se. If your game reaches $1000 of Adjusted Gross Revenue, Steam will pay back the $100.
2. The Steamworks SDK
With your Steamworks account properly setup, now the hard part is basically past us. Once you're inside Steamworks, you'll be granted access to many resources, including the Steamworks SDK. This is a set of tools and libraries provided by Valve for basically two things: 1) publishing games on Steam; and 2) integrating Steam features (like achievements, leaderboards, the workshop, etc) to your game.
If you're not aiming on using any of the Steam features in your game, there's no need for integration at all, and you'll only be using the distribution tools of the SDK. If you are, I'll cover integration very briefly in topic 4.
3. Deploying to Steam (Builds and Depots)
For this step, the first thing is becoming familiar with a couple Steamwork terms and concepts:
- App ID (Application ID): A unique number assigned to each game or software on Steam. It helps identify your game in the Steam ecosystem. You can always see a game's App ID in its official Steam URL:
store.steampowered.com/app/1397130/Primateria/
- Depot: A storage unit for game files on Steam. Each depot can contain different versions of game files, such as the main game, downloadable content (DLC), or updates.
- Build: A specific version of your game that you upload to Steam. Builds can include new features, bug fixes, or content updates, and are always tied to Depots.
- Branch: A way to manage different versions of your game. For example, you might have a "beta" branch for testing new features before they go live. The "default" branch is what all players see.
Before uploading your game to Steam, make sure to read the Uploading to Steam documentation, it has a lot of best practices and important information. It can be a bit intimidating, just have in mind you don't need to understand everything at once, just try your best to absorb the terms and understand the overall process.
Creating a Depot
In summary, we can look at depots like packages that Steam will distribute. When you add a game to your library on Steam, the moment you hit "download", Steam will serve you the files (build) within that depot. Depots can thus be used as a way to logically separate different distributions of your game. A practical example is having one depot for Windows, one for MacOS and one for Linux; having separate depots for different languages in your game, so that download times are faster (users don't need to download all audio and text files for all languages); depots for your DLC, and so on.
This means that, for most simpler cases, you'll only need a single depot that will carry all of your game files, most likely for Windows Platforms. Having a single, main depot is as simple as going to the depots page, clicking "add" and choosing the platform options.
Uploading a Build
Once you have a depot ready, you'll be able to upload your game files. By doing so, you create a build which is basically a representation of your game files and content for that depot in that point in time. What that means in practice, is that the files you upload will be tied to the depot you created and to a build ID that'll be automatically generated. You will then be able to serve those files to your players, and Steam will automatically serve updates once you do so.
To upload your files, you have basically two options:
- Upload a zip: if your game is smaller than 2 gb (2048 mb), Steamworks gives you the option to just upload a zip file of your game, without the need of messing with the Steamworks SDK tools or
steamcmd
. This is the quickest and easiest way to upload your game. - Using SteamPipeGUI: if your game is larger than 2 gb, then you'll need to use the tools. You'll need to download the latest version of the Steamworks SDK, and all the necessary tools will be inside the
tools
folder. Within that folder, if you're on Windows, you can use theSteamPipeGUI
, which is a graphic application to upload game files. Just fill the information asked by the tool and it should to everything for you. - Using steamcmd: If you're not on Windows, then you'll have to use steamcmd, a command line application for Steam that allows things such as uploading game files. The entire process is described in detail in the Upload Your Game documentation, but the TLDR is: 1) create your build script file
your_app_build.vdf
with the necessary information (your app id and the path to your game files directory); 2) run the build script using steamcmd:tools\ContentBuilder\builder\steamcmd.exe +login <account_name> <password> +run_app_build ..\scripts\your_app_build.vdf +quit
- Using third party tools: some people have made their own tools to aid with things like multiple application uploads, as it can be a hassle to maintain multiple build scripts. There's a bunch of them on Github, feel free to look for them and if they fit your needs.
Once your build is generated with your game files, it will appear in your builds page. Here, your final step will to be to set that build live.
Builds can be live on different branches, which are basically pointers to builds you upload. You can create branches like playtest
or beta
, to serve content for specific players or play testers. They can even be password protected. The default
branch exists by default, and is the branch that will be automatically served to all players that own the game. This means, once you set a build live to the default
branch, all players will receive that build as an update.
4. Steamworks Features
These are all the features that you've seen on many Steam games, like achievements, multiplayer, Steam Cloud, and so on. A full list of features can be found in the Steamworks Documentation.
In terms of integration, the process can be sluggish, complex and could use better documentation if doing it by hand, especially if you're not familiar with C++. However, nowadays there are a multitude of alternatives that can streamline this process of integration, with varying levels of complexity (and cost). I won't be covering integration too much in this article, as there's a lot to talk about, so I'll be doing an article specific for this. Here's a quick list depending on what you're using to develop your game:
- Steamworks.net (Unity): a free, opensource, C# Wrapper to the Steamworks SDK that makes Steamworks integration way simpler on Unity (or non-unity C# projects like MonoEngine);
- Online Subsystem Steam (Unreal Engine): the official way of integrating Unreal Engine with Steamworks. This one can be very convoluted and hard to setup, but it is free;
- SteamCore (Unreal Engine): an Unreal Engine plugin that offers Blueprint and C++ integration with Steamworks. It makes things a lot easier, but it is kinda pricey;
- luasteam (Love2D): a wrapper for the Steamworks API on Lua project that I wish existed in 2017 when we did all of this by hand.
For each specific feature, there'll be a specific process. For instance, creating achievements will require you to create the achievements in Steamworks, assigning them an achievement ID, then using your specific integration methods to trigger the achievement methods and functions. Some features are fairly easy and straightforward, like Steam DRM, while others can be a complete pain to setup, like User Authentication and Ownership on servers.
The most annoying part of Steam features is that the game must be running within the Steam runtime environment for them to work, and that can be very annoying to setup on engines like Unreal Engine. One thing that can (somewhat) help, is studying the SpaceWars example game and how it handles all feature interactions. Each integration method will differ in this regard.
5. Store Page and Pricing
Before you can announce your game to the public, you'll need to setup your Store page. As soon as you have your game added to Steamworks, you'll be presented with a Release Progress. This is a set of steps that you'll have to fulfil before launching your game, being two major steps: store presence and game build.
Store Presence
To setup your store and complete the Store Presence step, you'll need to fill each of the boxes presented in your Store Presence checklist that appears on your Steamworks application page. These will range from filling information about your game, store page description, ticking boxes for languages, genres and available features, etc; to uploading the graphical assets of your page, such as banners, logos and screenshots. A detailed list of the assets can be found in the docs. Make sure to follow the instructions, resolutions and formats correctly for each asset.
One important thing to note is you don't need to release your game to have your page setup, in fact you can do it all with the page hidden, while using the "beta preview" feature to see how it's coming along. Once you have your page and are ready to announce your game, and all the checkboxes of your checklist are ticked, you're ready to send your page to be reviewed by Valve (a process that can take around 3 business days).
With your page approved, you're now able to make it visible to the public. Even if your game is not ready yet, it is important to announce your Steam page to the public in a "Coming Soon" state. The moment to do so can vary a lot, so here's a couple things I like to take into consideration:
- Timing: make sure you're ready to talk about your game and that you have enough material to generate hype. The currency of Steam games is Wishlists. As soon as you have your page public, your grind to gather as many Wishlists as possible starts. There's no magic number for this, but in my experience you need at least 10k Wishlists to get your game to important lists, like top of "New and Upcoming" or "Trending".
- Steam Events (and more timing): one of the biggest ways to get engagement for new Steam Games is through its biggest indie event: Steam NextFest. Steam heavily promotes indie games and demos during these events, and demos and pages with good engagement receive thousands of impressions. In my experience, the first Next Fest a game enters is crucial to it's future on Steam, and you need to be able to surf on that hype. My advice is to only put out your page if you're close enough to a public demo for the next NextFest event, and also if you're somewhat close to actual release soon after. That way, you can setup your page, gather some wishlists, enter Next Fest, generate hype and even more Wishlists with your demo, then soon after release your game on a good release window. Of course mileage will vary, but that's the way we found the most success with our games.
Game Build
This step is where you send your latest build for Valve to test and review. This does not have to be your final build, and you'll be able to keep updating it afterwards, but the important thing to note on this step is Valve will look for very specific things:
- Does your game run on the platforms you added in your depot?
The best way to test this yourself is to try and run your game build on a completely separate computer. Some engines require things like Microsoft Visual C++ or other dependencies that will probably already be installed on your development machine, but not on your user's. Steamworks has a bunch of these common redistributables you can include by just ticking a box. - Are you a filthy little liar?
Jokes aside, Valve will painstakingly check to see if everything you included in the Store page exists within the build they're reviewing. This includes screenshots, languages, features, and so on. Make sure you only include things in your store page that are present in your build. You can always add things later as you implement them.
The rigor of the review varies heavily from reviewer to reviewer. I've had reviewers completely ignore blatant issues I accidentally let pass, while others have rejected builds because one screenshot had slightly older assets.
Once you're certain everything is good, Valve will take around 5 business days to review. If you're rejected, you can always ask again.
Pricing
This is one of the most important pieces to releasing a game on Steam, and unfortunately is also one that isn't an exact science, and there's a lot of scattered and conflicting information about this out there.
Starting with what's certain, you'll have to choose a price in USD for your game. This step alone can be pretty overwhelming, and while there isn't a right answer, and these are very much just my (very subjective) opinion, here's the things I like to consider:
The Balance Problem
Games are thought to be, in general, expensive. People don't tend to think too much about how much effort, sweat and tears goes into game developing, and in the end, buying games can also be a luxury. What this means in practice is that it's very unlikely people are going to be willing to pay AAA prices for you game, even if you are certain they offer a similar amount of value.
When it comes to indie games, people can look at anything over $20 and frown, but at the same time, people can look at $1 games and think they're not worth their time, else why would they be so cheap?
So in the end, finding this balance can be very hard.
Some people like to use "rule of thumbs", and those can help gauge some initial values:
- The "hours per dollar" rule: very straight forward, your game is worth $1 for each hour of game play it offers. This of course has a cap, else Dwarf Fortress would cost infinite money. It can also be very controversial, as there are masterpiece games like Journey that are just a couple hours long.
- The "list fitting" rule: price your game to fit one of the heavily advertised "Under $20" and "Under $10" lists on Steam. This can be a good, simple way to price a game, but it can directly conflict with similar games of your genre on Steam costing way more or way less.
- The "genre market" rule: price your game similarly to other games in your genre, gauging the amount of content and features it offers compared to its competitors. This one's a good way to find a number, however it's important to make sure you're offering similar levels of value compared to these other games.
Of course, although these can be good starting points, pricing can be a very complex task that involves lots and lots of research, and there'll always be exceptions. Vampire Survivors offers hundreds of hours of replayability costing $5 (and once costing $1). At the same time, Darkest Dungeon 2 costs $40, a steeper price compared to most indie games. In the end, both are incredibly successful games that sold a massive amount of copies, but with very different pricing strategies.
In the end, as frustrating as it is, there's no easy answer here. You'll have to research other games, compare them to yours, playtest a lot, and ask people what they think, how much they'd pay, and what they think is fair. The final decision is always yours, and there's always going to be arguments in favor and against any price point.
The Price Localization Problem
Once you have your USD price set, a new problem arises. Steam has localized prices for many of the different regions of the world. This is due to many complex facts I won't pretend to know much about, such as the fact some currencies are weaker or stronger than the USD, or very delicate things like cost of living, average income and how much people can and are willing to pay for games in different countries.
When setting your pricing on Steamworks, it will suggest different, localized prices for each one of the regions. While the suggestions are not terrible, and many games do just run with the suggested values, they can be very skewed, which can affect your sales in specific regions by very big margins.
An example I like to cite is PirateSoftware's game, Heartbound. In summary, they had a very latent issue with their game being pirated in Brazil. They realized their localized price was too steep for a region where people are not able to pay high prices for games, but that the Brazilian audience was very much interested in playing the game, hence the piracy. Their solution was to very simply: lower the localized price in Brazil to 60% of the base USD pricing (that is, $4 instead of the base $10); and localize the game to Brazilian Portuguese. By doing so, Brazil grew to become 25% of their studio's total income in terms of game sales.
Finding the balance for each of those localized prices is thus incredibly important, but you can see how hard it can be as well, giving how complex it was to find a USD figure in the first place. That and the fact audio and text localization are not easy or cheap to add, so it's not feasible for us as indie devs to think we'll be able to localize to hundreds of languages. My advice here is to understand your audience, find out which regions you have the most demo downloads, for instance, and research that region. Look into pricing of other popular games in that region, talk to people in that audience. This is a very good way of finding potential in other regions of the world.
6. Preparing for Release
Finally, we have all the pieces ready for the well anticipated release. There's not much to do here, once you're ready, all you need to do is request one last Valve review for your store, your build and your pricing settings.
Once the review is complete and approved, you will be able to set your game status as "Released", or schedule a specific date for that, if you prefer.
As soon as the release status is change, the game will be available for purchase, and owners will be served the build you left live on the default
branch.
Conclusion
Phew, that's it! This ended up being even longer than I originally expected, but I tried my best to put in as much information as possible.
The process of releasing on Steam can be long and confusing, and even though there's a lot of people talking about it, information can be scattered and hard to follow.
I hope this was a good way of condensing everything down into one centralized response.
Once again, feel free to reply to this article or to send me a DM on Bluesky.
Thanks for reading and see you all in the next one!
-- Fairfruit.
FAQ
1. How much does it cost to publish a game on Steam?
To publish a game on Steam, you need to pay a one-time entry fee of $100 for each game. This fee is not refundable but will be reimbursed if your game earns $1,000 in Adjusted Gross Revenue.
2. Can I publish my game as an individual or do I need a company?
You can publish your game as either a personal organization account or a company organization account. The choice depends on your specific situation, including tax implications and how you want to manage revenue sharing among team members.
3. What is the Steamworks SDK, and do I need it?
The Steamworks SDK is a set of tools and libraries provided by Valve for publishing games on Steam and integrating Steam features (like achievements and multiplayer) into your game. If you plan to use any Steam features, you will need to integrate the SDK; otherwise, you can simply use it for distribution.
4. How do I upload my game to Steam?
You can upload your game to Steam using one of the following methods:
- Upload a zip file (if your game is under 2 GB).
- Use SteamPipeGUI (for Windows) or steamcmd (for other platforms) to upload larger files.
5. What are depots and builds?
- Depot: A storage unit for your game files on Steam. You can have multiple depots for different platforms or versions of your game.
- Build: A specific version of your game that you upload to a depot. Builds can include updates, bug fixes, or new features and are served to players.
6. How do I set up my store page?
You can set up your store page through the Steamworks dashboard. You'll need to fill out information about your game, upload graphical assets, and complete a checklist before submitting it for review by Valve.
7. How do I determine the price of my game?
Pricing your game can be challenging. Consider factors like the "hours per dollar" rule, genre market pricing, and localized prices for different regions. Research similar games and gather feedback from potential players to find a fair price.
8. What is the review process like?
Valve will review your store page, game build, and pricing settings before your game can be released. The review process typically takes around 3-5 business days, and you can request a re-review if your build is rejected.
9. Can I change my game’s price after release?
Yes, you can change your game’s price after it has been released. However, keep in mind that significant price changes may affect your game's visibility and sales, and Valve will have to approve the changes.
10. What should I do if I have more questions?
If you have more questions that weren't answered in this FAQ, feel free to reply to this article or send a direct message to me on Bluesky. I'm here to help!