Cross Body Trainer is a gamified exercise app built on Unity 5. It consist of the app, which is available via the buttons above, and a specialized hardware platform, consisting of an adjustable bow frame, a double-tethered leather bag, and a Bluetooth LE-enabled accelerometer module. The module fits inside the bag, and connects to the app via the user's mobile device; it measures the acceleration and diretion of the user's strikes and reports valid inputs to the app.

CBT is definitely a team effort; we have an embedded systems programmer who also handles our iOS-specific code, and our Scrum master has a Master's in electrical engineering, and so is also responsible for the development and layout of all custom circuitry and hardware (like the accelerometer module). My role on the team is as the primary Unity and C# developer - although I was originally hired to do IT, my experience in Unity has proven invaluable.

CBT has a pretty aggressive feature set; I am responsible for much of the baseline logic code, such as audio prompting, the core game loop, large portions of the dynamic workout generation system, all of the cloud services integration, all of the social media integration, and our specialized animation system, built on top of Unity's Mechanim. I am also responsible for a custom messaging system which allows us to decouple the UI from the baseline logic, which allowed us to experiment and rapidly iterate on the user experience without having to constantly rewrite the underlying logic.

Design-wise, I had a lot of input on difficulty and the introduction of gamification elements, such as scoring and an achievement system. I assisted our various artists, animators, and graphic designers in implementing their assets into Unity, and in building out most of the UI for the app. I integrated several Asset Store plugins, such as Graph Maker and the Facebook SDK. I was also responsible for most of the Android plugin which allows our Bluetooth LE sensor to send messages into the Unity C# code, and handled the audio focus plugins for both Android and iOS.

Finally, on the admin side of things, I regularly interact with our BitBucket Git repository, and help troubleshoot broken builds as the pass through our automated build pipeline (we use Jenkins on a Mac to allow us to push from a developer computer, Windows or Mac, and automatically version number and build both an Android .apk and an iOS distributable). I'm frequently the one who is responsible for taking the end-of-sprint finalized builds and making them live in both Google Play and iTunes. I also wrote several Unity editor extensions, such as the ability to capture the current scene view as a camera, the ability to wipe and build user profiles from within the editor, the ability to always play from the first scene instead of the current scene (to bypass stateful dependancies), and separate Single-Page Application editor which pushes to a server and can then be pulled directly into the Unity editor for ease of workout content generation.