ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > Find And Run Robot

Protocol links?

<< < (3/5) > >>

wraith808:
Is there even a way to access the files that steam has installed in an API?

UPDATE: Just checked the steam API, and there's a way to see the games that a user owns, but not the games that they have installed.

https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0001.29

aloishammer:
Is there even a way to access the files that steam has installed in an API?

Just checked the steam API, and there's a way to see the games that a user owns, but not the games that they have installed.

https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_.28v0001.29
-wraith808 (January 20, 2017, 03:42 PM)
--- End quote ---
A formal or even unofficial API? I doubt it. Valve tend to be a tad jealous of their software and their service both; they seem to do a good job of providing necessary APIs for game developers selling through the storefront and managing ancillary functions (cloud saves, achievements, etc.) for the games themselves, but nothing beyond what's strictly necessary.

It took more than long enough for Valve to care about even allowing "customers" (end users) to replace Steam client-side game icons or grid-view game banners with custom resources, and what's there is surprisingly primitive. Based on that sort of evidence, I wouldn't bet that there's a single client API call available to anything... outside of normal Windows desktop integration, at least. There is this, however.

I'm reasonably certain that the official Steamworks API is solely dedicated to interactions with the Steam service itself, without reading any of it.

At any rate, when they're not working to enforce DRM requirements or prevent multiplayer cheating, Valve seem to greatly prefer open standards and simplicity for the Steam client and for items like the Source Engine. By way of example: there's no official soundtrack for Left 4 Dead 2 (I know, because I wanted to get it), but it's entirely possible to grab the bare WAV (and I think Ogg Vorbis?) files out of the install directory.

As with the .ACF manifests @Nod5 mentioned earlier, there's considerable use of semi-structured plaintext, JSON, XML, and other trivial formats that would likely be very simple to use directly without significant conversion, let alone reverse-engineering. There may be times that the Steam client has a different internal state than is reflected in external files.

For the games themselves? Valve seem to be aiming for the greatest possible compatibility with the lowest possible effort. So far as I know, Steam doesn't even provide something like packaging system primitives, even for its own internal use. Games are still installed as-is, with whatever binary blob(s) the developers decide to publish... which is how you end up with Steam games that use or need additional third-party DRM or multiplayer systems or whatever.

If you'd like to start poking around the Steam client internals or just the games being installed, I think that there's very little preventing you from doing it, other than whatever EULAs you may have agreed to. 😉


End note: I haven't looked, but it's quite possible that Steam does integrate at least in part with the Windows Games Explorer. HowToGeek does note that Microsoft never added Steam or any other major "games provider" (Microsoft's term) to this facility, but my interpretation is that Valve may have at some point added integration, or perhaps even wrote and published—but never activated—the necessary code in the client. It may even still be there. I have no idea what the Windows APIs for this looked like, but they were still there as of at least Windows 8.x, and they would have had to include some basic information about installed games: a name; an icon; some way to execute the game (or, more likely, STEAM.EXE), and I think a couple of other details. If this still exists, you might be able to tap into it. You may have to go through the Wayback Machine to get your hands on API documentation, though.

From time to time, you'll see "Steam" games appear in this folder regardless, on account of they were written against Games for Windows Dead. The service is defunct; however, it does have a very slight upside in that every(?) game binary still hitched to the decaying corpse should appear in the special "Games" folder aboard every Windows release that still has that functionality.

...Fortunately, a lot of angry people have worked very hard at removing GFWL runtime requirements from older, unsupported titles. PCGamingWiki has a lot of details on this.

Alternately, you could see what's available through Windows Store APIs. I suspect Valve probably took that a lot more seriously than they did Microsoft's older gaming efforts. I'm still taking a wait-and-see attitude on upgrading from 7SP1, though, so I have no real idea how widespread support is. Valve may or may not have decided to make Steam or Steam-installed games at least appear in Windows Store facilities.

Nod5:
Has anyone come up with a clever way to maintain cloned links?
-aloishammer (January 15, 2017, 08:36 PM)
--- End quote ---
I had this in mind when I wrote the small script above. Easy to add a few lines to also remove .urls to games that have been deinstalled. Put a link to the script in Windows autostart and the shortcuts will update on each boot. To update more often add some lines with a timer and keep it running in the background. Or use Task Scheduler to run it at some interval.


--- Code: Autohotkey ---#singleinstance, force    ;SteamLinker    ;Creates one .url link file for each currently installed steam game    ;Setup: add full path to steam root folder and an output folder to save the .url files    ;For example C:\steam\  and C:\folder    ;Warning: all old files in outdir with "[ste].url" in name will be removed when script runs    steamdir =     outdir =     If !FileExist(steamdir) or !FileExist(outdir)     exitapp    Loop, files, %outdir%\*[ste].url     FileDelete, % A_LoopFileFullPath    Loop, files, %steamdir%\steamapps\*.acf    {    FileReadLine, idline, %A_LoopFileFullPath% , 3    FileReadLine, nameline, %A_LoopFileFullPath% , 5    StringSplit, id, idline, "    StringSplit, name, nameline, "    IniWrite, steam://rungameid/%id4%, %outdir%\%name4% [ste].url, InternetShortcut, URL    }

aloishammer:
Has anyone come up with a clever way to maintain cloned links?
-aloishammer (January 15, 2017, 08:36 PM)
--- End quote ---
I had this in mind when I wrote the small script above. Easy to add a few lines to also remove .urls to games that have been deinstalled. Put a link to the script in Windows autostart and the shortcuts will update on each boot. To update more often add some lines with a timer and keep it running in the background. Or use Task Scheduler to run it at some interval.


--- Code: Autohotkey ---#singleinstance, force    ;SteamLinker    ;Creates one .url link file for each currently installed steam game    ;Setup: add full path to steam root folder and an output folder to save the .url files    ;For example C:\steam\  and C:\folder    ;Warning: all old files in outdir with "[ste].url" in name will be removed when script runs    steamdir =     outdir =     If !FileExist(steamdir) or !FileExist(outdir)     exitapp    Loop, files, %outdir%\*[ste].url     FileDelete, % A_LoopFileFullPath    Loop, files, %steamdir%\steamapps\*.acf    {    FileReadLine, idline, %A_LoopFileFullPath% , 3    FileReadLine, nameline, %A_LoopFileFullPath% , 5    StringSplit, id, idline, "    StringSplit, name, nameline, "    IniWrite, steam://rungameid/%id4%, %outdir%\%name4% [ste].url, InternetShortcut, URL    }-Nod5 (January 20, 2017, 05:30 PM)
--- End quote ---
I appreciate it, but I don't have and don't expect to acquire any skill in AHK scripting, so I can't maintain it on my own.

I find the sophistication and reach of Windows' scripting and automation to be much below the level of a UNIX, but I have hopes that Microsoft will consider backporting both its newer terminal code and the new bash-centric CLI facilities... or at least the new terminal code. (Which probably still isn't Unicode-safe, and likely lacks a lot of other crucial things.) (The new CLI facilities alone have a great long way to go.) I personally don't need them in Windows 7... much longer... but I spend any amount of time on machines I don't own and don't even have full administrative access to. 😉

I'm willing to learn PowerShell if it ever gets really mature, but, at the moment, it's just impressing me with the fact that it can be insanely buggy when you need core features to work.

I can't depend on any other facility to exist even on relatively recent Windows installations, and I certainly can't depend that I'll always be able to install it. The rest of my skills are tied up in scripting and automating on—begging your pardon—OSes I don't install solely to play games and occasionally update device firmware on.

...Also, even if Microsoft bought AHK and shipped it free in every box of Windows 10 Cereal, Windows still displays some seriously bizarre behavior if either there's no active desktop session at all, or if some obscure thing is preventing one's batch file, random Windows Script Host dialect, PowerShell script, or whatever from interacting with one. $Path and other environment variables seem to get set entirely at random (if at all). And sometimes a well-written script will fail for some other reason entirely, which is happening right now—sometimes—with a trivial script that I really need to work every time I log on. (Resets my sound card. PowerShell; about three lines and an external library.)

Sorry, I know that that's probably over-explained. In short, unless you're offering to create and maintain a reasonably stand-alone utility that I don't have to think about... ? 😁

wraith808:
A formal or even unofficial API? I doubt it. Valve tend to be a tad jealous of their software and their service both; they seem to do a good job of providing necessary APIs for game developers selling through the storefront and managing ancillary functions (cloud saves, achievements, etc.) for the games themselves, but nothing beyond what's strictly necessary.
-aloishammer (January 20, 2017, 04:56 PM)
--- End quote ---

That is a link to the API.  It also is not restricted to those that use steamworks, indeed, I already have an API key for it.  It gives a lot of information that would be readily obtainable from their queries- just not the users local information, i.e. the groups or what's installed on their computer.  So your assessment would seem a bit unfair.

I'm willing to learn PowerShell if it ever gets really mature, but, at the moment, it's just impressing me with the fact that it can be insanely buggy when you need core features to work.
-aloishammer (January 20, 2017, 06:08 PM)
--- End quote ---

Again, seemingly quite unfair.  I use it, and it, from my perspective of a daily user, is quite stable if you know what you're doing, and use the constructs as they're intended.  Many people want it to be a replacement for bash and such, and that, it's admittedly not.  So when you use it under those assumptions, yes, it might not operate in the way that you'd want it to.  Sort of like using a screwdriver to drive a nail, or a hammer for a screw.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version