How To Play This Game? Link to Guide
- Ensure you have a device with good system requirements so as to play the game smoothly.
- Download the repository code through the ZIP file
- Ensure you have Python installed on your machine
- Install all the packages of Python using the commmand
pip install -r requirements.txt
- Run the flask app using the command
python3 app.py
orpython app.py
according to the Python version installed on your computer - Allow the app to access your webcam
- MOST IMPORTANT STEP: Enjoy the game!
The PyGames hackathon was an incredible opportunity for us to showcase our skills and creativity, and we knew we wanted to do something truly special for this event. We decided to focus on the retro aspect of gaming, and our brainstorming sessions were filled with ideas that paid homage to the classics. But it was the concept of building a modern version of the iconic game, Mario, that really caught our attention. We were determined to create something that would capture the spirit of the original while adding a unique and contemporary twist. And that's where computer vision and machine learning came into play.
With these cutting-edge technologies, we were able to create a game that recognised hand gestures and allowed players to control the action without ever touching the keyboard. It was an incredible feat of coding and creativity, and we're thrilled with the end result.
Our project truly embodies the spirit of the PyGames hackathon, and we're proud to have been a part of such an incredible event. We can't wait to know the results, and we're excited to continue pushing the boundaries of what's possible in the world of development.
Our project is a cross-browser game that brings the classic game of "Mario" to a whole new level. We've incorporated computer vision technology to capture users' hand gestures through their webcam, allowing them to control the character in the game in a whole new way.
Players can control Mario's movements using different hand combinations. Raising the left hand moves the character towards the left, while raising the right hand moves the character towards the right. And of course, raising both hands allows the character to jump. It's an intuitive and engaging way to play the game that really puts players in the driver's seat.
Currently, our game features three levels for demonstration purposes, but it's designed to support an unlimited number of levels based on the creator's creativity.
Overall, we're thrilled with what we've accomplished with this project. It's a fun and engaging game that showcases the power of computer vision and machine learning in a unique and accessible way. We can't wait to see how it's received by the judging panel, and we're excited to continue exploring the possibilities of technologies used in the project.
During the hackathon, we were determined to explore different approaches to building our modern Mario game with hand gesture controls. However, we encountered some setbacks along the way, including the loss of all our files and having to start from scratch. Nevertheless, we persevered and were able to complete the project within a tight timeline. Here's a breakdown of our process:
- We began by brainstorming and finalizing the idea for our game, which involved building a modern version of Mario with hand gesture controls.
- Initially, we attempted to build custom machine learning models using thousands of images, but we quickly realized that this approach needed to be optimized. We decided to put the backend development of our project on hold for some time and focus on frontend development (which uses the Kaboom.JS library for building browser games)
- As we continued our development process, we explored the MediaPipe package by Google in Python for hand gesture recognition. We integrated it as the backend in the Flask web framework, which allowed us to detect and interpret hand gestures for controlling the game.
- Along the way, we faced several challenges, including a lack of documentation and unfamiliarity with new libraries. As a result, we had to go through the packages in order to understand what purpose it serves under the hood and how to make use of it in our project. Despite these obstacles, we were able to overcome them through perseverance and determination.
- In the end, we completed the project, including a comprehensive project description and pitch. We managed to accomplish this with limited time remaining for submission, which is a testament to our dedication and hard work.
One of the biggest challenges we faced was working with different programming languages and packages (because of Mehul's expertise in frontend development - JS and Bhuvnesh's expertise in machine learning and python). Our project required the use of the Flask framework which we had never used before. This added an additional layer of complexity to our development process. We had to ensure that all the components of our project were integrated seamlessly, and that they functioned properly together.
Another challenge we encountered was the lack of documentation and support for some of the packages we were using. We had to rely on trial-and-error and online resources to troubleshoot issues, which sometimes resulted in time-consuming delays.
Despite these challenges, we remained focused and committed to delivering a high-quality project. We worked collaboratively, leveraging each team member's strengths and expertise to overcome obstacles and achieve our goals.
It's been a challenging journey, but we are truly proud of what we've achieved. We faced numerous obstacles along the way, from bugs in the code to unexpected design requirements. But through persistence and creativity, we overcame each one, and our project is now a shining example of what can be achieved through hard work and determination and what we thought could never be achieved.
We implemented new features and functionality that we never thought were possible at the outset, and the end result is a testimony to our skill and expertise as developers.
But what I'm most proud of is the way we worked together as a team. We supported each other through the tough times, celebrated our successes together, and always put the project first. It's this kind of collaboration and dedication that truly sets us apart.
As we move forward, let's remember the lessons we learned from this project. Let's carry forward the skills we developed and the sense of pride we feel in our work. And let's take on new challenges with the same determination and passion that brought us to this point.
We are proud to have successfully completed a project that we initially thought might be too complex. We also feel accomplished for building a project in line with the retro considerations of the PyGames Hackathon.
Our project allowed us to acquire a wealth of valuable experience in various areas. Firstly, we had the opportunity (which was also a major challenge for us) to work with new libraries that provided us with a range of new functionalities. This involved thoroughly researching and learning about the libraries to determine how to effectively integrate them into our project even though it had little-to-no documentation available. Through this process, we developed a deeper understanding of the tools available to developers and how to use them to improve the overall functionality of our project.
In addition, we built browser games using both Python and JavaScript, which helped us refine our skills in these programming languages. We were able to apply the principles of game design and mechanics to create a smooth and engaging user experience. This involved designing and building game levels, character movement, and interactive game elements. By working with these technologies, we gained a deeper understanding of the complexities and intricacies of game development.
Finally, we were able to overcome a range of challenges in a time-constrained hackathon environment. This involved working collaboratively as a team, effectively managing our time, and quickly troubleshooting issues as they arose. Through this experience, we developed valuable problem-solving skills that will benefit us in future projects.
Overall, our project allowed us to gain a wealth of valuable experience that we can apply to future projects in various fields. We are grateful for the opportunity to participate in this hackathon and look forward to continuing to develop our skills in the future.