In the last few weeks I’ve come to realize a very hard truth: two thumbs are sometimes not enough to play games on a touchscreen. The first attempts to artificially manipulate my genome failed, so I decided to opt for a different strategy: leveraging hardware sensors.
This sounds nice on paper, but the real challenge is defining a good UX which solves all the usability problem sensors have (many implementations out there fail here).
- How do we make sure sensors are both accurate and fast?
- How do we guarantee they are used only when actually needed?
- Which retro control are we going map to sensors?
- How do we determine a good rest position?
- How can we avoid forcing the user into an uncomfortable position to please the gyroscope?
Luckily Google answers the first question with virtual sensors (TYPE_GAME_ROTATION_VECTOR), providing a nice fusion algorithm on data coming from accelerometer and gyroscope, with great results on a modern device.
Users are given complete control, they can just enable it by double tapping on an analog stick which will start moving on its own following the device tilt. The rest position is computed from the first measurements and the difference with the following ones is used to drive motion.
To disable sensors, a single tap on the active stick is enough and it will go back to being a simple touch control. You can now lie on the couch and start again.
With just a bit of practice I found the accuracy of the inputs methods comparable, but with a bonus finger at your disposal and maybe a bit more of fun! You can check the video if you don’t believe my words.
This feature is already available in Lemuroid 1.3.0 (out on GooglePlay) along with improved layouts for every console. Try it out and feel free to let me know what you think!
Ok, this is great, but what about $FEATURE? A sneak peek: Lemuroid 1.4.0 is in beta with game pad bindings and external PlayStation BIOS support.