Joris Eijmberts

Turning crazy ideas into games!

Steam services

Steam was one of the last platforms to be added to CP Social. The reason behind this was the flexibility of the Facepunch.Steamworks api.

Facepunch.Steamworks is an alternative to the Steamworks.NET. The difference between Facepunch.Steamworks and Steamworks.NET is that Steamworks.NET tries to be as close as possible to the original Steamworks c++ api.

Both of these api’s essentially have the same functionalities build in, only when using Steamworks.NET a developer has to write a lot more code compared to Facepunch.Steamworks.

After discussing Steamworks.NET and Facepunch.Steamworks with a fellow student, Levi Buck who had worked with both before and suggested Facepunch.Steamworks in the first place. I decided on using Facepunch.Steamworks.


Implementing the Steam services itself into CP Social was quite easy when comparing to the Android or iOS services, this was mainly due to the easy to use api from the Facepunch.Steamwork plugin.


Testing the Steam services was quite a bit more work than implementing the Facepunch.Steamwork api. This was due to the onboarding process of Steam.

To be able to test authenticating, achievements and cloud saves you need to have you game on Steam itself, not published, but just uploaded to Steam. To do this I had to create a Steam partner account and do some legal stuff before this was possible.

Luckily Levi Buck tipped me on this beforehand so I made sure I started this on-boarding process as soon as the internship started. Over all this process took about a month to complete.


Just as I had done with the Android and iOS services, every time I had added a new feature to CP Social’s Steam services I made a screen recording of it and send it to my colleagues to show the progress of the development.

authentication CP Social Steam
First achievements unlock CP Social Steam
Cloud saving CP Social Steam