InControl: State Of The Asset
Posted by Patrick on Thursday, March 19, 2015Thu, Mar 19, 2015

InControl is just a little over a year old on the Unity Asset Store now. It started as an open source project to scratch my own itch but it clearly resonates with the Unity community. Following the encouragement of friends and fellow developers to turn it into a sustainable paid asset, I've been really happy with how it has done.

There's always been an essence of good will to this project. Much of its success is due to the generousity of others and spreading it by word of mouth. I've tried really hard to provide good support and help folks with what they need. I've kept the slightly-less-featured open source version going with near parity, which has been put to great use in countless game jams. For the past year, I've shelved working on anything else in order to focus all my free time on it — well, what little free time one has with an 18-month-old son.

So, I want to take a moment to give a huge thank you everyone who has been so supportive of this little project. It has enabled me (in a teensy tiny way) to vicariously be a part of developing several wonderful games out there and that gives me plenty of warm fuzzies. Meeting and catching up with several of you at GDC 2015, was inspiring and motivating.

I'd also like to give a few of my thoughts on the future.

I've just published version 1.5, which contains the long-awaited support for runtime rebindable controls. This update has required several significant changes to the internals in order to support this feature and prepare for some future additions.

But it has been difficult maintaining two separate forks. As I've added more features to the Asset Store version, porting those additions over to the open source version has become more and more time consuming. With the latest update, the internals are so different that it is prohibitive.

And so, after some deliberation, I'm announcing that the open source version (which roughly corresponds to version 1.4.4) will now be put into a frozen, basic maintenance-only mode. The repository will stay where it is, and I'll continue to try keeping it compatible with Unity 4 and 5, but it will get no new features or significant changes. I hope that it can continue to be helpful in game jams and prototyping, and so I intend to keep it alive as long as is reasonably possible, but it will inevitably begin to age.

As for the Asset Store version, untethering it completely from the open source version will allow it more freedom to grow. I'll be keeping it backwards compatible right down to Unity 4.3 for several months to come to help ease the upgrade cycle as everyone begins to either move to Unity 5 or finish up their games with Unity 4.

I have a few great features planned for the months ahead. There are certainly plenty of challenges to overcome and problems to solve in the controller space. I'll briefly mention one planned addition that I'm particularly excited about.

With the recent announcement of Unity 5 Personal Edition absorbing many of the features previously only available in Unity Professional, the most exciting prospect to me was that native plugins are now supported in the free version of Unity. Even before the announcement, I had begun to work on developing a native component for InControl that will bypass Unity (and many if its more troubling bugs) and provide a host of additional capabilities, specifically on desktop platforms.

This will allow features such as high-frequency polling, robust hot-plugging and controller specific functions such as haptic-feedback and light control. In some cases it could also allow using certain controllers (for example, on Mac) without the need for installing weird third-party drivers.

It is certainly a challenging thing to do right and it's still super early in development, but my plan is to initially bring it to Mac and then grow it to Windows and Linux. I believe it has the potential to really take InControl to the next level.

I'm excited to see what the next year brings!