## Inspiration of Punch My Professors

As McGillians, we juggle from one final to another, drowning in projects that seem to have no end, all, while tackling some mind-bending assignments that leave you scratching your head. It's like you're constantly drowning, swamped with stress, wishing for an epic way to blow off some steam. That's the whole vibe of this game – it's a cool, offbeat escape to channel all that university tension. It's not about getting physical; it's more about flipping all that intense study stress into a good chuckle and a light-hearted jab.

## What is it about

"Punch My Professors" is a game that utilizes OpenCV hand recognition to detect a player's hand movements, translating real-life actions into the digital world. Players can form a fist and simulate a boxing punch towards a 3D model of their professor in the game. The game translates the player's physical punches into virtual ones, allowing them to interact with the professor's 3D model in a fun and harmless boxing match setup.

## How we built it

We built "Punch My Professors" by integrating several technologies:

**Mediapipe Hand Recognition**: We used Mediapipe's advanced hand recognition algorithms to detect and track the player's hand movements in real-time.

**2D to 3D Model Conversion AI**: We leveraged cutting-edge AI to convert 2D images of professors into detailed 3D models, ensuring a realistic and engaging virtual representation.

**Unity Game Development**: The core of the game was developed in Unity, allowing us to craft an immersive 3D environment and ensuring smooth gameplay and physics interactions.

**Custom Physics Engine**: We developed a custom physics engine tailored to simulate the impact of the punches on the 3D models, providing a satisfying feedback loop to the player's actions.

## Challenges we ran into

**Hand Recognition Accuracy**: Achieving high accuracy and low latency in hand recognition was challenging, especially in varying lighting conditions and backgrounds.

**3D Model Fidelity**: Ensuring the 3D models accurately resembled the professors while maintaining performance was a fine balance to strike.

**Physics Simulation**: Creating a realistic and responsive physics simulation that accurately represented the impact of punches on the 3D models required meticulous tweaking and testing.

## Accomplishments that we're proud of

**Seamless Integration**: Successfully integrating OpenCV with Unity and ensuring smooth real-time hand recognition in the game environment.

**High-Fidelity 3D Models**: The AI-powered 2D to 3D conversion resulted in highly realistic models of the professors, exceeding our initial expectations.

**Engaging Gameplay**: Crafting an engaging and fun game that has been well-received by players, providing them with a unique way to de-stress and have fun.

**Expanding the Roster**: Including more characters and scenarios, potentially allowing custom uploads of images to be converted into 3D models.

## What we learned

**Advanced Computer Vision**: Delving deep into OpenCV's capabilities taught us a lot about hand recognition and real-time image processing.

**AI-Powered Modeling**: We gained insights into the latest advancements in AI for 3D modeling, exploring the potential of neural networks in creating lifelike 3D representations from 2D images.

**Game Physics**: We enhanced our understanding of physics in game development, learning how to simulate realistic interactions between virtual objects.

## What's next for Box my Professor

**Multiplayer Functionality**: Introduce a multiplayer mode where players can box against each other's professors in a friendly competitive setup.

**Enhanced Interactivity**: Implement more complex hand gestures and interactions, allowing for a more varied and rich gameplay experience.

**Cross-Platform Support**: Develop the game for multiple platforms, making it accessible to a wider audience.

"Punch My Professors" started as a fun concept but has grown into a project that pushes the boundaries of AI and game development, and we're excited to see how far it can go!
### What is yHaCkSlAcKpAcK?.

A collection of slack integrations to make your life easier and your work flow-ier.
Interactions with the external services are text-based, via a bot.
There are 3 integrations provided out-of-the-box, but they're all built on a framework that makes it easy to add more. All you need is an API (and some python)!

P.S. working code is in the `working` branch on our repo

### Venmo

Venmo...through slack.
It works.
You have no excuse for not paying your boss for lunch.

### Tinder

Swipe right without taking out your phone.
Uses Facebook for authentication.

### Uber

It's like Uber for Uber, through Slack.

This feature is still under development

### Authors and Contributors

Sanders Lauture @golf1052
Andrew Knueven @knuevena
Tevin Otieno @tevin-otieno

#### Created at YHACK 2015
## Inspiration

We were extremely inspired by all the computer vision projects circulating around, and decided to use it to make a very fun duelling 1v1 game.

## What it does

You can 1v1 against another player! You can move your arm around to dodge incoming bullets and shoot your own bullets at the opponent with different hand movements!

## How we built it

We used MediaPipe to recognise the different hand positions, which the sprite will follow. Also, depending on different hand gestures, recognised by the computer vision AI, the sprite will be able to shoot projectiles, from a certain position. This will be sent to a server via WebSocket, in order to send the information to the other player.

## Challenges we ran into

We ran into some problems when communicating between frontend and backend with the Python implementation of MediaPipe, as the connection was too slow. To fix this issue, we reimplemented all of the computer vision with MediaPipe back in JavaScript.

## Accomplishments that we're proud of

Using computer vision through MediaPipe to track hand movements and taking these coordinates to make the player move.

## What we learned

We learned how to implement MediaPipe in both Python and JavaScript. We also learned how to use WebSocket to send information of the bullet to a server, and then to another player.