Shooting Game – Final Report

Maddie Fisher-Bernhut, Donato Liotino, Ola Soszynski

Code: https://github.com/ToxicDon/qyro-shooter-game-arduino

Our main inspiration for this experiment was arcade shooting games, where the player earns points by shooting various targets. However, we mostly wanted to work with some new sensors in Arduino. Specifically, we were very inspired to figure out the gyroscope accelerometer, and the Bluetooth connectors. Other things we wanted to work with were vibration motors in regards to some game concepts we had in mind.
The final productOriginally, we planned on having the game be competitive, with two players versing each other to earn more points, or to defeat the other. We wanted a fun, wireless shooting game, and were inspired by similar games, often seen in arcades. This would encourage friendly competition between players, and generally create an enjoyable experience. The experience would be inspired by sci-fi movies and shows, such as Doctor Who, and fantasy, such as Harry Potter. The two players would fight each other, trying to defeat the oppositions’ creature, also themed or inspired by their theme.

img_20181204_122401917For inspiration, we looked at how competition assists one’s performance, as well as if any games like this had been made in p5 before. This led us to https://www.bigfishgames.com/online-games/8942/shooting-range/index.html, for games similarly made, and a basic game on DOS named Shooting Gallery (https://youtu.be/incPLdf712M). https://www.theglobeandmail.com/life/health-and-fitness/why-a-bit-of-healthy-competition-is-good-for-everyone/article8749934/, and

https://www.psychologicalscience.org/news/minds-business/the-upside-of-rivalry-higher-motivation-better-performance.html helped us read into how competition helps, regardless of the fact we did not end up making a competitive game.

Final wiring setup
Final wiring setup

Goals of the Experiment:

1. Use and learn Bluetooth for Arduino

2. Use and learn the gyroscope accelerometer

3.  Use vibration motor to detect invisible targets

    • To initially figure out how the motor worked, we used a tutorial (https://www.precisionmicrodrives.com/content/how-to-drive-a-vibration-motor-with-arduino-and-genuino/)
    • working-with-the-vibration-motorAfter using the tutorial, the code is mostly made by testing out different values and intensity according to distance, originally tested through a light sensor and then implemented into the game code.
    • Sadly, we were unable to implement this aspect, due to clashing libraries in the code disallowing the Arduino to operate as anything more than from movement.

4. Create different movement paths for targets as one progresses

    • Coded in using sine and cosine waves
    • While we wanted to implement a highly difficult mode, perhaps with a basic AI which avoided the player, we did not have enough time or understanding to do so.
    • The presented version shifts the randomly moving target once hit.

5.  Have working gifs

6.  Be able to see and track player on the screen using colour detection

    • We wanted to implement Maddie’s code from experiment one, which involved colour tracking, to track the crosshairs of the players. However, this code runs much slower and faces many avoidable complications when trying to track two colours at once. Due to this we later cut the number of players down to one.
    • diffusing-the-ledLater on, we realized the program runs far smoother using the gyroscope rather than the colour detection. So, we used the gyroscope for tracking, with the trigger being implemented through colour detection.
    • Another issue faced with the colour detection was that the LED was too small to properly activate the code, so we needed to diffuse the light and make a larger trackable object. Due to this, we used a ping-pong ball. Due to availability, we were only able to access orange ping-pong balls, which caused difficulties with the colour detection, which would trigger the game when too close. This could be fixed by using a white ping-pong ball instead. Our short-term fix was to distance the gun, in a relatively dark location.

7.  Have the game shoot by moving the gun in a specific way

    • 20181201_204007We realized that by using movement to fire the gun, the targeting would be offset. So, we changed plans, having it trigger fire but pressing a button that would light the LED for the colour detection to activate, “firing” the gun and seeing if it hit the target. Furthermore, as a failsafe, we could program the button to be what tests for collision, if the colour detection decides to not work.

8.  Customize the controller

    • first-layerWe worked with spray paint for the first time. It isn’t the cleanest or nicest looking but it turned out exactly as we wanted with our current skills.
    • The addition of the ping-pong ball also assists with the aesthetic of the prop gun for the game, as we needed to keep school guidelines in mind as we worked.

 

 

9.  Create a working shooter game

    • Accomplished

Progress Report: Shooting Gallery

Phantom Blasters (Working Title)

Maddie Fisher-Bernhut, Donato Liotino, Ola Soszynski

followermagicWe were inspired by the classic carnival and arcade games, namely shooting galleries. We also wanted to work with the gyroscope sensor and vibration motors. We really enjoy the aspects of friendly competition between two players, and wanted to create something that celebrates that. Playing off of that, we wanted to incorporate magic and technological themes to show the competitive aspect in a literal sense. Whether this will carry through is undecided currently. We truly want to make a game people enjoy playing. Furthermore, we wanted to work off of the typical shooting-gallery type games, shown below in the first two links.

Checking collision for the mouse and target
Checking collision for the mouse and target
Detecting mouse presses
Detecting mouse presses

Otherwise, we also wanted to incorporate vibration sensors, by having the targets be invisible, only tracked by the vibration, in a sonar-like way, in which it becomes more intense the closer the target is. By doing this, we will be working mostly with new things, while incorporating what we already know. In our case, we also want to work off some of what Maddie did in assignment one. By doing this, we can track the players’ crosshairs with a colour tracking camera. The coding ideas are a tad more simplified, so we can focus mostly on the new sensors and

assets in process

buzzers, allowing us to learn how they work. Other new aspects we are working with is loading gifs in p5.js, something Donato and Ola have n=both been unable to figure out thus far.


Research and context:

https://www.bigfishgames.com/online-games/8942/shooting-range/index.html

https://www.theglobeandmail.com/life/health-and-fitness/why-a-bit-of-healthy-competition-is-good-for-everyone/article8749934/

https://www.psychologicalscience.org/news/minds-business/the-upside-of-rivalry-higher-motivation-better-performance.html

Experiment 1 – Tyra & Ola

 

CatMunch

https://github.com/olasosz/Cat-Munch

For our game, we wanted to make the game Snake out of p5.js only. Our final (current) version achieves this, as you move the player with the arrow keys, avoiding touching the walls and yourself, as you collect points in the form of cats. The game was made mostly to challenge ourselves to use this new program and try out things we had not done before.

After making most of the code, we found a snake demo from p5.js, but the coding methods were completely different, so we simply used it to ensure we had the core elements of the game. (https://p5js.org/examples/interaction-snake-game.html)

https://www.google.com/search?q=snake – an example of Snake, via a Google built-in game

https://www.youtube.com/watch?v=XINAniQCh8Y – more examples of Snake

The final cat for the game
The final cat for the game
some inspiration

Aesthetically, we wanted something very cute and soft, so all the edges are rounded, and the colours are very pastel and muted. This was inspired by the Pusheen emotes, seen in applications such                        as FaceBook messenger.

These different emotes also played a role in why we chose cats as the point system.

more inspiration

We used the concepts we learned in this class and previous classes to build the code from nothing. Concepts such as collision detection, movement, sound, and random spawning locations for the cat were from this class. However, we did find a video that helped us stay organized and understand the code as we made the game. (Coding Challenge #3: The Snake Game) In the end, we called upon the CSS code we learned in Intro to Computer Science to tie the browser together aesthetically.

If the enemy spritewe had more time, we would add levels or difficulty, such as adding enemies (in the form of bees) and faster speeds. We also discussed changing the spawn parameters for the cats so they stay entirely on canvas, via a grid system of sorts. Other possible wants would be to add a restart or pause button, as mentioned                                                        during critique.