Integrate Steamworks Into Your Godot Project with GodotSteam
If you want your game on Steam, and/or you want to use some of Steam's cool features such as achievements, leader boards, multiplayer, or Workshop then you need to learn to tackle the beast that is Steamworks.
Steamworks is a collection of tools and services provided by Steam for developers on the platform.
It's very extensive, covering tools for marketing, international distribution, payment and pricing, multiple languages, play testing, DRM, fraud, cloud saves, user created mods, voice chat, and so much more. It really is quite huge. Being so expansive, the wonderful people at Valve have provided a metric truck load of documentation and video guidance on how to use their services.
However, this isn’t smooth sailing for everyone in game development.
As Kyle Kukshtel, in his blog post on Game Developer, puts it, “it's written from the perspective of someone who is using the native C++ library and likely already knows how all its functionality intersects.”
So, two things stand out there. One, it's so big, it can be quite intimidating to an outsider and the documentation assumes you are already familiar with the service, which is how all tech documentation is written. I hate it. Two, it's incompatible with game engines not operating on C++. For example, Unity interfaces in C#, and Godot interfaces GDScript (similar to Python) as well as C#.
So what’s a developer - specifically, a Godot developer - to do?
Well, option one is the school of hard knocks approach of just getting on with it, building custom code to interface from your game to the Steamworks library using their documentation. It will involve a lot of trial and error, and could add a mountain of complexity on top of your games’ code, which is probably also a small mountain of complexity itself. This will add both development and testing time, increasing development costs and potentially the chance something will go wrong in the future.
Option two, the correct option, is to see if any smart cookies out there have walked this path before you and built something to make it easier.
Enter stage left, GodotSteam.
GodtSteam is a Godot module that has the full functionality of the Steamworks SDK, that you can somewhat simply plug into your Godot project.
It was founded and maintained by game developer CoaguCo Industries (check out our preview of their game Haulin' Oats in the latest edition of SUPERJUMP Weekly) and it is maintained by a collection of contributors.
It comes with complete documentation on how to setup up, deploy, use, and even ship using this module, and the documentation covers a a variety of Godot versions, deployments, and operating systems.
They offer support for stuck users via email or over on the CoaguCo Industries Discord.
Despite CoaguCo Industries being hard at work on multiple titles, the module does receive regular updates to address bugs, missing features, new features implemented by Steam, or more recently the upgrade of Godot to a new major version (4.0 is very exciting!).
If you are making a game in Godot, or are considering it, I’d recommend having a look into this as soon as you can. The Steamworks SDK, and by extension GodotSteam, has a variety of features and functionality that you may not know about, hopefully speeding up development time.