Steam Web API

  • Ive just been learning a bit about Steams own Web API as a possible alternative to the Greenworks thing those Game Dev Tycoon guys made. Ashley is this something you've had a chance to look at in any facet - it seems it's possible to pipe in to Steamworks features directly via their Web API. Here's a quick bit of info without violating any specifics in the NDA:

    Steam exposes an HTTP based Web API which can be used to access many Steamworks features. The API contains public methods that can be accessed from any application capable of making an HTTP request, such as game client or server. The API also contains protected methods that require authentication and are intended to be accessed from trusted back-end applications.

    As an example, Web API methods are commonly used by a secure publisher server to:

    Verify a Steam user's credentials with that server

    Check if a user owns a particular application

    Set or retrieve a user's stats, achievements or leaderboard scores

    Execute an in-game purchase

    This honestly seems like the answer to those of us with games either out or coming out on Steam in the near future.. Im curious if it's something the Construct team has had a chance to look at in any facet?

    I'll be looking into it myself as well, but would love to know any thoughts on the potential this might have.

  • Execute an in-game purchase? Where did you hear about it?

  • Its in the Steamworks developer area, once you're approved as a steam dev (greenlight, etc) you have access to the API / documentation and the Steam Web API is outlined there.

  • As far as I can tell from their documentation, the Web API only allows read-only access to a very limited set of user details: friend lists, already completed achievements, and a few other things. There does not appear to be any way to do something useful like submit an achievement, so I'm not sure there's much point in implementing it.

  • Ashley It definitely does have another secure method and batch of other commands you can use that include stuff like submitting achievements, doing DLC purchases, submitting to leaderboards, etc -- it requires creating a Publisher API key for the app first though:

    ----

    API Keys

    Some Web API methods return publicly accessible data and do not require authorization when called. Other methods may require clients to register for an API key and pass that in using the key parameter. There are also methods that return sensitive data or perform a protected action and require special access permissions. These APIs require a publisher key, which you will need to create before calling these APIs. To create one of these keys, please see Creating a Publisher Key below. If you don't require access to these special methods, you can register a regular API key from the registration page on the Steam Community.

    ----

    Check out the Web API documentation within the partner site itself: https://partner.steamgames.com/documentation/webapi

  • It looks like the Web API is designed to run from a "publisher server" (i.e. you need to code a server to handle the actual web requests), which is not an ideal fit for a client-only game engine intended for use by non-programmers.

  • Ashley I simply can not express how bummed out that makes me.

    Simply put, is there is zero possibility this will be useful / usable for Construct 2? Ill do any legwork required including but not limited to setting up said necessary server, and am sure I could team up with other Construct 2 devs with stuff on steam to cover costs.

  • Well hopefully the greenworks thing will work out after the node version stabilises, and that will have the bonus of working without an internet connection. You could still experiment with the Web API using the Javascript SDK, but I would rather go with greenworks for official support.

  • Fair enough - thank you so much Ashley. If money helps bring a solution faster, please let me know. The potential for our games success increases exponentially with those additional features (steam achievements, leaderboards, stats, even the card drops and backgrounds / emoticons) I see it as a very smart investment and im sure im not the only one.

    respect.

  • Ashley, I think it's actually possible to set achievements using the Steam Web API -- i just heard back from someone at Valve who posted this:

    [quote:3lqf3kps]Caveat: I don't know anything about Node-Webkit, Construct 2 or Greenworks.

    The Steam API is a REST API, so if you know how to call any other REST API, you should be able to interact with the Steam Web API in the same way. Just need to pass the Web API key for your app.

    If you haven't already viewed the list of available functions, use http://api.steampowered.com/ISteamWebAP ... =json&key={replacewithyourkeyhere} and that'll give you back everything you can call.

    E.g. SetUserStatsForGame should let you set the achievement (by steamed, appid, name of achievement, etc.). GetPlayerAchievements will give you the achievements for a player, etc.

    I checked the url he provided and entered the Publisher API key I created in the 'groups' section of the Steamworks partner site and lo and behold theres a mega list including a butt tonne of Steam functions available....

    My heart is beating wildly... Can this be used to build a Construct 2 plugin to post stuff to Steam? I can honestly say if someone built the initial plugin to post say a high score, i could likely figure out the rest and get the other steam functions done up myself, ASAP style.

  • I was going to PM you the string with the URL with my API key attached to the end of it but I cant send you a PM - let me know if you want me to email it if it's at all helpful..

  • Their site says this:

    [quote:2kg233ac]Web API keys provide access to sensitive user data and protected methods. These keys are intended to be used for Web API requests that originate from secure publisher servers. The keys must be stored securely, and must not be distributed with a game client.

    Emphasis theirs. This would appear to indicate that they require a publisher server, even if the web API could work otherwise.

  • how would that connection work then exactly? Construct 2 sends the api call to the server with an ID number for, say 'app developer + app'... secure server then makes the api call by referencing the Publisher API key securely based on the app developer and app id passed to it.

    So in effect if i built a secured php application that actually submitted the api calls and released the source code for it.. would there be any motivation from Scirra to connect up to that? I suppose any plugin developer could help in that instance anyway because it would simply be an interface to generate the variables that then get sent to the secured php application, correct? by that point i may be able to write something myself, anyway.

    Am i wrong that it doesnt need to be a 'secure publisher server' more than it just needs to be a 'place' (hosting package) secured by https that runs the api calls?

    Let me know if this sounds at all realistic.. Im willing to put in the work to make this happen.

  • Totally forgot that the api would have to report back to construct 2 but could construct 2 just use the normal / unsecure api to pull out achievements etc. so nothing ever has to report back to construct 2 at least for simple achievement stuff (for DLC yea i guess there would have to be a way).

    sucks, just wish this was more possible. just being so close but the fingertips just dont touch...

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Hopefully if you just sit tight then greenworks will work out eventually.

Jump to:
Active Users
There are 2 visitors browsing this topic (0 users and 2 guests)