Jump to content
LaunchBox Community Forums

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


Recommended Posts

@Nielk1Ok, so as far as how I do the renaming scheme currently, I set it up like this "N64 [%cleanromname%]". The reason I use the [ ] instead of () is because, as it currently sits, () usually encompasses the region, revision or other data like (Japan), (Rev A) and so on. Having two sets of () looked a little silly when there were others inside it. With this new naming scheme, I would GREATLY prefer to use () and have it remove the (USA) or (Ver 1.1) entirely, which LB already does. My preferred method of naming would likely be "platformname (gamename)" or maybe "gamename (platformname)", really, whatever ends op looking the cleanest to me personally in the end.

It seems to me that you are intending to use the [ ] to block off each individual command going out so this would make using [ ] in any way problematic. I both understand and agree with using [ ] for proxy commands. In fact, this blocking off of the commands looks really nice and makes it much easier to understand, explain, use and most importantly, troubleshoot if someone has a flare up of fat finger syndrome and makes some typos. :) This will make constructing the syntax in the front end much easier to read from an end user standpoint so I say go for it. For the Platform list, if I would use, say, the %platformname% it would just reflect what LaunchBox is using? This seems reasonable, You can always change what LB says or you can use it manually from the command line like it works currently. Plus, when you do get the manual lists up and running, the platform names can be modified directly through the proxy, which is perfectly fine.

Mass loading shortcuts like that would make the whole thing infinitely more useful than ICE. Even if a user never really used the typical proxy functions and only wanted an ICE alternative with more control, this would fit the bill. Personally, I wouldn't care for the steam library clutter but I could see that being yet another common use case for this app. Obviously, this can be expanded in the future but a very nice touch I think.

All in all, this is great progress and I am looking forward to this with the anticipation of a child on Christmas day. Thanks for the update! Please, take your time, I would not want you getting burned out or anything. :D

As always, keep up the good work, you are a godsend!

Edited by cammelspit
Link to comment
Share on other sites

@Nielk1 Ah, I had no idea. See, this is the kind of thing that bothers me so much about this whole process, I can't help really in any direct way. I didn't even know about the [ ] thing. Though, if I did know what the heck I was doing I prolly would have made this myself a year ago when the SC first hit. :P


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

would be written by the user/frontend as


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

If I am now understanding correctly?

Now I feel a little silly...

Link to comment
Share on other sites

@cammelspit

Yes.  In my test setup in LaunchBox I have the N64 platform implemented as such:


-steam -name "%gamename% (Nintendo 64)" -fallbackname "Nintendo 64" -proxy "D:\Program Files (loose)\RetroArch\retroarch.exe" -L "cores\mupen64plus_libretro.dll"

With GameLaunchProxy.exe as the emulator and LaunchBox automatically putting the rom path/file at the end.

Link to comment
Share on other sites

Hey Guys, been following this topic with interest since the original thread. Have the same problem as cammelspit with the steam controller staying focused on launchbox and not the recently launched emulator. 

Unfortunately after reading and rereading about 100 times the directions to make this work I am nowhere near getting launchbox to use the proxy to launch the emulator. 

Would it be possible to have some step by step instructions, screenshots or video on how to do this? I would gladly help test as well but can't seem to get through step one at this point, which is launching an emulator through the proxy through bigbox running through steam. 

 

Semirelated,  Cammelspit I have seen your name all over on posts related to the steamcontroller and have seen your profiles. Any way for me to see all your profiles to download and then with this program do I need a separate controller profile for each game or is it possible to have it launch a rom through visualboy advance and have all roms use the same profile through this? 

 

Thanks for the help and working on making this happen. I also have not been able to use a frontend with the steam controller and strongly dislike ICE. 

 

 

Link to comment
Share on other sites

@percybuttkins Hi! To answer your question no, there is no way to filter just for my own configs, sorry. I also have all but stopped uploading them because of how completely broken the config management system is for steam controller configs. Though Valve has explicitly stated that this is precisely the issue they are tackling next, they said this HERE. I am actually about 20% done with a guide on the steam controller community guides section but I stopped before writing anything specific to 0.0.2.0 because @Nielk1 is working on some major improvements and updates that will make the majority that work obsolete a week after I write it. I would say you have two choices...

  1. You can wait until 0.0.3.0 is finished and I will write up a fancy community guide with pictures in excruciating detail.
  2. You CAN use it now, I do. but the setup is a bit cumbersome right now. Trust me I know. :D

I always do my best to help others with issues or questions regarding the steam controller and if you are 100% motivated to get something working right now and are not squeamish then you can feel free to friend me on steam and if I have the time, I will do what I can to help you through the process of setting it up and getting it going.

To answer your other questions regarding configs. The steam controller locks a config into the name of the shortcut being used. For example, One config will be used for a shortcut named "Dolphin" and another will be used for a shortcut named "RetroArch" etc.. My original intent for asking for something like this was exactly what you want, I wanted it to say Dolphin when I launched a game in Dolphin, not LaunchBox. this makes a config MUCH less complicated. If you use Proxies renaming functions to rename it using the ROM name if WILL have a separate config for each and every game because the shortcut will then have a different name. IMHO this is not a problem and is, in fact, preferred. This is because I just make a basic GameCube template I load for GameCube games each time I play something I don't have a config for. This also works for all other systems too. For Wii and some GameCube games, you would require having a per-game config because of the massive difference between Mario Galaxy and Kirby's Epic Yarn, or example. I was using 40 action set deep touch menus for managing this before and this is actually a lot easier IMO.

 

I hope this was helpful to you in some way. Let me know if you need a hand and I will try to help if I can.

Take care

Link to comment
Share on other sites

@percybuttkins  The currently released versions of the proxy program is pretty tough to use.  I've taken all of the issues and tried to rework it for the next version to avoid all of them.  It might still need a guide, but it's about what buttons to press now instead of complex manual tasks.

I am still a bit confused by @cammelspit's issue where the proxy gets stuck.  The system latches onto a process and waits for the process to stop, but for some reason it seems to be getting stuck for him.  I might need to fix that by adding a sentinel rather than allowing .net to do the sentinel itself.

On my TODO list before 0.0.3.0 is ready (and I might change the number to 0.1.0.0 as it won't be able to use 0.0.2.#'s or 0.0.1.#'s config files):

  • Restore original functionality such as font loading.  This is what the proxy used to do before Steam was a consideration.
  • Add manual/custom game name and platform name list.  Right now only the LaunchBox scrape is in with an option to rename platforms.  I might skip this for this release as we're all using LaunchBox.
  • Improve the ICE like functionality that adds dummy shortcuts to Steam.  I might skip this for this release as it's the fallback system for if Live Shortcut Renaming breaks.  Live shortcut renaming is working at this time and as I use the beta Steam client I'd be one of the first to know if it's going to break.

If you have any suggestions, now's the best time to make them.

Link to comment
Share on other sites

@Nielk1 I think @percybuttkins is probably gonna have to wait. By what we discussed this morning, pretty much all of his problems would be rendered 100% moot by the new version. I tried to help but it is rather hard to do when I can't just sit next to him and say, "Go here, do this, now type that". :)

@Nielk1 Is there any kind of more advanced troubleshooting you would like me to do for the sticking names? It does not happen every time except for DeSmuME and happens only about 20% of the time with ePSXe. I am your guinea pig oh wise one... Your wish is my command! :D

I also LOVE the updates my friend, it keeps me from cracking out with anticipation, like that Dave Chapelle character.

Link to comment
Share on other sites

@cammelspit Does DeSmuME also hang open, or just the proxy?  I'm adding logic so that the proxy will try to correct when run if it was terminated early.

The new GameLaunchProxy will wait on SteamProxy.exe if it finds it within 10 seconds of telling Steam to start the game, otherwise it will quit out.  The current implementation has it looking for the proxied program instead, so it would try to find DeSmuME.exe, or whatever it's called, and give up if it didn't see it for 10 seconds.

What it sounds like is happening for you, is that GameLaunchProxy.exe is finding DeSmuME.exe and calling WaitForExit, but for some reason it is never continuing.  I am not sure of how WaitForExit works; it might work via subscribing to an event similar to a concurrent construct called a Monitor.  Even with the new code waiting for SteamProxy.exe, the issue could still occur.  I will try replacing that logic with a loop that checks if the process is still valid every few seconds instead of expecting the process to inform it that it has closed.

I am adding a dummy shortcut adder that handles the "[Platform] Game" naming scenario.  It seems quite sensible.  In the future I will add something far more flexible but for now just hard coding the formats for the dummy shortcut generator is fine.  The dummy shortcut generator is a fallback that shouldn't be used unless the rename engine dies anyway, so having it develop a little slower is fine.  I'm thinking it might be wise to also make the system able to discover ICE entries on it's own and use them instead of the proxy app if they are appropriate.  That is a future plan though.

Link to comment
Share on other sites

@Nielk1 DeSmuME doesn't hang, crash or show any signs of anything wrong while playing. It seems that I can make anything have this behavior if I close out via the BPM close shortcut option, which force quits the emulator. My assumption is the app is not properly announcing it has stopped at all and so proxy just sits there. Having the entry not rename is meaningless because I have hidden my proxy shortcuts in steam and so I will never even see them. The only issue is that, since the name is different, the ID# for that shortcut is also different. The new version can actually search for the shortcuts and not rely exclusively on the ID#, correct? I think you may have said it before but I can't recall at this moment. If this is the case, even if  the rename back to it's original name fails, the game will still boot and the user would be none the wiser, which is fine for now.

Link to comment
Share on other sites

@cammelspit OK that makes sense.  I now avoid doing any logic at all in the process launched by Steam because of that forced close behavior.  The name back is now done in the outer proxy.  I've also swapped out the logic for an active loop as described that checks if the process is running every second.  When I release you will have to let me know if that causes any issues.

The new system reads shortcuts right out of steam's shortcut config file and has perfected shortcut ID generation.  I discovered I needed to specifically use a UTF-8 byte array where my logic was trying to use an ANSI char array,  Game names and paths with symbols and non-standard characters should work now.  I've set it up so that the steam data file is not removed until after the shortcut name is restored, so now when the proxy runs, if it sees an old steam data file is hanging around it can find the shortcut with the old name and fix it.

Edited by Nielk1
Link to comment
Share on other sites

@Nielk1 All of that sounds all perfect! I also agree with avoiding too much logic when launching. As it stands I can launch the same game ten times in a row and the time from double clicking the game to the title screen can range from instant to 30 seconds or more. IF ten seconds is the hard coded limit on this then keeping that process streamlined is absolutely a priority. An after the fact clean up seems just completely reasonable all around. Also, never fear, this guy is gonna be testing like a mad fiend when the next release happens. You will know even the slightest of problems, I assure you. :)

 

Link to comment
Share on other sites

Version 0.0.3.0 uploaded as source code and binary release to GitHub.

Note:
Command line parameters after -proxy will be executed as written.
For proxy commands such as -name and -fallbackname values may be enclosed in quotes.  The value must be enclosed in quotes if it contains a space (as spaces normally separate the parameters).  This is normal command line behavior that all programs should use, but some emulators are weird.  This is why the proxy preserves the command after -proxy as written.

Link to comment
Share on other sites

@Nielk1 You beautiful person you! I am thoroughly impressed by this already and I have only tested about 5 games so far! Of course, I haven't tested enough to be able to fill you in if there are any problems I can find but I will let you know after I have done some more extensive testing.

Already, though, I have found this version is SUBSTANTIALLY faster in the launch itself. It also seems to not be quite as likely for steam to miss hooking the emulator and having the overlay fail to apply. The rename sticking problem, so far, hasn't happened and I am using the end shortcut link in the BPM overlay to test it before it caused sticky names every time and for the moment it hasn't happened yet.

Rock on dood! :D

Link to comment
Share on other sites

Thanks for all your hard work and the new interface looks nice.....but......I am still not able to get it working and am pretty convinced that I am linking the programs together correctly. The proxy force closes every time I attempt to launch with "GameLauchProxy has stopped working". Below is the entirety of my log before the force close. Any thoughts?

 

53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    Start
53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    Version 0.0.3.0
53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    Raw Command Line    "C:\Users\HTPC\Downloads\0.0.3.0\GameLaunchProxy.exe" -steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "C:\emus\RetroArch\retroarch.exe" "C:\emus\RetroArch\cores\mupen64plus_libretro.dll" "C:\Users\HTPC\Documents\LaunchBox\Games\Nintendo 64\Castlevania - Legacy of Darkness.z64"
53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    -name Contains %gamename% or %platformname%
53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    New -name    Castlevania: Legacy of Darkness (N64)
53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    -fallbackname Contains %gamename% or %platformname%
53fb45ce-1c54-4bf0-85ff-f03d9eb954c9    New -fallbackname    N64
 

Thanks again, I'll be working through the night tonight but will be available to test this thoroughly the next 3-4 days!

Link to comment
Share on other sites

@percybuttkins you aren't calling the RetroArch Core. RA is prolly starting and then shutting down immediately because you don't have it pass that through. I did this exact thing before and the section of the guide that explains it isn't done yet. in the per system section of RA in LB, you need to copy paste the whole command line as you have it into each system. LB does not add the per system commands to the main default ones, it will use the per system command lines INSTEAD of the default ones if present. You have


-steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "C:\emus\RetroArch\retroarch.exe"

 in the default field and the  -L "cores\whatever.dll" in the per system line.

What you need to do is just clean the default field entirely and under the associated platform tab, make it INCLUDE the cores command. Like this...


-steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "C:\RetroArch\retroarch.exe" -L "cores\mupen64plus_libretro.dll"

You can just copy paste everything before the -L because the only difference here should be the core line so that RA can know what core to load for a specific platform. You almost had it buddy, this is just one little thing I hadn't covered yet in my guide. One of the "under construction" spots. :)

I will try and find some time today to finish at least this part of the guide for more clarity.

Link to comment
Share on other sites

@percybuttkins  I've posted a new 0.0.3.1 release with more logging added after the last line in your log.  It might help us find the issue easier.

@cammelspit  I've made an attempt to fix Issue 4, however this makes scraping the LaunchBox Library much slower.  Any zip and 7z files will now be inspected for cases where LaunchBox has extracted the archive before passing it through the proxy.  Note you will need to download a copy of the 7-Zip Extra archive for 7za.dll, use the 32 bit version.

Link to comment
Share on other sites

I have nestopia and retroarch working perfectly....dophin controller profile seems to want to default to kb&m, not sure if that is related to proxy or not. The one I'm struggling to understand is my visualboyadvance. Games launch fine but it never seems to hook into steam......pulls steam to the foreground after it closes but the log seems to indicate everything is working well as far as I can understand, but unable to pull up the steam overlay.  Here's the log for reference.

 

Start
Version 0.0.3.1
Raw Command Line    "C:\Users\HTPC\Downloads\0.0.3.1\GameLaunchProxy.exe"  -steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%"  -proxy  "C:\emus\VisualBoyAdvance\VisualBoyAdvance-M-WX.exe" "C:\Users\HTPC\Documents\LaunchBox\Games\Nintendo Game Boy Advance\Castlevania - Harmony Of Dissonance.GBA"
Possible Name Matches:
Castlevania: Harmony of Dissonance    Nintendo Game Boy Advance    Games\Nintendo Game Boy Advance\Castlevania - Harmony Of Dissonance.GBA    Castlevania - Harmony Of Dissonance.GBA    
Castlevania: Harmony of Dissonance    Nintendo Game Boy Advance    Games\Nintendo Game Boy Advance\Castlevania - Harmony Of Dissonance.GBA    Castlevania - Harmony Of Dissonance.GBA    
-name Contains %gamename% or %platformname%
New -name    Castlevania: Harmony of Dissonance (Nintendo Game Boy Advance)
-fallbackname Contains %gamename% or %platformname%
New -fallbackname    Nintendo Game Boy Advance
Looking for steam shortcut
Shotcuts must path to "C:\Users\HTPC\Downloads\0.0.3.1\SteamProxy.exe"
Search Patterns:
Castlevania: Harmony of Dissonance (Nintendo Game Boy Advance)    
SteamProxy    <rename>
Nintendo Game Boy Advance    
SteamProxy    
Done looking for steam shortcut
GameRestoreData.json    {"SteamShortcutID":0,"OldSteamShortcutname":null,"AddedFonts":[]}
steamproxy.json    {"Program":"C:\\emus\\VisualBoyAdvance\\VisualBoyAdvance-M-WX.exe","Args":"\"C:\\Users\\HTPC\\Documents\\LaunchBox\\Games\\Nintendo Game Boy Advance\\Castlevania - Harmony Of Dissonance.GBA\"","ShortcutID":9503504883563626496,"AggressiveFocus":null}
start    steam://rungameid/9503504883563626496
Start
Version 0.0.3.0
Raw Command Line    "C:\Users\HTPC\Downloads\0.0.3.1\SteamProxy.exe"
steamproxy.json
{"Program":"C:\\emus\\VisualBoyAdvance\\VisualBoyAdvance-M-WX.exe","Args":"\"C:\\Users\\HTPC\\Documents\\LaunchBox\\Games\\Nintendo Game Boy Advance\\Castlevania - Harmony Of Dissonance.GBA\"","ShortcutID":9503504883563626496,"AggressiveFocus":null}
Starting Program
FileName:    C:\emus\VisualBoyAdvance\VisualBoyAdvance-M-WX.exe
 Arguments:    "C:\Users\HTPC\Documents\LaunchBox\Games\Nintendo Game Boy Advance\Castlevania - Harmony Of Dissonance.GBA"
WorkingDirectory:    C:\emus\VisualBoyAdvance
found process to wait on    SteamProxy
Ended Program Normally
ended    steam://rungameid/9503504883563626496
Restoring old Steam shortcut name
End

Edited by percybuttkins
Link to comment
Share on other sites

@percybuttkins

It's possible that the emulator in question does not support the Steam Overlay.  The program needs to be running OpenGL or DirectX for the overlay to work.  I don't know what Steam does with controller profiles when the overlay doesn't work as I don't have a Steam controller yet.  It's also possible that the emulator has thrown off another process instance that isn't a child of the original and thus isn't in the line of succession for the Steam overlay, but that's quite unlikely.

@cammelspit

What happens with the Steam Controller when you play a Steam game that's not compatible with the overlay, for example the original Binding of Issac?  What happens if you launch notepad via a steam shortcut and try to use the Steam controller?

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...