I want to know how to make a game compatible with Steam Workshop. Basically, I want to be able to let players make mods for my game. Using Google, I keep finding tutorials for how to make mods for popular games, but not how to make one generically.

I am using Godot engine which has builtin support to make it easy to let people mod your game. My game is network enabled and uses ENet with RPC calls (I don't think the networking matters, but in case it does, I am mentioning it).

How do I let people upload mods they made for my game so others can just subscribe to it and have it loaded in the game?

I did check out Valve's Create a Mod page, but it only talks about how to make one for source engine games. Looking at Valve's Mods on Steam page, they mention to ask the developer how to upload mods if it is not a source game, but if it is a source game, to use their guide on how to upload.


The first thing you need to do is familiarize yourself with the Steamworks documentation.

Searching for "workshop" from the documentation homepage will bring up the references for the Steam Workshop Overview and the Steam Workshop Implementation Guide.

Starting with the overview, you'll first need to decide on which workshop model you want to support:

  • The Ready-To-Use Workshop allows anyone can upload content and players can download content without any curation.
  • The Curated Steam Workshop place content in a queue for customers to vote on and the developer must approve items for use. This model typically requires an item server or use of the Steam Inventory Service for tracking ownership.

The implementation information can be found on the previously mentioned page of the same name. The specific details are too broad to cover here. As a starting point, you'll need to make use of the ISteamUGC Interface, which contains the "functions to create, consume, and interact with the Steam Workshop."

Regarding not being able to find a tutorial for how to make a generic mod: the problem is that mods change the game in one way or another & every game is for the most part, unique. Games that share an engine/platform may have a standardized protocol for getting content to the game, but how that content gets used by the game is going to be highly dependent on the game itself.

That said, SpaceWar (the example app that comes with Steamworks SDK) demonstrates a subset of the ISteamUGC API, including:

  • Checking if a workshop item is downloaded and installed
  • Requesting info about an item
  • Retrieving the list of workshop items for the based on user subscription

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.