Our project is to build the control software for a gaming bike, which will let other developers write games and apps for it. The end user here is other developers, not 'normal' users. We want it to be as elegant as possible to develop for our device!
Our device uses an Arduino, and connects via USB or Bluetooth. It's all very standard and straightforward, and if needed we can make changes to the comms protocol without any friction.
We would like our device as much as possible to function like a mouse or keyboard. As in, the mouse is plug-and-play, sends events to the active window, non-focussed windows can still get its X,Y position if they ask, etc, etc. We want our device to behave in the exact same way.
(Worth pointing out: Unlike a mouse the user could have multiple instances of our device plugged in at once so the controller can't be naive about that.)
A slight extra detail: we would like the controller to allow 'simulation'. Meaning, if there's no device present, an app can create a 'fake' device that's not connected to a serial port and directly set its state. This device looks from the outside exactly like a real one, and it's all entirely transparent to app developers.
(We need this because we would like devs to be able to program our device before they've decided to buy it. Instead they can download our simulator app and be coding in under five minutes.)
After that's done we obviously need the DLL that talks to this controller, which game and app developers can use to write programs that use it.
We then want wrappings around this to let it be used easily with other languages. C++, C# at least, preferably also Python, Node.js, whatever's most popular with developers these days. Ideally we'd pay attention to how you do C++, C# and Python, and hope from that we learn how to add new languages ourselves.
Since our device is a gaming bike that will be used alongside aggressive and resource heavy games, performance is a major consideration and we would rather bring in an expert to make sure it's done right. We are very keen to learn and expand our horizons, and would greatly appreciate someone who is willing to explain their work and teach us a little.
- A controller that lets you manage our Arduino-based devices (and virtual 'simulated' devices) and sends their events to the active window
- A DLL that can be used to send/receive data from the device, via the controller
- Wrappings in a few other languages (C++, C#, Python) for the DLL
- Some tests and simple example code proving that it all works