I spent two summers working full time and two school years working part time as a software engineer making games for Myomo, a medical device company who makes the MyoPro, a powered orthotic brace for one's arm that uses EMG to read an impaired user's intent to move their arm and responds by moving their arm as they intend. For someone living with an impaired limb, the MyoPro is a great way to make their limbs functional again, and the games I made above focus on allowing users practice using the MyoPro and train them to find it useful in their daily lives.
I worked in c++, c#, and Unity to make these games myself with assets from the Unity Asset store. This involved designing UI's for connecting the MyoPro to the game, AI's to play against in Backgammon, and the portable tools for making the MyoPro work with Unity.
Using the MyoPro in Unity
When I started on this project, Myomo had a c++ library for receiving streaming data from the MyoPro. I wanted to get this data into Unity's c# scripting environment so I could parse it and use it as input. To do this I wrote a Unity plugin with c++/c# interopability this that abstracts away the complexity of connection management and streaming data over bluetooth and gives Unity a nice set of prefabs for finding new Myopro braces over bluetooth, using braces as input, and controlling the mode of operation of connected braces. I wrote the c++ backend that handles device communication, parsing streaming data, and sending commands to the device, as well as the c# interop code for making this useful in Unity.