Jump to content

All my products and services are free. All my costs are met by donations I receive from my users. If you enjoy using any of my products, please donate to support me. Thank you for your support. Tom Speirs

Patreon

[PROJECT] Steam \ GameEx Integration


Stu1983

Recommended Posts

  • Using the Advanced Configuration editor, create a new config ini that just specifies GameOverlayUI under Process Wait (I disabled pretty much everything else).
  • Set Wait Before Keys in the emulator config to something like 20000 (depending on longest time it takes for the Shift+Tab Steam community thing to appear after launching the game).

This worked perfect for me and it also adds a really easy and universal way of adding any PC to GameEx, simply use Steam's "Add a Non-Steam Game to My Library" option then create a desktop shortcut to stick in with the rest of your urls... easy

Great work couslev

Stu

  • Like 1
Link to comment
Share on other sites

Full Steam integration

Having done some digging around I think it should be possible to seamlessly integrate Steam with GameEx, it would require some work by Tom though. It would be similar to how Model 2 and Daphne are configured independantly

Here's what I found

Steam install path can be detected from

HKEY_CURRENT_USER\Software\Valve\Steam\SteamPath

A list of installed game ID's can be found in

%STEAMINSTALL%\config\config.vdf

at the bottom of this file there is an apps section


"apps"
{
"7"
{
"UpdateKBtoDL" "0"
"installdir" "d:\\steam\\steamapps\\pimpdaddystu\\winui"
"HasAllLocalContent" "1"
"UpToDate" "1"
}
"40800"
{
"UpdateKBtoDL" "0"
"installdir" "d:\\steam\\steamapps\\common\\super meat boy"
"HasAllLocalContent" "1"
"UpToDate" "1"
"maintenance_time" "1346679182"
}
"70310"
{
"UpToDate" "0"
}
"70300"
{
"UpdateKBtoDL" "0"
"installdir" "d:\\steam\\steamapps\\common\\vvvvvv"
"HasAllLocalContent" "1"
"UpToDate" "1"
}
}

On this system I only have 2 games installed, Super Meat Noy and VVVVVV. Though Steam has 4 entries.

Simply ignore any that don't have an "installdir" variable would be a start but I'm still not sure what the "7" app is. I need to check my other system which has more games installed.

There is a list of AppIDs and corresponding names here though VVVVVV doesn't exist yet so not sure how complete this is

Launch the game with either "steam://run/<AppID>" or "steam.exe -applaunch <AppID>"

Then use couslev's method of watching the overlaygui to detect when it has closed.

I think it should be a bit more advanced than this though as some games will fire up a launcher that needs {enter] pressed or a mouse click so a config to set advanced options per game would be nice.

Another nice option would be to auto log in to Steam.

This can be done with the following command:

"steam.exe -login %u %p -silent"

and log off when finished playing with the following command:

"steam.exe -shutdown"

Stu

Link to comment
Share on other sites

I also think it would be great to add integrated Steam support into GameEx if possible (it would certainly be something that no other frontend offers). I'm not sure I'd recommend using couslev's method as the means to do so though. My experience with this method has been a bit hit or miss, I'd say about an 80% success rate for the games I have installed (38 games).

The trouble is that although Steam games all seem to operating under the unified shell of Steam, the games themselves are launched in a variety of ways. Here's what I've seen thus far:

  • Game has no launcher and launches overlaygui as part of the launch process (couslev's method works). Example: Burnout: Paradise
  • Game has a launcher and launches overlaygui when the game is launched via the launcher (couselev's method might work, but you also need to execute a send keys operation for the launcher which defeats the purpose since the send keys are specific to the game being launched). Example: Batman: Arkham Asylum
  • Game has no launcher but requests a login procedure specific to the game being launched (requires send keys - although it seems to be a bit hit or miss in my experience. The form is always pre-populated with my login info but every so often requires that I actually hit the login button) Example: Grand Theft Auto IV (although sometimes it launches just fine. :huh: )
  • Game doesn't launch overlaygui. (couselev's method won't work) Example: Binding of Isaac

I've had better luck with the Universal Game Loader, but even that has it's own set of issues. It's a bit of a PITA to configure, and it also has issues with certain games. UGL also tries to do an end-around on Steam by launching the actual game executable rather than the Steam appID/shortcut (which is what causes issues with certain games, depending on your configuration).

I'd make a modest suggestion that if GameEx were to integrate Steam support that it integrate it's own internal version of UGL which is a bit easier to configure, and doesn't attempt to 'fake out' Steam by directly launching the game executable.

/my2c :)

Link to comment
Share on other sites

I have Steam setup in GameEx to look for *.url, *.bat and *.exe.

For games with launchers I have an AHK script set to launch the game then click the button or send the required key combinations.

For games that don't like joypads I use the batch files to launch an Xpadder profile before lauching the game.

My only issue with GTAIV was that I had the 'Wait Before Keys' only set to 10 seconds so this didn't give the crappy Rockstar Social Club login time enough to appear and login, it did sometime and others it GameEx would kick in then GTA would appear a few seconds later.

I've attached my GTAIV AHK script you can see if it is any use to you.

I have the following Games with launchers working no problem using AHK scripts:

Rocket Knight

Street Fighter IV

GTAIV

Trine 2

I think no matter what way it's implemented there is always going to be the odd fly is ointment and Binding of Isac is certainly that. I don't have a solution for this one but I do think it is a rare case as it is running in flash

Stu

Grand Theft Auto IV.zip

  • Like 1
Link to comment
Share on other sites

I started working on a plugin last night that would log into a Steam account whenever the Steam emulator is selected then it would then log out when you select a different emulator but it failed because the GameEx would minimize and the Steam log in window would take control.

How do we kick of an external application from a plugin without GameEx losing control?

I'm using Process.Start

I've setting the processinfo to a background task with no luck and tried kicking of a separate thread to start the application

Link to comment
Share on other sites

Question, is it possible to automate the finding of screenshots or some kind of artwork for the game?

We can grab Steams banner easily using the gameid

http://cdn.steampowered.com/v/gfx/apps/40800/header.jpg

and

http://cdn.steampowered.com/v/gfx/apps/70300/header.jpg

they are widescreen though

If you do start working on this and need anything tested give me a shout

Link to comment
Share on other sites

Question, is it possible to automate the finding of screenshots or some kind of artwork for the game?

Not tested in code but heres the theory to grab a full screen image

Looking at the source for page http://store.steampo....com/app/40800/

find any lines containing .116x65.jpg (these are the thumbnails steam displayed)

this gives us the links to all the thumbnails


http://cdn.steampowered.com/v/gfx/apps/40800/ss_06d79fbc925d6d8e6709b9878885dcce8e0b689a.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_1d69a008fd9716dd2c35f8c1b5ccd467cd1a2ad3.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_1e0f1c101a41a4120b552be8c4e037ef5025102a.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_2482dad154fa38c32195a5301891ec7d9cefa7da.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_652092068cc0d5e75fe3f199ad1bbc395806c1f2.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_71f114e451550394500613d8ec8082ae3eac44e5.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_84f8832c8cfb5d93dba79c099b0067e22447cbab.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_8579adfaa58c863497e71df1b36331d37e51aeab.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_b0e5343cb98e7811ed6db19311ce7fada7889442.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_b2998adf37b0276c240315732169e06886942e78.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_caa6db7059ac1e918ea38d643ef752e2dccef970.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_d158c2843c714bf2294376e03d9c4d6c7cd96397.116x65.jpg?t=1332787507
http://cdn.steampowered.com/v/gfx/apps/40800/ss_dd29364268bcc989db0b56f3c2a95c67fc6f6761.116x65.jpg?t=1332787507

To grab the full image just use the same link minus the .116x65

e.g.

http://cdn.steampowe...pg?t=1332787507

EDIT - I've now made a very rough proof of concept app that will download all the images for a given AppID

I will tidy it up later on to something in a semi releasable format

Link to comment
Share on other sites

All - I hope you don't mind, but I split out the posts that were within Couselev's Steam Guide thread into their own topic. I feel that the work and discussion here warranted it's own focus separate from the fine work Couselev created. Carry on, Sirs. :)

Link to comment
Share on other sites

That is freakin' awesome! I had started a db a while back, but there are so many titles (and some are the full versions while others are trial or limited freebies). How diificult would it be to create a new db that would be directly related to this?

Link to comment
Share on other sites

Depends on how much data you want to show for it I guess. If it is setup to scrape the data then that would be great (would think it might be better to save it on the fly to an XML file and only update changes) and display the game art that would be enough for me.

Link to comment
Share on other sites

I think you guys are reaching the same conclusion just from different angles? Scrape Steam for game metadata and images. Store the image(s) locally, and store the metadata in a Steam database. Makes sense to me (unless scraping metadata proves to be exceedingly difficult).

  • Like 1
Link to comment
Share on other sites

I gave my image scrapper a quick tidy up there, I'm not going to do anymore as I'm sure Tom is going to come up with something much better but it was annoying me having all my PC games with no images :)

I'll release it here as it stands as it might be useful to some others in the mean time.

Hopefully self explanatory:

Put the path containing all you Steam Url files in the first box

Put the path where you want to store the images in the second box

Select if you want to grab the first, last or all the images for that game

They will be stored with the same filename as the .url (if you choose ALL then a number will be appended)

There is very little error handling so it may crash and if I do catch an error I just ignore it and move on the the next .url

Something I have noticed, some Steam pages require age verification e.g. Dead Rising 2

These games will be skipped

SteamImages.zip

  • Like 1
Link to comment
Share on other sites

OK. I have made some good progress. Try out the attached. It will automatically detect steam and your games, download artwork, videos and database data and create a database on the fly. Its got some code to wait for the overlay process and continue as soon as it finds it. It will also check if steam is waiting for you to login or giving you a cd key. After you launch a game it will create a .ini in the config folder called steamconfig.ini. This ini allows for special handling of the quirky games on a per app ID basis. The settings are. shellnowait = shell command and don't wait. shellwait = shell and wait. Sleep= sleep miliseconds. SendKeys. and overidewaitprocess = allows you to specify a different process and override the overlay process. I would not have been able to do this without the valuable info provided here. Saved a ton of effort and made it easy for me.

GameEx.zip

  • Like 3
Link to comment
Share on other sites

You have been busy :)

This is excellent progress, I've only been able to test 2 games on this system but I'll get more tested at home later.

I love that it grabs the video and info.

Super Meat Boy worked perfect but VVVVVV only worked for a min or so then GameEx kicked in even though VVVVVV was still running. A quick check revealed that VVVVVV doesn't start the overlaygui so I modified the steamconfig entry for it:


[AppID_70300]
hasbeenlaunched=true
overidewaitprocess=VVVVVV

Now it also works perfect

Some requests:

I would really like GameEx to log in to Steam for me.

I don't want to have to reach for a keyboard before starting a game.

Setting Steam to remember password doesn't work either as I run Steam on a couple of PC's, it's a bit of a pain the way steam handles this:

Scenario:

PC-A turned on and logged into Steam

Turn PC-B on and log into Steam

PC-A gets logged out

PC-A now forgets the stored password and next time you try to log in or start a game it will ask you for it again

My 2nd request is about the steamconfig.ini

In it's current form we can't easily share the ini as I will likely have completely different games installed than you.

I believe the settings that go in the ini will be unique for each game, not each PC? So if I have already worked out how to start a game e.g. VVVVVV then others shouldn't have to.

Rather than a forum post with people sharing their ini settings, separate ini's in a Steam sub folder might be a better approach, that way people could send you their new ini's which could the come bundled with new versions of GameEx saving new users any hassle at all.

Thanks for adding this support so quick Tom

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...