5
\$\begingroup\$

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.

\$\endgroup\$

1 Answer 1

4
\$\begingroup\$

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
\$\endgroup\$
4
  • \$\begingroup\$ I'm a little confused on why the ISteamUGC api is needed even to create/upload a mod, which (in my mental model) is simply a collection of files/folders. If I'm understanding correctly it means users have no way of uploading a mod except through the game, and then inside the game I also have to implement a ton of logic to let them build/upload a mod within the game itself. Can't there be a way for users to just upload a folder and name the mod without needing to go through this API? \$\endgroup\$
    – pete
    Mar 6, 2023 at 7:14
  • \$\begingroup\$ @pete The Steam API enables workshop items to use their back-end storage and front-end web so users can find, store, organize, sort, rate, and download content for your app - if you want their perks, they require using their API. You could provide your own mod services. For example Noita has its own mod system & added support for Steam Workshop mods after launch. Question as written was about using Steam's ecosystem - how to support mods outside their ecosystem would be a question worthy of its own post. Either way, a game with mod support is more work than one without it. \$\endgroup\$
    – Pikalek
    Mar 6, 2023 at 14:58
  • \$\begingroup\$ It's just confusing to me because Steam API has some common use cases like uploading a new mod, with all the fields defined such as title, description, and folder. So why can't steam just provide that UI as a webpage for their end users; an "upload mod" button on steam instead of making all the dev's develop their own custom version of the same thing \$\endgroup\$
    – pete
    Mar 7, 2023 at 5:06
  • \$\begingroup\$ @pete Steam has a web API which includes some workshop related functionality. I'm not familiar enough w/ it right now to know if it does what you're asking about. If you're running into problems building a mod system as you've described, I encourage you to post that as a question. You could also ask "why doesn't Steam do X" but that's less answerable than "how can I do X." Beyond that, extended secondary discussion should be directed to our chat. \$\endgroup\$
    – Pikalek
    Mar 7, 2023 at 15:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .