Has anyone made a module for Steamworks?

Monkey Forums/User Modules/Has anyone made a module for Steamworks?

Oddball(Posted 2013) [#1]
I'm wondering if anyone has already made a Steamworks module?

If not can someone point me in the direction of a tutorial for making a user module of a C library?


skid(Posted 2013) [#2]
My steamstub project should run fine on GLFW targets, you need to be signed up / approved by Steam first, which I assume / hope is a lot easier than it use to be.

Oddball(Posted 2013) [#3]
I'm trying to work out if it'd be feasible to port my game, which is already on Steam, to monkey. I use your Steamstub module for BlitzMax, how would I get that running in monkey? Sorry if that's really obvious, but I'm still getting to grips with monkey.

Why0Why(Posted 2013) [#4]
Are you going to port Hack,Slash to mobile?

Oddball(Posted 2013) [#5]
Maybe. It all depends if porting it to monkey is feasible.

Skn3(Posted 2013) [#6]
yes please port hackslashloot!!!!

There really isn't a decent (imho) game of that nature on iOS. Tried a few and none of them gave me as much fun as yours did!

Raul(Posted 2013) [#7]
@skid: where is your steamsub project?

skid(Posted 2013) [#8]

HowTo for running Steam Monkey GLFW, done with MonkeyPro72A

1. clone %monkey%/targets/glfw folder and call it steamglfw

2. inside steamglfw folder edit TARGET.MONKEY changing name to:


3. Copy the steamstub_api.lib file into the template/vc2010 folder

4. Copy the public steam include files ( steamtypes.h etc. ) into a steamglfw/template/steam folder

5. load the steamglfw/template/vs2010/MonkeyGame.sln file into Visual Studio 2010, right button on the MonkeyGame project in the Solution Explorer and select properties->Configuration Properties->Linker->Input and add steam_api.lib; to start of Additional Dependencies list for both Debug and Release

6. save, exit, set up the following code in a new folder somewhere, build and run with the target set to the new Steam GLFW Game and you should be able to connect and see some status failures to do with GetStat failing on unitialised variable.

I can finish off implementation if anyone gets this far and wants more.


steamstub.cpp [beta monkey only release with bits disabled]

Oddball(Posted 2013) [#9]
Thanks Skid. Had a quick look, and even though I don't understand most of it, it looks detailed enough for me to work it out. I'll do some testing and report back. Thanks.

skid(Posted 2015) [#10]
I just got this working today with latest steam sdk.

Once I have added a few more calls to the test project I will upload the steam target (based on modified GLFW3 target similar to above) so others do not have to go through the same pain.

MikeHart(Posted 2015) [#11]
THANK YOU!!!!!!!!

rIKmAN(Posted 2015) [#12]
Awesome, thanks skid MUCH appreciated!

skid(Posted 2015) [#13]
Small steps...

lom(Posted 2015) [#14]
That's awesome! I will definitely need this.
Also it would be nice to see a Steamworks multiplayer implementation in your module.

skid(Posted 2015) [#15]
Stats, achievements and leaderboard functions are in and MacOS is now supported.

Hopefully first public release will be ready sometime next week. I'm tempted to attach a smallish price tag to pay for some of the beers that have gone into this effort, not sure.

Why0Why(Posted 2015) [#16]
Skid, I think you should absolutely attach a small price to it. Anybody serious enough to get on Steam should appreciate your efforts.

skid(Posted 2015) [#17]
I'm thinking SteamWorks target for MacOS and Windows = 12 bottles so US$25 for 1 year support.

A Linux release would need a sponsor, US$400 to cover set up costs and pain would make it happen.

Soap(Posted 2015) [#18]
I can help sponsor.

Amon(Posted 2015) [#19]

I'm thinking SteamWorks target for MacOS and Windows = 12 bottles so US$25 for 1 year support.

Bargain of the week that is.

A Linux release would need a sponsor, US$400 to cover set up costs and pain would make it happen.

That's a bargain, also, considering you only want say $20 for the set up costs and $380 for the associated Linux pain. Brave soul if not a little self sadistic..... :)

skid(Posted 2015) [#20]
I wish Valve adopted Android, their still born Linux distro is typical of continued Linux=Fail in the game world.

Surely even in Eastern Europe XP desktop is preferable?

Why0Why(Posted 2015) [#21]
But, but, I hear this is the year of linux ;)

lom(Posted 2015) [#22]
Any plans to add multiplayer support?

skid(Posted 2015) [#23]
Ask me again in 12 months. If someone in the monkey community has such a project they know who to call.

Oh, and after seeing Linux in use today, I take back what I said about it being worthless. I will be investing in a 4K panel and SSD for linux version as soon as I make 10 sales @ $25. If that target takes 12 months I'm not bothered, no hurry.

There is a work in progress blog here.


The error stuff is because I think stdout is null in callback land so printf is currently out of bounds during steamstub callback handlers.

Ideally I would like to use stdio over pipes instead of an event system as I consider native code creating monkey objects which it does at the moment pretty unsafe.

Raz(Posted 2015) [#24]
Skid, any more progress/change with this? I've just tried it with Monkey72b (nearest version to 72a that I could get) and am getting a couple of errors. I'm using platform toolset v100 and the steam SDK which I downloaded earlier today.

  ..\main.cpp(2885): error C2440: 'initializing' : cannot convert from 'String::CString<C>' to 'char *' [C:\tmp\steamtest\steamtest.build\steamglfw\vc2010\MonkeyGame.vcxproj]
  ..\main.cpp(2893): error C2440: 'initializing' : cannot convert from 'String::CString<C>' to 'char *' [C:\tmp\steamtest\steamtest.build\steamglfw\vc2010\MonkeyGame.vcxproj]

I'm happy to offer sponsorship in some form or another if that's of any motivation? :D

Primarily looking at Windows support, but ideally want Windows, OSX and Linux