Steam integration can be “easy” or “less easy”. I put easy in quotes because here are the minimum steps needed to integrate:
- Create a Steam account (which can be it’s own rat hole, just ask Randy)
- Download the Steamworks SDK
- Create your Steam build and depots
- Create your store page and pricing
- Upload your game
- Get a beer and watch the dinero role in
Simple enough… but, our understanding is that a game will be better received if it has Achievements built in. In order to build achievements into a game you have to:
- Define the achievements… by far the hardest part
- Update your code to call the Steamworks API when a player hits an achievement. Not too bad, until you decide to have achievements that are count based, e.g. kill 15 zombies with a bow and arrow.
Now your code has to call the API to update the count each time you kill a zombie with a bow and arrow. Once they hit 15, your code then gives them the achievement.
None of this is technically very difficult, but it does add more complexity and complexity leads to bugs. Also, what if you buy the game outside of Steam? Now we need two game builds, with and without Steam integration. Jeeze, what if GOG or Epic Games decide to create their version of achievements? Do we have four game builds?
This is where API standards come in. What do I mean by that? Companies interested selling achievement based games get together and decide on SINGLE way of calling achievement code, e.g.
The games selling companies create the library (DLL) code that gets called when we hit the line of code above. But wait, don’t I still need four builds to bring in the specific DLL from each game seller? This is easily fixed by, again, having a standard name for the DLL, such as “achievements.dll”. When I upload my game to the seller, they provide a mechanism to attach their specific DLL to my game.
Now having developed software for 30+ years, that is much easier said than done… but Steam makes BILLIONS a year… let them figure it out!
I created the code that we’ll be using to integrate with Steam and in the next few weeks I’ll get with Randy and we’ll bring it into the main code base and start testing.
We’d love to know your thoughts on game achievements! As someone who started gaming 30 years ago, I don’t really care about them and if I stumble upon one great, but I don’t go searching for them.
What do you like in your game?