Doing things even more serious. Previous chapters of “ ”: How I hacked Google Daydream controller (Part I) Reversing and making it compatible with Apple iOS devices. (Part II) Developing compatibility across multiple platforms. (Part III) What about using two controllers at same time? Ghetto positional tracking. (Part V) The future of virtual reality is mobile. report that the powered by is the mobile VR platform with the highest adoption. However, on this platform, mobile virtual reality experiences still don’t feel as immersive as they should. There are several reasons for this, one of them is the absence of a cross-platform high-performance controller. Several sources Samsung Gear VR headset Oculus From a developer stand point, this situation gives you a hard time in implementing viable solutions for compelling mobile VR experiences. On the other hand, there is, of course, the . It is a great product, fluid, responsive, with a beautiful design and good battery life, but… It was born with an armored protocol (until ) and is only compatible with its own platform which struggles to find wide adoption as it is compatible only with very few devices. Google Daydream controller this hack “To be , or not to be , that is the question” (sorry Shakespeare) open source open source This is a limit that cannot be ignored, especially, by the developers. “ . This way of thinking inspired me to hack the as . The more open you are, the more adoption you will achieve” Google Daydream controller I did When launched its controller and its platform adorned with an , it inexorably laid the mobile virtual reality guidelines, opening the way to all its successors. Google excellent explanatory reference But now we try to deal with all the above limitations: consider a mobile-oriented developer, for example, who wants to develop a videogame or virtual reality experience and publish it. If he decides to adopt the as the main , he would find himself forced to make it available on smartphones. Only a few devices could use it, and that’s a shame, especially when you consider that was born as a cross-platform engine to allow you to create something portable across multiple platforms such as and . Unity3D Google Daydream controller input system Android 7.x Unity3D iOS Android So, did I mention the compatibility of with the Google Daydream controller Samsung Gear VR headset? Surprise, surprise… Google Daydream Controller Hacked (Running on Samsung Gear VR compatible smartphone through Unity3D) What’s going on here? My challenge in breaking the chains, as indeed my propaganda to make it open source, had to continue. So I decided to bring my hack to the next level: to extend its compatibility to and make it universally compatible. I wanted to make it run not only on , but also on the unsupported versions of ( , according to compatibility). Google Daydream controller Unity3D iOS ALL Android ≥4.4 KitKat Bluetooth LE Ok, but… How? First of all, I refactored the source code of in which I characterized the specifications in the ad-hoc . Later, I ported in both the (through which I interpreted the original ) and also the system (that takes care of for the absolute orientation). my first hack Google Daydream controller JavaScript class C# decoder BLE packets AHRS 3-axes tracking Nightmare driver architecture: making Google Daydream an universal controller. After importing a of the inside IDE, I created a “ ” script and I assigned it to the game object. This driver abstracts the low-level communication interface of the device via native plugins (for both and ). It takes care of both scanning and pairing processes as well as communicating data via the available channels. 3D model Google Daydream controller Unity3D Nightmare.cs bluetooth iOS Android Once the handshaking procedure is finished, it takes a few seconds for the driver to find the device. Finally, I was able to interact with the in a totally smooth and responsive way. bluetooth Google Daydream controller Google Daydream Controller Hacked (Running on iOS through Unity3D) Do you think you have missed something along the way? Reading previous chapters of “ ” may will help you to understand how things began: How I hacked Google Daydream controller (Part I) Reversing and making it compatible with Apple iOS devices. (Part II) Developing compatibility across multiple platforms. (Part III) What about using two controllers at same time? Ghetto positional tracking. (Part V)