Jump to content
LaunchBox Community Forums

GameLaunchProxy Version 0.0.3.0 (Steam launch proxy, temporary font loading, and more)


Recommended Posts

@Nielk1 The one in the LB folder is but the one in the RA folder is still 0.0.1.3 and I completely missed that. I am a complete tard on that. :S I had only put it in the RA folder before 0.0.2.0 and never bothered to update it because I wasn't using it. Entirely my fault. Either way, 0.0.2.0 seems to be doing it correctly when using the per system arguments so that is a BIG plus.

 

EDIT: See, this is why I need to be more organized.... :P

Edited by cammelspit
Link to comment
Share on other sites

@cammelspit OK, that makes perfect sense.  I think I fixed the quote thing with 0.0.2.0, so after that we were miss-matched between bug reports and code.

I keep my LaunchProxy in D:/Program Files (loose)/GameLaunchProxy/GameLaunchProxy.exe

(I keep all my un-installed theoretically portable items in such a location, but that's me.)

Link to comment
Share on other sites

At least today was the first day I actually tried using that version of proxy since it was the only version that we had at that time. I will likely have to go and make a clean install of LB, RA and proxy in its own location so I don't have any similar mishaps happen in the future. Heh, as smart as I think I am, I can be really dumb sometimes. :D

Link to comment
Share on other sites

Yes, interested very much so. If you do manage a large reduction in that "fiddly ID matching" would that give a boost to the speed at which the app goes through all the motions? I ask mostly out of curiosity but also because it seems to be super fast on the launch sometimes and at other times it can take more than twenty seconds to actually launch the emulator and the rom. Me, I don't care because it works and it does precisely what I want it to and I love you for that but it has been a curiosity of mine.

From a user interface standpoint, are there any plans to drastically change things or how shortcuts are made in the near future? A question I ask because I have several friends that would like to start using this in a similar way to what I have setup and have been requesting instructions on its use. I would like to maybe put together a simple, quick, step by step setup guide on the steam controller community guides section. I have been apprehensive about actually doing so because of your earlier comments regarding it changing so much. It just seems to me that if I don't write something then the likelihood they are going to be able to do it themselves is rather low. I mean, I think I am smart and I messed it up a bunch of times. :D I, of course, would update this guide as necessary but if there are some big changes forthcoming I may as well wait until that happens first.

Again, keep it up! You are amazing!

Link to comment
Share on other sites

The entire reason for the ID on the -steamproxysetup {ID} command is so that you can have multiple proxies in Steam and it will select the one you want.  This was most useful before the renaming logic was in and if in the future the rename logic breaks.  For example, I have a shortcut in Steam called "RetroArch" which is renamed for the game running.  If the rename failed it would at least still say "RetroArch".

If I remove the ID entirely, setup becomes a lot easier, but you have no fallback name for if the rename function fails.  It would likely start saying "Nielk1 is playing Steam Proxy" if the rename failed.

What it does right now:

  1. Request to run via Proxy ABC123: RetroArch with "Battlezone - Rise of the Black Dogs (USA).n64" comes in with a request to name as "%cleanromname% (Nintendo 64)".
  2. Proxy scans Steam for a proxy with id ABC123.  Attempts to rename it as "Battlezone - Rise of the Black Dogs (USA) (Nintendo 64)", saving the old name.
  3. Proxy launches shortcut in steam and waits for it, attempts to restore old name when it closes.

I am thinking the following new logic:

  1. Request to run RetroArch with "Battlezone - Rise of the Black Dogs (USA).n64" comes in with a request to name as "%cleanromname% (Nintendo 64)".
  2. Proxy scans Steam for any shortcuts (even hidden) that are called "Battlezone - Rise of the Black Dogs (USA) (Nintendo 64)" and point to the Proxy.
  3. If not found, proxy scans Steam for any shortcuts (even hidden) that are called "Battlezone - Rise of the Black Dogs (USA) (Nintendo 64)" and point to RetroArch.
  4. If not found, proxy scans Steam for any shortcuts (even hidden) that are called "SteamProxy" (or something like that) and point to the Proxy, attempts to rename it to "Battlezone - Rise of the Black Dogs (USA) (Nintendo 64)".
  5. If not found, the proxy could attempt to insert itself into Steam's shortcut list.  This would work if renaming is working.  The thing that breaks renaming would break adding shortcuts while Steam is running (adding them while it's closed is easy and I could technically also close Steam, add a shortcut, and re-open it, but that's really slow)
  6. Provided a Steam shortcut is found, it is run.  Once it stops running, if it was renamed the name is restored.

How does that sound? I could also make the fallback name of the shortcut in Steam, in the above example "SteamProxy", an optional parameter rather than using the old hard ID system.

I'm thinking about making a 2nd program that lets you select one of multiple launch configurations, so you would select Launch in LaunchBox/BigBox and then have a few seconds to select an option like "RetroArch via Steam", "RetroArch", etc, or "Cancel" before it automatically goes on with the default option.  I am also looking at supporting sub-launching Origin games in Steam which requires a few fun little operations.

Edited by Nielk1
Link to comment
Share on other sites

@Nielk1 For one, thank you for taking my feedback to heart. I am truly honored to be included, even in a minimal way, in the overall process here.

So, correct me if I am wrong here but...

you are thinking to not use the ID# at all for the steam proxy shortcuts. Instead, you are considering to use the name of the shortcut on its own instead. After it renames the shortcut it would search for a shortcut exactly as it is supposed to be and it not found, it will search for a shortcut to the emulator itself, failing that too it would search for a shortcut to proxy itself. I have two concerns, you can dissuade them if I am not understanding correctly. Firstly, do you think this would be a slower operation than it is currently? Secondly, we do still probably want to have a fallback mode, having created a shortcut to the emulator itself without the rom names, if all of the renaming functions fail. If it fails entirely 100%, then it could do the long way of shutting down steam, making a shortcut to the emulator through Proxy and open steam back up. Then, on subsequent launches, it would be able to say "cammelspit is playing Dolphin/RetroArch/Whatever" and simply ignore the ROM name option until it is fixed. In the case of this kind of catastrophic failure, it might be a good idea to have a popup happen that warns the user that the fallback method is being used and will take a few minutes to set up a new shortcut for you.

The process of making your own steam shortcut is, frankly, cumbersome. Just because I can make one in a few seconds does not mean a new user could and is the most likely point of failure for the average user. Remember, these are people who are not motivated like I am or know how the program works like you do. This has to be as easy as it can be so that the typical user can handle it. I am talking about the people who would say 'I just want it to work, the first time, exactly as I expect it to'. Since you have stated you could add the shortcuts in the same way ICE does, it would be more than beneficial to have this feature. In the case of creating a fallback as stated above and for initial setup.

Origin launching ALONE would be worth the price of admission for a large section of steam controller users. Origin and it's own overlay, do not play well with the steam overlay, which is more or less required for the steam controller to work properly. Right now, if a person wants to launch an Origin game, they either have to hack the Origin requirement out of the game or greatly change all of their launch settings in Origin itself. The problem there is when a user decides to use Origin itself while playing with KB/M or another controller, they have to change all those settings back and forth, which is a pain in the butt. I don't use origin myself as a rule since I have boycotted EA but this has been the Achilles heel for steam controller users as well as Battle.net.

As far as a second program and the pre-game launch options go, I do like the idea. I would not want it to come up for myself, personally. A 'never show this again' tick box would be a good idea and then maybe you can hold a button on the KB while launching to have it come back anyway. This is just me thinking out loud here so if I am being silly, let me know.

Link to comment
Share on other sites

@cammelspit

Your evaluation of my explanation is mostly correct.  Indeed, manually adding the shortcut via closing and re-opening Steam is probably far too slow to do during launch time.  I'm thinking a bit more about it and I am thinking about this priory order now:

  1. A Steam shortcut for the Proxy with the Game Name already applied
  2. A Steam shortcut for the Emulator with the Game Name already applied
  3. A Steam shortcut for the Default Proxy, Renamed to look like the game
  4. A Steam shortcut for the Proxy with the backup name (name of the Emulator or system most likely) with a warning note
  5. A Steam shortcut for the Default Proxy without Renaming with a warning note
  6. Error

My thought is it would try these in order until one succeeded.  An ICE like system to add a ton of hidden shortcuts that fit condition 1 based on game lists like LaunchBox is easy.  Even if you never used the ICE like system #3 still works well unless renaming breaks.  I think that's the best setup.

Times:

  • Checking if a shortcut exists: approx 0.01 seconds
  • Starting big picture: 1 second delay
  • Time before proxy gives up trying to start game: 10 seconds
  • Adding a shortcut or renaming a shortcut the easy way which can break: approx 0.1 seconds.
  • Adding a shortcut the hard way (steam has to be closed): approx 0.01 seconds.
  • Closing and reopening steam for the above: upwards of 1 minute O.o
Link to comment
Share on other sites

@Nielk1 Wow, that seems like it would be a LOT smoother process. Now, when you say hidden shortcuts, steam can actually have shortcuts, even to games, that are invisible to the user? If this is the case then that could really be of benefit. I say this because one of the biggest complaints myself and others have had with ICE is that even a few hundred games can, and likely will, clutter up your steam library like crazy. As it sits now, Proxy does require at least one shortcut, ideally one for each emulator in the case of renaming failures. If they could be hidden then someone's OCD might not be triggered by seeing some shortcuts they should never actually touch.

I also love the idea of using LaunchBox's name for the games instead of the ROM name as a general rule. There are some circumstances where it would be beneficial to still use the rom name, though. Are you thinking of making this the default behavior or will it be selectable with another command line switch in the same way the %cleanromname% is currently? If this is the case then %cleanromname% can be left along and then something like %gamename% could be used instead or in addition to. Personally, the only system I would use that second mode would be for Nintendo Wii. This is because normally, I meticulously have all of my roms built into no intro sets with proper file names but my Wii games are all in WBFS format and are named based on their NintendoID# and not the name of the game itself, for use on a real Wii as well. So, with %cleanromname% I will get "Wii [RM6EEB]" as the game name.

I also have yet another crazy idea/question that might be worth some research. So, you say there are a bunch of API calls that Steam normally does not have revealed to developers or users. In those calls, is there anything for changing settings for steam itself? For example, enable/disable overlay or, more useful still, there is a checkbox in the steam settings that allows the user to opt out of using the BPM overlay exclusively when the steam controller is on. The downside here is you lose in-game real-time configs, touch menus, and action set labels but I know a few guys who will use this checkbox in one way or the other depending on the game because they feel that some games get a reduced performance with the BPM overlay. They are also using toaster ovens and not PCs to game on but that is an entirely different conversation. :) I was just thinking that there is bound to be a few settings that a user would love to be able to set on a per game basis and valve has not seen fit to grace us with any way of doing this per game. Just a thought... :D

Link to comment
Share on other sites

@cammelspit There's calls for everything in Steam but they are all very fiddly and could break any time.  It's normally good to try to find ways to avoid using them.  The overlay is not toggelable for any 3rd party shortcut in Steam.  It's best to just respect whatever settings the user has set via Steam.

When you apply categories to a game in Steam you can use the Hide checkbox.  This adds it to a special tag that can only be seen if you select "Hidden" in the drop down at the top for types.  This appears to work for 3rd Party Shortcuts in Steam, though I've not tried restarting Steam after setting it.

I am thinking that the name system will actually be a substitution engine that detects the rom filename and matches it to a proper name, but the names would all be scraped from LaunchBox (or other sources).  I'd also check inside archives when generating said list to be sure anything unzipped by the front end was getting the proper treatment too.

Link to comment
Share on other sites

You are right, I was just thinking about stuff. :)

Ah, on the name thing, that seems reasonable. It also seems like it would be a lot more work on your end. This thing is going to start getting pretty advanced it seems, I like it! For the naming thing, would this building of the list be a one-time thing as in generating this names list from launchbox, or wherever else, when you run Proxy directly for the first time setup? Would it then fallback to the filename if it can't find a suitable real name for the game?

Link to comment
Share on other sites

I could make it latch onto LaunchBox's library XML at startup at the cost of speed, but I think it would be better that you run the proxy setup program and go to the "Names" tab and click a "Load Names From Launch Box" button and have it scrape the library XML and save the information for later.  That way I could add other name sources in the future as well as a manual override list.

Link to comment
Share on other sites

Agreed, from a user experience standpoint, it is much less intrusive to have a one-time setup that takes a minute or two Vs. having a speed decrease you have to deal with every single game you launch a game. Handling updates to the list will also be something that needs to be considered unless rebuilding the whole database each time is preferable. Consideration of how often an update to the local Proxy database is needed as well as if it should be left entirely up to the user when/if they choose to update it or if it should just be done anyways after a period of time. Maybe just a simple message telling the user that their database is older than 30 days, or whatever time frame is prudent, and should consider updating their database.

Link to comment
Share on other sites

@Nielk1 Just wanted to touch base and fill you in on a couple of interesting things I have run across recently while testing some new emulators I haven't tried with 0020 yet. ePSXe is a big bummer here because what happens is Proxy, upon closing out ePSXe, will not close itself. I have to force it to close from the task manager to launch another game. It also fails in renaming the shortcut back to the original name. When you were speaking earlier about renaming priorities, I was thinking you might want to add a check to make sure that the last run name for a shortcut was successfully renamed back. If not, it could do that as a clean up so the user won't have to manually go into steam and rename it back before another game will launch. A check to close a previous erroneous Proxy instance might also be helpful. Not sure if this will even be a problem in the next version because of the major changes you are planning but I thought I might fill you in in any event.

Supermodel, the SEGA Model 3 arcade emulator seems to also do similar shenanigans except is also just fails to load a game altogether and gives some OpenGL error, I can't figure out why. I checked the logs and it seems like everything is passing along properly so I have no clue. Model 3 games with Supermodel was added just for kicks as I don't really play those game more often than once in a great while but for testing reasons I chose to try it anyway. :)

I will try and use more than just Dolphin and Retroarch and see if there are any other problem children I can find too.

Just figured you might like to know what I had found, Thanks again!

Link to comment
Share on other sites

@Nielk1 No need my friend. I am still using your app literally every day and it has greatly enhanced my overall experience with LB, emulators, steam controller etc., so I am grateful for what you have already done here. I am nothing if I am not patient so never think I am wanting to try and push for speed or anything. :) I also did a little looking into DeSmuME and if you recall when I reported that the renaming doesn't work with that emulator, it seems to be a related issue. I tested some more and it seems that about half the time it doesn't rename, it will also not close. I can't believe I didn't notice this sooner. I had just switched to using the DeSmuME core in RetroArch because it performs approximately equally, with fewer features, and I am not too into DS games. I only really play less than a dozen games overall and so it was never a big deal to me. NES, N64, Genesis/SegaCD/32X and a tiny handful of PS1 games are my primary uses of emulation so I hadn't gotten into some of the most obscure emulators.

Take your time and take care! :D

Link to comment
Share on other sites

@cammelspit I wanted to show you a progress report in the form of a picture.

WIP1.pngOf course the funny thing is that none of these entries actually do anything if you run them.  They're calling a special program (separate one now) called "SteamProxy.exe" that has only one purpose: start whatever program is noted in its data file.  They can be all added and removed from Steam with 1 click.  Code for doing so while Steam is running is tested and working.  Code for adding them while Steam is closed is not fully tested yet.

You'd be surprised how annoying that "é" was, but it exposed a bug in the Steam4NET interface I am using that I had to fix.

Link to comment
Share on other sites

@cammelspit I'm going to take another break I think on this till next weekend, but here's some information and a question.

How do you name your games for this?

Name (Platform)?
Name?
Name (Emulator)?

I can mass-load shortcuts into Steam for the first 2 very easily, though you don't need to do that.  I'm using my test copy right now with only one entry called "SteamProxy".  Pre-loading them is more for if the rename system dies in the future.

I've got the system set up to use this type of CLI:


GameLaunchProxy.exe [-steam] [-steambigpicture] [-name "%gamename% (%platformname%)"] [-fallbackname "%platformname%"] [-rom "path/to/rom"] -proxy <command to proxy>

-steam causes it to use the SteamProxy, otherwise it just launches the program itself.
-steambigpicture causes it to start BigPicture (implies -steam)
-name sets the name of the game for when it matters, such as with Steam. %gamename% and %platformname% are substituted, though you could end up with a blank platform name which with my example string above would look a little strange.  It's easily possible to just hardcode the platform name into your shortcut in LaunchBox.
-fallbackname is the backup name it uses if finding a shortcut and renaming the default fail
-rom is the rom name/path used in looking up it's local name list.  If this isn't supplied it will assume the last parameter is the rom which is sufficient 99% of the time
-proxy is a required command, everything after it is the command to be proxied

I seem to have the Steam logic working and need to do some logging improvements, restore the original program functions like font loading and aggressive focus, and remove any old dead logic.

Right now the internal game list can only be scraped from LaunchBox.  I need to add a manual one.  Also the platform list, while stored separately, currently in the interface only pulls from the LaunchBox database (or more specifically the LaunchBox database cache generated when you click "Scrape LaunchBox").

Oh, and as a last bit for the progress report: the SteamProxy.exe is added to Steam with 0 arguments.  It just needs to be in the same place as the GameLaunchProxy.  Buttons in the program will add these shortcuts while Steam is running and in the event of a failure will ask you to close Steam so an alternate method can be used.

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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...