Project Overview

KITBASH was my CS501 final capstone project—a customizable wireless game controller application allowing users to create and configure personalized controller layouts. The application provides an intuitive interface for mapping buttons, joysticks, and other controls.

Demo Video

Key Features

  • Drag-and-drop Controller Builder: Create layouts with components like buttons, D-pads, and joysticks. Components are highly customizable in terms of size, location, and function.
  • Cloud Backup with Firebase: Layouts are stored in Firebase using XML-based schemas. Offline changes are buffered and synced when internet becomes available.
  • Voice Recognition & Motion Control: Voice commands (e.g., "jump", "shoot") can activate controls in real-time. Device orientation is tracked using a weighted fusion of gyroscope and accelerometer data.
  • Keyboard & Mouse Simulation: A Python listener script interprets incoming messages and simulates key presses or mouse movements using the keyboard and mouse libraries.
  • Google Cloud Relay Server: Hosted relay server on Google Cloud to overcome WiFi restrictions and forward messages from the app to the local client script.

Technical Architecture

Android Jetpack Compose Firebase Firestore Firebase Auth Python WebSocket SpeechRecognizer Kotlin Coroutines Google Sign-In API

Key Contributions

  • Designed and implemented the layout editor UI with custom graphics
  • Refactored the WebSocket integration to support continuous signals
  • Improved resilience to disconnection by buffering Firebase writes
  • Set up the cloud relay server on Google Cloud
  • Modified the client/server communication logic

Current Status

The app is fully functional and supports streaming input from Android to any computer running the listener script. It is stable and responsive. Development has been paused after the capstone—this was a successful school project that achieved its goals. Future features (Bluetooth integration, rooted device support, trackpad) remain as ideas but are not actively being pursued at this time.