Hi, so trying to make a long story short, I’m a game developer on a different game (22series.com) and I’ve just ventured into the realm of creating custom controllers for our game. I first used a library that allows an Arduino to show up as a normal Windows USB game device / direct input device, but then I wanted to add much more advanced two-way communication.
At that point, I remembered seeing Objects In Space at PAX Aus a few years ago with that awesome custom controller, so found my way here to this forum, the OIS protocol, and the community libraries.
Rather than reinventing my own serial protocol, I thought I’d save myself some time by borrowing the existing OIS protocol.
So, to get to my question, is there any interest from the devs at Flat Earth Games in collaborating on an open standard here?
I’ve implemented it into our game already, and with a few “v2” enhancements I feel it game be completely general purpose for other games too. My changes are quite small and (IMHO) fit into the existing style. We require joysticks/pots/sliders, as well as events, so the most straightforward extension seemed to be to replicate the existing numeric input registration process (NIB/NIN/NIF commands) with numeric output registration (new NOB/NON/NOF commands). Then during the active state, the controller can send “channel=value” numeric output messages to the game in the exact same way that the game sends numeric input messages to the controller.
The other change that I’d suggest would be during handshaking - the game should include a version number and a game title string as part of the ACK message, allowing controllers to perform game specific synchronisation steps.
Another extension, not required by us (yet) could be to support string input / output messages, which could allow drawing game text on LCDs, or sending text input (keyboard?) to the game.
If there’s any interest here, I’d be happy to work with you on a “v2” protocol spec with extensions such as above in order to make it applicable to more games, and contribute C/C++ example implementations of the required game/arduino code. If there’s interest in making the protocol work over sockets/web-sockets/http, I can probably contribute to those efforts too.
If not, I guess I’ll fork the protocol and just thank Flat Earth Games for the inspiration! In any case, OIS has been a huge inspiration and motivator, so thanks!
Aside from my own desires to play my game in an immersive simulator, and allow fellow geeks to do the same, I also think that by popularising flexible input devices with this kind of protocol is an amazing accessibility feature. There’s plenty of gamers who struggle to use traditional controllers, so encouraging games to make physical controller customisation straightforward is a great idea.