## Inspiration

Our inspiration was to look at the world of gaming in a *different* way, little did we know that we would literally be looking at it in a **different** way. We inspired to build a real time engine that would allow for the quick development of keyboard games.

## What it does

Allows users to use custom built libraries to quickly set up player objects, instances and keyboard program environments on a local server that can support multiple threads and multiple game instances. We built multiple games using our engine to demonstrate its scalability.

## How we built it

The server was built using Java and the front end was built using Visual C++. The server includes customizable objects and classes that can easily be modified to create a wide array of products. All of the server creation/game lobbies/multi threading/real time is handled by the engine. The front end engine created in C++ creates a 16x6 grid on the Corsair keyboards, allocates values to keys, registers keys and pre defined functions for easy LED manipulation. The front end engine provides the base template for easy manipulation and fast development of programs on the keyboard.

## Challenges we ran into

Our unique selling proposition was the ability to use our engine to create real time programs/games. Creating this involved many challenges primarily surrounding latency and packet loss. Due to the fact that our engine was expected to allow every keyboard playing in a lobby to reflect the state of every other place, and update the LED UI without delay, this required a low latency which became a problem using 1and1 servers located in the UK leading to the response time with different keyboards increasing up to a few seconds.

## Accomplishments that we're proud of

* Low latency
* Good Syncronization
* Full multiplayer support
* Full game library expansion support
* Creative use of limited hardware
* Multithreading support (Ability to create an infinite number of game rooms)

## What we learned

* Group Version Control
* Planning & organization
* Use of Corsair Gaming SDK
* Always comment, commit and save working versions of code!
## Inspiration

Wanting to build an FPS VR game.

## What it does

Provides ultra fun experience to all players, taking older folks back to their childhood and showing younger ones the beauty of classic arcade types!

## How we built it

Unity as the game engine
Android for the platform
socket.io for multiplayer
c# for client side code

## Challenges we ran into

We coded our own custom backend in Node.js to allow multiplayer ability in the game. It was difficult to use web sockets in the C# code to transfer game data to other players. Also, it was a challange to sync all things from player movement to shooting lazers to map data all at the same time.

## Accomplishments that we're proud of

Were able to make the game multiplayer with a custom backend

## What we learned

Unity, C#

## What's next for Space InVRders

Add other game modes, more kinds of ships, store highscores
## Inspiration

In online documentaries, we saw visually impaired individuals and their vision consisted of small apertures. We wanted to develop a product that would act as a remedy for this issue.

## What it does

When a button is pressed, a picture is taken of the user's current view. This picture is then analyzed using OCR (Optical Character Recognition) and the text is extracted from the image. The text is then converted to speech for the user to listen to.

## How we built it

We used a push button connected to the GPIO pins on the Qualcomm DragonBoard 410c. The input is taken from the button and initiates a python script that connects to the Azure Computer Vision API. The resulting text is sent to the Azure Speech API.

## Challenges we ran into

Coming up with an idea that we were all interested in, incorporated a good amount of hardware, and met the themes of the makeathon was extremely difficult. We attempted to use Speech Diarization initially but realized the technology is not refined enough for our idea. We then modified our idea and wanted to use a hotkey detection model but had a lot of difficulty configuring it. In the end, we decided to use a pushbutton instead for simplicity in favour of both the user and us, the developers.

## Accomplishments that we're proud of

This is our very first Makeathon and we were proud of accomplishing the challenge of developing a hardware project (using components we were completely unfamiliar with) within 24 hours. We also ended up with a fully function project.

## What we learned

We learned how to operate and program a DragonBoard, as well as connect various APIs together.

## What's next for Aperture

We want to implement hot-key detection instead of the push button to eliminate the need of tactile input altogether.