PSLS.net Home

Move.Me: Developer Talks About Building Drivers For The PlayStation Move

May 12, 2011 Written by Sebastian Moss

Announced back at GDC, Move.Me is a server application that allows “academics and hobbyists” to create applications and drivers for the PlayStation Move that is currently in a closed beta. One of the first projects to be revealed for Move.Me was Jacob Pennock’s gesture based mouse driver, that will allow people to use the Move as a super-cool mouse. To learn about his driver, and get a developer’s perspective on Move.Me, we chatted to Jacob in a wide-ranging exclusive interview.

Hi Jacob, could you introduce yourself and tell us a bit about your work on Move.Me?

My name is Jacob Pennock and I’m currently a computer science graduate student at East Carolina University. My research is primarily in the field of human computer interaction, in particular the development of unistroke and multitouch gesture recognition and image processing algorithms.

I am also an aspiring game designer and this year the International Game Developers Association selected me to be one of their GDC scholars. Which is a very nice honor and was an extremely wonderful experience. Through the IGDA I was able to attend this year’s game developers conference and also received many private studio tours and other perks the average conference goers did not. It was while at this past GDC that the developers of move.me from Sony Computer Entertainment America approached me with the opportunity to work with Move.Me prior to its launch.

So far I have built a Linux mouse driver for the move controller that has advanced gesture recognition capabilities.

How long did it take you to get the mouse driver to a workable state?

It took me only a few hours to build a usable basic mouse driver with point and click etc. This was written in C and I was only able to do it so quickly because I had already had experience writing similar drivers from my work in building custom Linux multitouch tables. It took me another two days or so to build the driver with gesture recognition. This driver is written in C++ and does all its gesture recognition through my own library called HyperGlyph. HyperGlyph itself is something I’ve been working on and carefully honing for extreme accuracy for the past year and a half as part of my graduate research.

Are you happy with Move.Me — does it allow full access to the Move, and is it easy to use?

First let’s talk about what Move.Me actually is as there seems to be some confusion among the tech press. Move.Me is a server application that runs on the PS3. It connects to the move controllers and then performs all the standard tracking and data collection that is available to move game makers which it then serves over the local network to any device wishing to receive that data. So to use the move controller on a PC you need to also be running Move.Me on a PS3 on the local network.

In addition to the Move.Me server application which runs on the PS3. Sony provides two libraries for developers to use to receive the data inside their applications. The first of which is a C# library for Windows, the other is a C library for Linux and Mac. The C# library is well-made, provides full access to the move controller, and comes with a number of small example applications including a Windows mouse driver. The C library however feels a bit unfinished me, at least as provided. The only provided example for it just dumps the raw accelerometer data to the console. I needed to rewrite some sections, and add a number of my own functions to this library before I had full access to the move controller.

In general it has been fun working with move.me and move controller. While the documentation does leave you a little bit wanting, everything is easy enough for any moderately experienced developer to use. I’m not super happy however, with how slowly Sony is working to build a community for Move.Me developers. Currently there is no system for those who have access to Move.Me to communicate with each other, other than submitting bug reports to the code repository. I would really like to see a forum, even a temporary one, to use while a more official system is created.

Will the few users that still have Linux on PS3 be able to use the mouse driver?

Sure, but it would be a bit convoluted as they would need to be running a second PS3 to act as the Move.Me server.

Are their any plans to bring the driver to other operating systems?

Since there is already a Windows driver and I know relatively little about how Apple handles input probably not.

The driver is still in an early stage, what do you hope to add to it by the time you launch?

I’m not sure really. At the moment I’m working on the ability to search for and launch applications by spelling out the first few letters in their name. I’d also like to make some more robust example Linux applications for the C library so future developers will have a nice place to start from.

When will that be?

I plan to release my code to the public when move.me is launched to the public. When that will be, I do not know but I was told at GDC by the developers of Move.Me that they hope to make it public as soon as possible.

HyperGlyph my gesture recognition library is currently public available on Google code.

Do you have any plans for other applications/drivers?

I did recently build a small prototype game using the Move controller on windows inside of UDK for a game development course I took this past semester. I may upload some videos of it in the coming weeks, but I don’t have any plans on releasing it. It was mostly just a demonstrations of using the move controller for a Diablo style controller scheme.

From your work with it, how precise is the Move in your opinion?

Extremely so. In generally it has been a pleasure to work with.

Is the level of precision and lag the same on Linux and on PS3?

Since all the processing is done the standard way on the PS3 itself the precision is the same. There is a few milliseconds of lag introduced from sending the data over the network but I have found it to be un-noticeable.