ENGINE PLUGIN: AGSteam v3.4 (Windows; Linux; Mac OS X)

Started by monkey0506, Thu 27/10/2011 05:05:47

Previous topic - Next topic

monkey0506

The AGSteam plugin serves as an intermediary step between the Steamworks API and the AGS runtime engine. In short, what that means for you is that if you're working on integrating a game into Steam, you can now place Steam-related function calls directly in your AGS code!

Currently the plugin supports Steam achievements, int, float, average rate stats, global int and float stats, and leaderboards. If you need any other Steam features, let me know and I can explore options to get them working properly for you.

Update: I've determined that the usage of the Steamworks API does not violate the non-disclosure agreement with Valve. AGSteam is now open-source!

Note: This plugin will not make Valve accept your game for Steam integration. They still hold the sole hand in that decision. This plugin will not do you any good if your game has not already been accepted for the integration process.

-monkey

Download links

Dualnames

This is fantastic, monkey, also USELESS to me. But we'll see.  ;)
Worked on Strangeland, Primordia, Hob's Barrow, The Cat Lady, Mage's Initiation, Until I Have You, Downfall, Hunie Pop, and every game in the Wadjet Eye Games catalogue (porting)

Wonkyth

"But with a ninja on your face, you live longer!"

abstauber

Terrific news indeed!

Now if steam would only accept more freeware games :D

monkey0506

Well Dual and abstauber, if you would take adventure game creation seriously then maybe Steam would accept your games. :D

As I said, this probably won't be the most wildly useful thing ever, but hopefully it will save people time (and perhaps even money) down the road... 8)

Calin Leafshade


tzachs

I wish I would have a need for this plugin one day...  :)


monkey0506

@Calin: Maybe you missed it in my first post, but Valve has a pretty strict license on the Steamworks API. Without access to that the source for this plugin would be pretty useless. It wouldn't compile, and would be barely anything more than the existing AGS Run-time Plugin API. That's why I chose to just make the whole thing closed-source. That and it prevents any issues arising from inappropriate use of my source code in relation to the Steamworks API.

Perhaps I'm being a bit overdramatic or overprotective, but the reason I'm not releasing any part of the source for this is to protect myself. I hope everyone can understand that. If any serious programmers would be willing to (physically) sign a(n) NDA with Valve, then I (acting as MonkeyMoto Productions, Inc.) would be willing to provide access (with you as an "employee" of MonkeyMoto), provided that a Valve contact could confirm that such a business relationship would be allowed.

@tzachs, I'm sure that if you really set your heart to it you could make something that Valve would accept without second thought. :)

And glad to hear the general cry of approval even though (at the moment, at least) the true viable usefulness of this is abysmally low. :D

Calin Leafshade

I dont see why we cant see how the plugin has been implemented.

Sure it wont build but for educational purposes, I cant see how it would hurt.

Just dont release the steam headers and any closed code.


Kweepa

Geez, Calin, are you trying to get monkey into trouble?
His first post says that Valve want to keep the API proprietary.
Even if monkey technically doesn't break the NDA, Valve might decide he's not acting in good faith and you can imagine the consequences. Gemini Rue taken off Steam for example.

Congrats on getting this done by the way monkey!
Still waiting for Purity of the Surf II

Calin Leafshade

I find that *incredibly* unlikely.

And releasing *your own* code for educational purposes cannot break any license.

I specifically said that he shouldnt release Valve's code but releasing his own is neither here nor there.

monkey0506

If you're that interested Calin, just check out whatever documentation Valve offers publicly regarding the Steamworks API. The plugin uses a lot of copypasta in that regard. :P

Actually it's a bit more complicated than that, but you'd get the basic idea. I used the AGSE_FINALSCREENDRAW event in place of a proper main game loop. It polls often enough for my purposes.

suicidal pencil

If I use this plugin, does it mean I have to close the source to games I (attempt to) release on Steam?

and I wonder if this means that we might see a few multiplayer games made in AGS...

monkey0506

1) The plugin is closed-source, that does not mean games made with it have to be. The AGSteam API is publicly available. ;)

2) This plugin does not provide any immediate support for multiplayer functionality, although if you ping and set int/float stats...I suppose it might be perfectly possible to use it that way.

3) I need to update the first post with the Blackwell games - getting on that now!

suicidal pencil

Not immediately supported but doable...that's exactly what I wanted :D What fun would it be if everything I wanted was already there?

I'll see what I can do with this over the course of tonight, I'll report back when I have results.

monkey0506

For the record, unless you already have had at least one game accepted by Steam, then you wouldn't be able to use the plugin, even for testing purposes, as it specifically uses the Steam API for all of it's connections. This plugin really is quite simple internally, but the reason it was written was to provide a generic intermediary between the C++ Steam API and AGScript in your games. Without such a mechanism it would otherwise be requisite to write a custom plugin or engine build for each game you wanted to integrate with Steam. With this plugin however, Dave Gilbert was able to integrate the Blackwell games without having to write any C++.

Calin Leafshade


C.T.C.B

This would be awesome in my game...  :smiley:

C.T.C.B

Quote from: monkey_05_06 on Thu 27/10/2011 05:05:47
So, for those who haven't heard yet, Gemini Rue is now available on Steam! They're even running a special discounted price in celebration of the fact.

Why am I bringing this up? Because Gemini Rue has been brought to Steam courtesy of the AGSteam plugin for AGS.

What is this AGSteam plugin? I'm glad you asked! := It's certainly not Nimbus if that's what you're thinking!

The AGSteam plugin serves as an intermediary step between the Steam API and the AGS Run-time. In short, what that means for you is that if you're working on integrating a game into Steam, you can now place Steam-related function calls directly in your AGS code!

Currently the plugin supports Steam achievements, and float and int stats. If you need average rate stats (or any other Steam features), let me know and I can explore options to get them working properly for you.

I would have loved to make this thing open-sourced too, but Valve is kind of a stickler for keeping their API proprietary. So, there's a pretty strict license on this thing regarding staying the hell away from the source code, but beyond that you're really free to pretty much do as you see fit with this plugin. 8)

Note: This plugin will not make Valve accept your game for Steam integration. They still hold the sole hand in that decision. This plugin will not do you any good if your game has not already been accepted for the integration process.

I'm not entirely sure how useful this will be for the community at large, but if you do get your game accepted for Steam integration and want to use this plugin, please let me know! I'll even keep a list of games that use it as an additional publicity measure! :D

-monkey


Download


Games that use AGSteam! (Get them on Steam now!)

Gemini Rue (Buy)
The Blackwell Legacy (Buy)
Blackwell Unbound (Buy)
The Blackwell Convergence (Buy)
The Blackwell Deception (Buy)
Resonance (Buy)

Also:

The Blackwell Bundle (Legacy, Unbound, Convergence, and Deception)




NOTE: This also relies on the redistributable "steam_api.dll" (which is publicly available as part of the Steam client installation). I'm not going to get into the logistics of bundling that, even though it's publicly available. Just be aware you will need to place both DLLs in your editor folder, and manually copy the steam_api.dll to your Compiled folder (the AGSteam.dll will be automatically copied on compile).

NOTE: (20 August 2012) The version which is currently uploaded is rather badly bugged, which didn't manifest until some changes in the Steam API. I have put a lot of the leg-work into developing a better version of this plugin, but due to the fact that it wasn't needed, I never fully cleaned it up to the point that I'm going to be uploading it in the near future (basically read as: I didn't type up documentation for the revisions...). I believe that I made the fixed version backwards-compatible with the current version, so you should be able to grab it from any of the Steam games listed above (or ask Dave (or anyone who has the games, geeze!) to send you a copy of the DLL).

The link provided in that post isn't working, is there a mirror somewhere? I'd love to use this in my Adventure Game that I want to put on steam after completion.

SMF spam blocked by CleanTalk