Steam Controller
Недостаточно оценок
(DEPRECATED) Emulation And Game Launch Proxy, Per-Game steam controller configs (Setup and usage)
От cammelspit
The intent of this guide is to describe an advanced Emulation setup with the steam controller. You will be able to use any frontend of your choice and launch emulators and emulated games with individual game names THROUGH steam and have true per-game SC configs.
   
Наградить
В избранное
В избранном
Удалить
Introduction
What exactly are we trying to do
So, if you have ever used any of the great frontends available in the wild you may have noticed that there are some limitations. The first and most apparent to us being, if you wish to use your steam controller to play any of your emulated games you actually have to add your frontend to steam as a non-steam game. As an example, I add launchbox to my steam and then load it. Then I find a game I wish to play but instead of showing the name of the actual emulator, such as Dolphin, it will say that I am playing Launchbox. If this is OK with you then read no more and go play some games. If you would rather it say Dolphin instead, then you have come to the right place.

Why should I care
For one thing, the steam controller bases its loading of configurations on the name of the shortcut that steam is running. If you were to load Dolphin directly from steam it would say you are playing Dolphin. With a front end, on the other hand, they actually will launch many different emulators that play many games from many different systems. Let's say you decide to switch to playing StarFox 64 through PJ64, your configs will not change. Currently, the only way around this is to save a config for Dolphin and a config for PJ64 and manually switch back and forth. If you were to make a change and forget to save over the older version then you will lose those changes. With the many dozens of systems that most emulation enthusiasts use, it can get challenging to keep them all straight.

Why not just load the Emulators right from steam
Well, you can! There are many emulators that have good UIs and make for a smooth experience like Dolphin. There are also a few emulators that are command line only with no usable UI and simply cannot be made to work from steam itself without manually adding each and every game you want to emulate by hand. This makes for a very cluttered steam library full of shortcuts. If you only want to play a handful of games then this might just be a good idea, if not then you should read on.

Why not just use ICE
Because ICE is terrible. You do not have control over your roms like you do in a good frontend. ICE itself is command line based and is fiddly at best to get working and you can't have your games compressed for systems like Playstation, Saturn or TurboGrafix-CD. This simply eats HDD space unnecessarily, not to mention the cluttered mess your library becomes.

How exactly does this work
In a nutshell, Proxy will take the command line arguments your front end gives it, save it to your HD and then launches itself from steam as an intermediary between steam and the emulator itself. This allows steam to think it has opened Dolphin, or any other emulator, directly and will treat it as such when in reality, you launched it from your front end of choice, with all of the benefits that that implies.

Seems really hard
Well, yes it is somewhat hard to set up. This is by no means a problem for someone who is used to using frontends or command lines, like most emulation enthusiasts. As time progresses, the author of this app will do all in his power to make this more user-friendly and easier to setup but it is truly up to you if it is worth your time. I cannot make this decision for you but I will say that, from personal experience, this has greatly enhanced my own steam controller experience with emulators so I would encourage anyone interested in giving it a shot and seeing for themselves if this is something they want. Besides, already, this app has made leaps and bounds in terms of both features and ease of use and I see no signs of this stopping anytime soon.

What else is this good for
Proxy doesn't have to be used exclusively for emulation, this is just what I have found most useful about it. The original intent of this app, before there even was a steam proxy feature, was to load up fonts temporarily for use in games and applications. Proxy has since evolved into a far more useful and robust application but its primary use is still available. You can also use Proxy to launch anything else that is non-steam through steam while passing through custom command line switches from the command line. This is something that I had discovered was intentionally blocked by Valve. You can come up with your own scenario where this can come in handy but for now, on to the good part.
Initial Setup
Download and install the needed files
For the entirety of this guide, I will be using LaunchBox as an example. This is the frontend that I personally use and am the most familiar with. Proxy can be used with most other frontends as well but the exact setup for your specific frontend will be different and I won't be able to help much on exactly how to setup Proxy in that case. Much of this guide will be frontend agnostic so should still be useful for you.

As of version 0.0.3.0 Proxy can scrape the launchbox XML files for automated game name and platform names to be used as the shortcut name. For the moment, there is no way to use other sources. The author plans to add many different sources for this information in the future but at the moment, this is a limitation you should be aware of.

If you do not already have a front end or are interested in LaunchBox, feel free to give it a try. It is free for most of its functions and perfectly usable as a good frontend even if you don't pay for it. If you do pay the premium, then you will be granted access to its BigBox mode amongst many other features. If you like Launchbox then you should at least consider supporting its further development by purchasing a premium license but that decision is left entirely in your own hands.
https://www.launchbox-app.com/

Below is a link to the GitHUB for GameLaunchProxy itself. Here is where you will always find the latest and most up to date version of Proxy. I highly recommend subscribing to the HUB so you can be alerted when any major changes take place to always keep your Proxy setup up to date on the most recent features and improvements.
https://github.com/Nielk1/GameLaunchProxy/releases

7ZA.DLL
You will need a copy of this file for proper scraping under certain circumstances. Proxy can only use the 32-bit version and only requires the 7ZA.DLL file itself. You can download this directly from the 7ZIP website.
http://www.7-zip.org/download.html

Keep it tidy
I cannot explain to you the importance of keeping your directory structures clean and tidy from the start. Even though proxy is technically portable, it will not automatically change its own settings files to reflect a new location if you should move it. In this case, you will have to delete the settings files and start over, More on this in the troubleshooting section.

I would highly recommend you keep Proxy in its own folder, separate from your frontend, roms, and emulators. This makes it both easy to find and it keeps the directory small so you can delete and update easily as necessary. An example of how I personally do this follows.

  • E:\Emulation\Emulators <- This is where I store all of my emulators, by system
  • E:\Emulation\Roms <- This is where I store all of my roms, by system
  • C:\LaunchBox <- This is where I installed my LaunchBox
  • C:\Proxy <- This is where I store my Proxy

NOTE: My C: drive is an SSD and because of how many games I can have in LaunchBox, I have decided to use this because of the sheer speed increase I get. Smaller Libraries will have less of an issue with this.

For the duration of this guide, I will refer to these paths as if they are my own. Your drive letter may be different, your directory structure is also likely to be different. Either way, you need to simply keep these things separated and easy to find at a moments notice.
Configuring Proxy
Steam shortcuts.vdf
This is the file that Steam itself keeps as a list of all of its shortcuts. Proxy needs to be able to read this file so that it can add its own shortcuts to steam and also so that it can search for its own shortcuts upon launching a game. The process of finding this file is usually easy and is as simple as hitting the "auto find" button.

In the event that Proxy fails to find this file automatically, more likely if you use a non-standard Steam install location, you can browse to this file manually. This file is stored in
X:\[steamdir]\userdata\[User ID]\config\shortcuts.vdf
Where X is the drive you have steam installed on, steam dir is the directory steam is installed in (typically Program Files (x86)\Steam) and user ID is a directory made up of random numbers that are unique for your account. You will usually have only one USER ID folder on your PC but can have more if you have more than one person using the same PC with a different account.

LaunchBox.xml
The Launchbox XML file must be browsed for manually but it is much easier to find. This file simply resides in the main install directory for LaunchBox. For example...
C:\LaunchBox\LaunchBox.xml

7za.DLL
This is probably something you want to use but is technically optional. If your games are uncompressed or the emulator you are using accepts your archives natively then you don't really need this. If you use any compressed games for systems like PS1 and GameCube in either ZIP or 7ZIP archives and you use the front end to unpack these games at runtime then you will need this. What is happening is it is getting a files list from the archives so if Proxy is not interacting directly with the archive itself, it will already know what the files inside the archive are named. If you don't then Proxy cannot know what the actual name of the file for that game is because it doesn't technically exist until it is unpacked by the emulator at runtime. This can cause the game name or the platform name to be inaccurate or missing. Just make sure that the DLL you use is the 32-bit version of 7za.dll and not the 64-bit one as that version will not work. This function was made available in 0.0.3.1

Scrape Launchbox.xml
After you have pointed to both of these folders you can now scrape the LB XML file to have Proxy load up all of the platform and game name information directly from the front end. To do this, all you have to do is go to the "Steam Shortcut Names" tab and press the big button on the top left that says "Scrape LaunchBox". Technically, this is all you need to move on but there is one more thing I would like to point out before you do that. Go on ahead and press the button that says "Load Platform List". You will then be greeted with the list of platforms that are currently loaded into Proxy. If you find you do not like what Launchbox names certain platforms, you can change it by pressing the "Edit Selected" button and simply typing in a new name. This can come in handy if you intend on placing the platform name before the game name in your final setup. Some of the platform names provided by LaunchBox can be rather long like "Super Nintendo Entertainment System" and can trail off the name of the game. In this case, you can instead use something like "SNES" instead. Please note that if you are using the 7ZIP DLL then the scraping process, depending on the size of your library, can take several minutes to finish.

Crate a steam proxy shortcut
Creating a shortcut in steam proxy
This is something that, prior to v0.0.3.0 of proxy was both difficult and unforgiving. v0.0.3.0 and on, however, this whole process has been boiled down to one single button press and the Proxy app will literally do all of the work for you as long as you have already selected the steam shortcuts file already. You do this by pressing the "Add Default" button under the "Steam Shortcut Names" tab. Proxy will add this shortcut automatically to the "Hidden" category in steam so if you suffer from OCD seeing a shortcut you shouldn't ever open manually by hand then this should have you sorted out.
Configuring Launchbox (or other frontend)
Choose an emulator
This choice is left entirely up to you, the user. As a general rule most, if not all, emulators should work properly with Proxy. There may be an exception to this rule that myself or the author of the Proxy app do not know about. Obviously, no one can prepare for every situation so if you run into any problems see the troubleshooting section below this guide for instructions on how to report a bug.

Command line setup for Proxy
Here we get into the deep and gritty details on exactly how to set Proxy to act as a proxy and launch games. Again, I will be using LaunchBox exclusively for these examples as, for the moment, it is the most useful and is the only place Proxy can get its data for the aforementioned renaming function.

Adding Proxy as an emulator
Since this is not a guide on the use of LaunchBox itself I won't get into too much detail here only to say that when you add an emulator to LaunchBox, in this case, Dolphin, you do not actually add Dolphin.exe as you normally would. Instead, you add GameLaunchProxy.exe as the executable for Dolphin. You then use command line switches to tell Proxy both what to do and where the emulator itself actually is so it knows how to do the launching. So let's get a feel for how you construct a typical command line for launching a game through Proxy.

Initial setup command
First off there are three ways you can launch your emulators and games with Steam through Proxy.
  1. [-steam] This is the trigger that tells Proxy to launch your selected emulator or game through steam.
  2. [-steambigpicture] This will do the same as the last command except for the fact that it will, before launching the emulator or game, it will open BPM.
  3. Normal mode is when you omit both of the previous commands. Proxy will still launch the emulator but it will not launch through steam at all. Since this is likely not going to be how we want the games to be launched, we can mostly just ignore this for now.

The first option is what is most useful for steam controller users because Steam will open the BPM overlay from the desktop UI automatically on its own if your steam controller is on. The second option can be used to give the same kind of BPM experience with other controllers like an XBOX or DS3/4 controller. Either of these commands you use should be placed as the first command coming from your front end. This is essentially a setup command letting Proxy know how to behave for the rest of the command.

Shortcut renaming (optional)
The next command you should input will be the [-name] command. This is what tells Proxy how to rename the shortcut before launching the game itself. In this way, you can have the game, platform or emulator name built into the shortcut. This is how steam will see the game name once launched. There are two different special attributes that Proxy can add automatically.

  1. %platformname% This is the name of the platform itself. This is scraped from LaunchBox directly and reflects what is in the platform list, see "Configuring Proxy" for more detail.
  2. %gamename% As it implies, this is the actual name of the game itself as LaunchBox sees it. Whatever the name of the game is in LaunchBox, this is what this will be replaced with in the command line.

SO, let us say I want Steam to say I am playing Super Mario 64 and in parentheses, I want the name of the system, in this case, Nintendo 64. The command for this would be as follows.

-name %gamename% (%platformname%)

This will output like this.
The beauty of this is the next time you play a different game, the first section of the game name will reflect the game name or any game you play. This can also be switched around too. There is no rule as to exactly how you want this to be named.

Another thing of note regarding the renaming functionality of Proxy is the fact that you don't have to use either of those attributes. You can just call it Dolphin or RetroArch and that will now become the name of the "game" you are playing. You can use this if you prefer. You could name the game "Rubber Baby Buggie Bumpers" should you choose to, there is no restriction on what and how the game is named.

Fallback name (optional)

Under Construction

Command line switches for Emualtors
Next, in the command line comes the final and most important part of the command line. This is where you actually tell proxy where the emulator itself is located and what command line options you want to use with it. If this step in the process is missed or done incorrectly, you will simply not get Proxy to work properly. What you do here is use the [-proxy] command. anything after this will be sent to the command line as is without modification so keeping syntax correct here is imperative. Here is a real example of what I use to launch Dolphin from within LaunchBox.

-proxy "E:\Dolphin DEV Master\Dolphin.exe" -b -e

As you may be able to tell, this is pretty simple. All it is is the -proxy command followed by the exact location of my Dolphin executable and finally the command line switches for Dolphin to boot without searching your rom directories and then to load the game that follows. LaunchBox automatically adds the full path to the ROM itself right at the end of the command line so Proxy will see that immediately follow. The following are two more examples of different emulators and how they would be structured.

For DeSmuME
-proxy "E:\Emulation\Emulators\DS\DeSmuME\DeSmuME_r5526_x64.exe"

For RetroArch loading the genesis_plus core
-proxy "C:\RetroArch\retroarch.exe" -L "cores\genesis_plus_gx_libretro.dll"

Whole Examples
I have decided to put in several examples of the whole command lines I use for several emulators. These are working and properly formed. This is so you can have several examples of exactly how they would look like in LaunchBox and what Proxy would actually see. By now, you should have a very good idea of exactly how this is working.

-steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "C:\RetroArch\retroarch.exe" -L "cores\mednafen_pce_fast_libretro.dll"
-steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "E:\Emulation\Emulators\Playstation\ePSXe\ePSXe.exe" -nogui -slowboot -loadbin
-steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "E:\Emulation\Emulators\DS\DeSmuME\DeSmuME_r5526_x64.exe"
-steam -name "%gamename% (%platformname%)" -fallbackname "%platformname%" -proxy "E:\Dolphin\Dolphin.exe" -b -e

In proxy itself, it also gives you example command lines but they can be a bit generic. If you are new to using Proxy, you might get confused at the fact you do not need to add "C:\Proxy\GameLaunchProxy.exe" because you already pointed to this by selecting it as the emulator exe, nor do you need to add "FULL\PATH\TO\ROM\FILE" because LaunchBox does this for you. Some other frontends may require you to do things slightly differently but by now you should get the idea.

Special consideration for RetroArch and other multi-system emulators
In the associated platforms tab for RetroArch in LaunchBox, you need to have the whole command line set for each system. LaunchBox does not add the per system commands to the default ones, it will use the per-system command lines INSTEAD of the default ones if present. You can just copy paste everything before the -L because the only difference here should be the core line so that RetroArch can know what core to load for a specific platform. In this case, the default command line should be blank.
Per-system/Per-game SC configs
Using templates
When using your steam controller and with Proxy set up to have the game name included, Steam will make a new fresh config for each and every game you start. At first glance, this may seem to be a bit cumbersome to deal with. If you think it is, then you can instead remove the %gamename% command from the command line and you will just get the name of the Platform. This doesn't look as clean and your friends can't see what specific game you are playing at that particular moment.

You can deal with this by using templates. As you can see from this screenshot, I have made templates for each of the systems that I use and I then save them as a template. This way, if I decide to play a SNES game, I can just load up the appropriate template and start right away without the hassle of having to build a new config for each emulated game. This method is especially useful for the more modern systems such as GameCube, Wii, PS1/2 and many N64 games because they can have very different control types for each game. This way, you also get to retain specific configs for each title in your library without the need for complex action set management. One prime example of this is the use of JMouse for Goldeneye Rogue Agent for the GameCube. Once dialed in, it feels almost as good as any other older FPS game for the PC.

To save templates all you need to do is hit Y at the SC config screen and select the templates option on the left. From there you can save a template and name it what you like.

System specific ideas for how you should config your SC

UNDER CONSTRUCTION
Troubleshooting
Sticky Steam Controller configs
Sticky steam controller configs may or may not affect you. This is a case where upon closing one game and starting another, the steam controller config will reflect the previous game and not the new game selected. This happens in version 0.0.3.1 and older where steam is called to launch the newly renamed shortcut before steam itself has had a chance to recognize it has changed. In version 0.0.3.2, this issue has been fixed by adding a slight delay between the renaming of the shortcut till the shortcut is actually launched. The default wait time is one second. If you have this problem the best thing you can do is upgrade your version of proxy to 0.0.3.2 or higher.

Verify shortcut in steam
This is probably the easiest part of the proxy setup process, it is also easy to miss if you aren't paying attention. When proxy adds a shortcut to steam, it does so in the Hidden category. If you would like to manually double check that the shortcut is there then all you have to do is go to your steam library and filter by the 'hidden' category. You should see a shortcut named "SteamProxy" there. If it exists, then you can move on to the next step.

Verify command line in fronend
This really is the most important part of the whole setup process. Syntax is absolutely key here. Rather than going through this again here, I will just refer you to the "Initial setup command" and the "command line switches for emulators" sections of the configuring LaunchBox section of this guide. Take it slowly and walk through it step my step.

Opening an emulator, Steam overlay failure
A lot of emulators have issues with the steam overlay, this is just a simple truth that you cannot get around. An example would be VBA-M where you can only have the overlay work when you have set the video output to OpenGL and not the default. I would recommend, if you are having problems, try and launch the emulator itself right from steam directly and verify that the overlay works. If not, then do your troubleshooting for that emulator there without complicating it with adding Proxy to the mix. After you get that all sorted, then it is time for you to try with Proxy.

Opening an emulator, rename failure
MAME and some other platforms do not use proper naming conventions for the roms or have more than one rom file in a ZIP. In cases like this, Proxy, as of right now, cannot handle these and so won't be able to rename the shortcut and it may even be blank. In this case, you should just manually name the platform in the command line and ignore the game name until this feature is added for this use case. This guide will be updated if this ever changes.

Closing an emulator, rename failure
Prior to 0.0.3.0, this was an issue where the shortcut would sometimes not get renamed back to the default name and so Proxy could fail finding the shortcut. This has been fixed now with version 0.0.3.0 but if it does happen, you may want to report it.

Enable logging
Any time you have a failure, or think you have found a bug with Proxy, you should enable logging. To do this, you click file and select logging from that menu in Proxy itself. This will save a file in Proxy's folder called "GameLaunchProxy.log". If you have to report an issue, you will need this so that Nielk1 can properly troubleshoot any issues you find.

How to report a problem
The best place to report a bug or issue is on GitHUB. Make sure you have your log file on hand and either post the whole file or copy and paste the last few entries into your comment.
https://github.com/Nielk1/GameLaunchProxy/issues
Acknowlegdments
A very special thanks to Nielk1. This is the author of the proxy program itself. He took this silly idea of launching things from steam from outside of steam and just ran with it. He has gone out of his way to do this for the sake of simply doing it and for this I am grateful.

A shout out goes to Jason and the whole LaunchBox team for bringing us an awesome Front end with a great interface.

This guide is penned by Kevin "Cammelspit" Connolly and is copyrighted. You may link to this guide without restriction but if you would like to distribute from other sources you must contact the author first.

All images or other source material was gathered specifically for this guide by the author unless otherwise indicated.
ChangeLog
V1.0 9/10/2016
Based on Proxy v0.0.3.0
The initial version of the guide, rough and is only about 80% done.

V1.1 9/11/2016
Updated to add some new functionality needed for compressed games. 7ZA.DLL integration.
Guide now reflects v0.0.3.1 of Proxy.
Added per-system multi-plat section for emulators like RetroArch.
Added section for suggesting the use of Templates for the SC.
Various spelling mistakes and typos remedied.

V1.2 9/15/2016
Started work on Troubleshooting section of the guide.
Much of it might not be needed with later versions so I will have to re-edit this section later, probably.

V1.3 9/18/2016
Added troubleshooting section regarding sticky configs. No other modification of the guide is necessary to reflect v0.0.3.2 of proxy. I really should add instructions on how to change the delay time if you need a different value for your specific PC.
Комментариев: 5
Pab98 12 сен. 2018 г. в 16:28 
it will set it up so i can manually configue a Steam Controller afterwards?
cammelspit  [создатель] 12 сен. 2018 г. в 13:07 
Well, its so darn easy to use there would be no need for a tutorial on the plugin. You just right click a game and select launch with steam. The limitations enter in where it doesn't work with games that must be unzipped prior to being run or alternative versions. We have asked Jason to include the features we need to get it working but it has been about a year after he said it was on his short list... Still, it's nice to have if you don't keep lots of games zipped up running in emulators that don't support zips, like Dolphin.
Pab98 12 сен. 2018 г. в 11:10 
Thanks! Will you do a tutorial on it too or nah?
cammelspit  [создатель] 11 сен. 2018 г. в 7:52 
YES! Another buddy of mine made a plugin for LB that does the same thing. It's broke right this second but hes updating it since there were some changes made to steam. SO I dont expect it to take more than this next weekend for the fix. https://forums.launchbox-app.com/topic/43142-steamlauncher/ There are some limitations to it though.
Pab98 11 сен. 2018 г. в 0:39 
Ahoy Cammel, do you know of any software that can replace Proxy for use with launchbox now that we cant use it?