-
Notifications
You must be signed in to change notification settings - Fork 1
Reflection
First and foremost, we are all incredibly happy with our final product. We consider the current state of code a success because we met our minimum deliverable: to be able to "pop" something on screen. We were unsure about how using OpenCV would turn out since none of us had used it before. In the end, we were very happy because we had to change the scope of our project (our original goal was too easy). The fact that we made a remake of "Fruit Ninja" was a tremendous success by our original standards.
So in one sense, we passed our maximum deliverable. On the other hand, after we had changed our project path, we did not reach our maximum deliverable. The utmost absolute maximum would probably be to remake "Fruit Ninja" almost exactly. We got to a similar functionality, but by no means approached the sense of "finished-ness" or professionalism that the real game has. As is also mentioned on the design page, we would have liked to implement sound and effects as well as fruit-shaped objects. Most of our issues came from the way we structured our code. On a different note, we would like to acknowledge the tremendous amount of documentation and guides for OpenCV. This made it very simple to start working on cool stuff quickly.
Were we to do this again, we would definitely try to work on restructuring our code differently. We had many reasons for why we structured our code the way we did. However, this ended up holding us at a road block. Our code is simple enough where our one-script structure seems fairly reasonable. However, when we got to the point where we passed our minimum deliverable and wanted to include specialized functionality such as sound, the structure prevented progress. On a brighter note, using numpy was the best decision that we made. It sped up our code immensely and allowed us to have a more fun, real-time game. Without numpy, we can have more randomized colors for the fruit, but the code runs incredibly slower. This is apparent just from playing the game and having the webcam lag or stop playing video in real time.
We had interesting experiences in the division of labor, something always difficult when trying to code together. Due to an absence of a team member for prior commitments and a holiday break, the code was basic, but almost completed by the time that team member could rejoin in working on the code. That being said, each team member contributed different work for the team. The division of labor, while very divisive, allowed for tons of work to be completed in parallel. Overall, we divided the work that allowed members of the team to work independently and be integrated very easily. While the code as a whole may not look like it flows or follows a general quality (since it was not written as a unit by one person), it still does function effectively.
As already mentioned, there were a couple of bugs that popped up throughout the process. Our major bug was the structure of our code. The disorganization of how our code is laid out ended up being our constraint for the project. Had we noticed this problem earlier on, we could have easily fixed it and would have been able to continue adding new features. Since we all were entirely focused on what the code produced rather than its organization, it ended up being one of our major downfalls for this project. However, we were able to meet our goals for the project.
Another bug that we noticed towards the end of the project occurred while incorporating numpy into our code. For some reason, when trying to display the rectangles on the screen, we keep displaying translucent rectangles, which was not exactly our intention. We wanted to display the opaque rectangles and we tried playing around with different values, but we couldn't get it to display the rectangles in its actual color. If we used the nested for loops, however, the rectangles display perfectly, but this method compromises the processing speed of the game. We spent several hours trying to debug this issue, but could not find a solution.
Besides the bugs listed above, our code works fairly well and we were able to achieve what we wanted out of this final project.