From the DIY drawer: iPad mini Project Fiona/Edge-style game controller for PC game streaming
A pet project of mine lately has been to play with streaming PC games to my iPad mini via Splashtop 2 (a remote PC app), using a wireless controller connected to the computer as the control stick. The whole streaming part of the setup worked so well that I wanted to explore the controller aspect of it a bit more, and that’s exactly what I did.
This whole thing started with me just playing around with Splashtop 2 as a way to remote control PC games. I use Xbox 360 controllers with some Steam games, and since you can get wireless Xbox controllers, an idea formed as I sat there with a wireless controller, “wireless screen,” and a PC game that worked perfectly well with the both of them. My original video showed this concept with Just Cause 2 on the PC:
Since then I’ve played around a bit more with this setup, and after becoming more familiar with how to optimize everything, I tried the setup with Borderlands 2. The video below is 8 minutes of gameplay from Borderlands 2 showing that the actual streaming aspect of it works very well. In the video, the game runs in 1024 x 768 windowed mode (iPad mini resolution) on a rather aging desktop PC, and despite a couple of PC-side (i.e. not Splashtop-side) lag spikes at the beginning, you can see that Splashtop 2 is more than capable of streaming a PC game on a good local WiFi connection.
This system of remote controlling a machine is seeing some use in actual projects, as both the Wii U’s controller-side game functionality and the remote PC game functionality of NVIDIA’s upcoming Project Shield work on similar concepts.
The Project Fiona/Edge-style game controller
Project Fiona has been Razer’s pet project since last CES, but never made it to market. This year the company was back with the Razer Edge, an evolution of the same concept. Two controllers on either side of a gaming capable Windows tablet, with the ability to remove the controller section.
Ever since I first saw it, I thought it looked like a tablet with two Playstation Move Navigation controllers on the sides. That’s also what gave me the idea of actually gluing two such controllers to an iPad mini case, giving me the same basic tablet controller system. I ordered a couple of the Move controllers that were on sale (I think they’re discontinued, and also made sure that the cheap Bluetooth dongles I’ve had around since I was playing with controllers on Android would work for this use- you can’t just use any BT dongle. When the controllers arrived, I glued them to the sides of that useless SwitchEasy CoverBuddy case I had around.
The hard part here is the software. Playstation controllers aren’t compatible with Windows by default, so you need something in between. Before ordering the controllers, I had found MotionInJoy, a piece of software made specifically for bridging this gap. I already knew from a YouTube comment that two Navigation controllers would work at once, but the same comment made me doubt that I would be able to run them as two halves of the same controller. I quickly confirmed my fears: mapping each controller to different halves of an Xbox controller didn’t give me one full Xbox controller, it gave my half of a player 1 controller, and half of a player 2 controller. I don’t know if this is a simple hardware limitation, a missing feature in the software, or just that no one has thought of such a weird use for two Navigation controllers as to need it before. Either way, that idea went out the window quickly.
After trying to have one half emulate an Xbox controller and the other a mouse and keyboard, I had to give up that as well, as the two control methods didn’t work well together- at least not in Just Cause 2, the game I used to test this out. Moving with the controller would make looking around with the mouse insanely slow, so I just gave it up. That left me with configuring both controllers as a mouse/keyboard combo. The right controller’s analog stick emulates a mouse, the left one’s stick simply does WASD controls. The various buttons are then mapped to whatever the default buttons are in Just Cause 2. I tried to make it as close to the Xbox 360 controller setup as possible, but it still ended up being a whole different type of control system than the Xbox controller.
With everything mapped, the biggest problem was left to solve. I quickly noticed massive controller lag, and I spent a lot of time trying to pinpoint the issue. It seems that my aging desktop computer has issues with providing enough bandwidth to the USB ports, an issue I was aware of already, but had hoped wouldn’t play a role in this little experiment. And no, giving CPU priority to the software didn’t help enough, as I know that’s one possible solution to such issues. I may end up throwing in a USB card for it the next time I order something online, but we’ll see. Either way, I was left with using my laptop, which doesn’t have USB port problems, but has much less overall performance.
Even with enough bandwidth for the USB ports, I had troubles. I don’t know if it’s the specific dongles I have or just Bluetooth 2.1 in general, but using two controllers on the same dongle resulted in the second connected controller being automatically down-prioritized and laggy to the point of being useless. Luckily, I had two of these Bluetooth dongles, and made it work by pairing one controller to each dongle. This works because MoitionInJoy pairs the controller directly to the dongle’s MAC address via USB before doing the BT connection, similar to how USB/BT Joystick Center does it with the same dongle on Android. At last, I had two working controllers.
Suffice it to say, a lot of compromises had been made between the video showing Borderlands 2 running perfectly and the setup I now had. A slower computer, forced to run the game in 640 x 480 to not lag with all of this “software junk” running as well, controlled by two separate game controllers set up to emulate a mouse and keyboard. Hardly what I had hoped for when I started this, but still, it does actually work, as shown in this video:
How to make this a more viable project
With all the issues I had with this, I’m surprised that it works as well as it does now. Luckily, the amount of issues actually makes it possible to improve this a whole lot, and make it an actually viable system. The absolute simplest and best way to do it would be to do Ben Heck’s Xbox 360 controller split mod. It would eliminate all the issues I had with the two Navigation controllers, simply because you then get a single true Xbox controller- which is exactly what I use in the Borderlands 2 video further up. I actually have two wireless Xbox 360 controllers I don’t use, so I may very well attempt to combine them like he did. If I do that, I’ll make sure to report back.
Aside from that, a more powerful computer with fully functional USB ports would be great. My desktop computer can run the game, but not the controllers, and my laptop can essentially use the controllers, but not the game. Eliminate those issues, and you’ve improved this a lot. You still have two controllers that emulate a mouse and keyboard though, which isn’t ideal. With more tweaking of sensitivities and settings, as well as some actual practice, I’m sure you could get used to it, but it’s still nothing like the experience you get with an Xbox 360 controller that’s made for this, and natively supported by the game.
Obviously, an update to MotionInJoy or some other software to allow the two controllers to emulate a single Xbox 360 controller would also help this massively, as you’d then get rid of all the control issues in one go.
Finally, the perhaps most obvious solution is to use a smaller device, one that doesn’t need to have the controller split between the two sides of the screen to still be playable as a handheld. My Galaxy S II laggs too much on Splashtop 2 to serve in this capacity, but I’m sure newer Android devices as well as smaller iOS devices (iPhone, iPod touch) would work just fine. Then you could just mount it directly to a wireless Xbox 360 controller and be done with it.
I want to continue playing with this project, as I think it has potential. Both Razer’s Edge, Project Shield, and other commercial solutions got a ton of attention at CES, and that bothers me a bit since you can just go out and built your own system, like I did. I’m still surprised by how well games play over Splashtop 2, which means that the only thing really missing here is a way to split a controller across two sides of an iPad. Or, of course, just use a smaller device- but where’s the fun in that?
Check out more DIY articles here.