The Ultimate Remote - Ultimote

This is not your ordinary daily life remote that you can use to open the garage doors, your gates, turn on/off the TV/DVR, etc. When you are involved in development, you have the need to test your apps out on an actual device because the simulators do not connect/provide hardware events. Though the Macs are equipped with Accelerometers and there was a marvelous app that allows you to play with liquid particles by tiling the laptops, this works with almost all the laptops that were Intel based. Now that you are developing apps for the Mobile devices... How can you really test the accelerometers, etc? I guess Apple does not want me waving my 27" iMac to get some accelerometer events while testing my app/game on the iOS simulator.

Two developers, from Houston, TX put together an pp that would allow for passing hardware events from a physical device over the network to the simulator. These events are events that are generally not available to the apps while testing. Things like GPS, Accelerometer, Gyroscope, multi-touch, etc. The dynamic Duo are called MY Developers, MY not denoting possession or ownership but come from the initials of their names.

The app is simple and very easy to use. In fact it is actually two lines of code to connect
local utlimote = require("ultimote")

The library ultimote.lua and the corresponding iOS or Android app connect and start to offer a multitude of events streaming over the WiFi using JSON. There needs not be any additional change to the app/code, so the code that was working perfectly fine can be enabled to provide the hardware events while in the simulator by connecting to the ultimote server (the App on the mobile device).

The pre-christmas goodies do not stop here, they go on further with the fact that if you do not have a mobile device at your disposal, you can also use macro files (recordings of the events, that you can play back to the device). Think of these as a series of events that can be used to render a playback as if someone was actually playing the game. This is a very powerful feature.

The app is already submitted to the App store for approval, it is a matter of wait and watch for the approval.

The device side of things

On the device, you can start the remote and enable the events that you want the system to pass to the simulator, you have to be aware that some events are more noisy than others (i.e. send out more events that the regular ones and some of them also consume a lot of battery, like the GPS, compass, etc events)

The options screen is quite simple, It has a choice of elements that can be enabled or disabled. However in terms of the UI, I feel that this falls way too short. It is a bit confusing and has issues in touch events. If the accelerometer events are switched on, even if you hold the device still in your hands, there will be that minor shift due to the granularity of the events. The colours are fine but the app could really do with a UI makeover. It would really help.


In the early 2009, when the only way to develop for the Apple iOS devices was using xCode and while the simulator was a good one, it was difficult to test multi-touch etc. There was a trick, you could hold down the alt key while moving the mouse, it would give you two pointers (circular touch points) to work with. These moved in synchrony to each other and were set apart equidistant from the center. Working with the xCode simulator or any other simulator on the mac, is kind of frustrating as it does not support the hardware events. The data transfer between the device and the app is quite fast and almost feels native, given that mostly development would be at your home/office where you would connect to the local WiFi.

Here's a Video to demonstrate the capabilities of Ultimote


A little summary on what you get with the package
  • ScreenCapture
  • Accelerometer
  • GPS
  • Touch
  • Gyroscope
  • Sending Images
  • Compass
  • Hardware Key (Android only)
  • Orientation

You can also have the events that you require set from the device, so if under the options menu some of the events were disabled, and in code you request for a particular type of events, they will be send to the Corona simulator. This is in a way both a good thing and a not so good. For users that would enable all of the events, they would be surprised when the battery drains off faster, where as for the users that have no clue on these, can get the events that they really want, all set from the app. In regard to this I am surprised that there was a requirement for the options menu, it could have been settable from code and that would make it easier to manage.

In summary

Perhaps the feature that is most helpful in debugging is the autoScreenCapture, this sends a screenshot of the screen back to the device, which can be seen on the screen, it is equivalent of a skype shared screen on a slow Internet connection. It is best when used with non-gaming apps or capturing screens based on some triggers/events as you might deem fit. There are two functions available, the autoScreenCapture and the screenCapture. The other reason that this could be slow is that the app could be monitoring the directory at a set interval and displaying the file from the app's directory when it gets a new copy apart from all the other events that it needs to deal with.

Given that developers require a good repository of tools to get things done, for all those that are using the CoronaSDK framework, thi sis the second offering that is worthy of having a look, after Matthew Pringle brought us the Corona Remote. The App is entire written in CoronaSDK using Lua. There might have been some performance improvement had this been written in Objective-C or something similar after tall the only way the app connects is using TCP/IP packets over WiFi using JSON. Still, this is wonderful as it demonstrates another developer trying to push the envelope and trying to gain maximum from CoronaSDK. So if you are a serious developer and are looking to develop apps that are accelerometers/multi-touch/gyroscope, etc enabled, then you definitely need this app to help you be more productive and save you from the multitude builds to test something and then change, build and upload and test and the cycle continues. With Ultimote, no more building necessary, and when the code is left with the runtime, it will automatically takeover the hardware events so there is no interference from Ultimote. The only thing that we were unable to test is can the macros be played even on a device? Despite the device having all of that hardware and generating the events.

Software : Corona Ultimote
Publisher : MY GameDevelopers
Website :
Twitter : @mygamedeveloper
Platform : iOS, Android (ARMv7)
Price : $19.99 USD
Available on the Android Store right now, and will be soon on the iOS store as soon as it is released.

And we have a copy of Ultimote for one lucky winner, all you need to do
1. Follow @whatsin4me
2. Retweet the message "Read, follow @whatsin4me and RT this msg. You might win a copy of #Ultimote from @mygamedeveloper"

You can also follow us on Facebook by liking our page at


  1. Excellent Post OZ-apps!
    A few things we would like to mention that were not clear on the documentation.

    AutoScreenCapture is too slow for games but you can send individual game elements in realtime by setting the ultimoteObject=true on any display object.

    You can use ultimote.registerEvents() to set what events are sent. We included an options menu because macros can be recorded on the device away from the computer (ie to test GPS events).

    Macros that are recorded on the device can be downloaded onto the simulator using ultimiote.getAllMacros() function and then played.

    Thank you for helping us make our app better.
    -M.Y. Developers


Post a Comment