Brick Breaker 2.0 – Final Project

My final project is inspired by the game brick breaker. In this game the user tries to use a paddle to prevent the ball from falling of the screen and destroy bricks. If the ball falls off the screen, the player loses a life. If the ball hits a brick the brick is destroyed and the player gains point. In the original version of brick breaker, the position of the paddle is controlled by a mouse or touchpad. I wanted to make the game more interactive and allow the user to control the position of the paddle with his or her body.

I decided to use an ultrasonic distance sensor to track the position of the user. Through serial communication, this information was sent to processing to set the position of the paddle.

 

Materials/Equipment
– Acrylic sheet (50cm x 80cm)
– Stranded wire – Solid wire
– Heat shrink tubing
– Prototyping Shield
-Arduino RedBoard
-Female Headers
-Ultrasonic Distance Measuring Sensor
-Solder
-Soldering Iron -Laser Cutter

Schematic

Schematic for Prototyping Shield

Code

The code can be found here on GitHub.

For my processing code I followed the structure used by ragstoriches on OpenProcessing and made many of my own adjustments to make the game match my desires.

Construction

Because the ultrasonic sensor had a wide cone of detection I had to create a large paddle made out of acrylic. I engraved the words Brick Breaker into the acrylic and cut out two holes for the Laser Button and the Start Button.

Additionally I connected my buttons to the prototyping shield using very long wires (to facilitate the movement of the player). The distance sensor was mounted onto the shield using female headers and the prototyping shield was mounted onto the arduino.

The arduino was then mounted onto a wooden board using screws and the board was decorated.

Set Up

The Board was placed on a pedestal to the right of the player and the TV was positioned in front of the player so that as the player moved left to right the paddle would follow them on the screen. However the pedestal was too short leading to the players holding the paddle in an awkward position. Two books were used to increase the height of the sensor.

I used painter’s tape as a marker for the players so that they could know where they had to stand in order for the sensor to pick them up and where they couldn’t cross.

Videos

Lots of fun videos of people playing my game can be found on vimeo. https://vimeo.com/306548084 https://vimeo.com/306547972 https://vimeo.com/306548003

Challenges and Improvements

  • The sensor has a wide cone of detection so I had to use a large board for the sensor to detect the player. In the future I would use a sensor with a narrower cone of detection e.g. IR sensor and I might be able to eliminate the board all together.
  • Also because the cone of detection was so wide, if somebody walks too close to the game while another person is playing it will pick them up instead of the player.
  • I would like to add levels and better graphics to the games. I liked the lasers and would like to add more powerups like that one to the game.
  • From the videos, you can see that sometimes the paddle jumps around the screen. If the acrylic board isn’t perfectly vertical and the person isn’t standing on the line, the sensor gives crazy readings. I could have possibly built some kind of sliding paddle to keep the acrylic in line with the sensor but that would have been difficult.
  •  

Reflection

All in all, I loved taking a game that didn’t initially involve movement and incorporating movement. A lot of people who played my game at the showcase said it was tiring which I think is a good thing because it got people moving. I think this game gave me an excellent opportunity to incorporate Serial Communication and have hardware and software work together. It’s a nice feeling to see the skills I gained over the past 14 weeks turn into a real, tangible, fun game and I hope to continue using these skills in the future to build more exciting things.

The Digitization of Just About Everything

Digitization is a term that I hear relatively frequently with many people saying we live in a “digital world”. However before reading this article I never appreciated:

  1. Why we live in a digital world and what is digitization
  2. The benefits of living in a digitized world.

The author explains digitization in a very simple way as encoding information into bits. (Simply by typing this blog post I am digitizing my thoughts.) The author also does an excellent job of explaining the two main properties of digitized information that make it so useful (two qualities that I think are often underappreciated and overlooked by the average person): digital information is non-rival and extremely cheap to reproduce. These two qualities have led to the mass reproduction and distribution of information across the world. The difficult, expensive part is initially converting non-digital information to a digital form. The availability of digital information has led to us optimizing the apps and tools we use everyday like Waze and Siri that draw on existing databases, while themselves contributing to and expanding the databases. As time continues, data will continue to explode providing us with more information that can be used to improve and optimize our tools.

Hokey Pokey Reflex Game (Light)

My basic idea is to create a two player reflex game based on blocking light. The game will give both commands to both players at the same time. Some examples are:

  • Right foot in
  • Left hand out

(I will extend these actions to other body parts if time and construction permits but the main two body parts will be legs/feet and arms/hands)

Two body images will be projected onto the wall and will serve as a light source. The player who responds to the command first by blocking the light from the projector will gain points.

Processing will be used to deliver commands and display scores to players while Arduino will be used to process.

I expect the circuitry to be relatively simple given that it will just be several photoresistors connected to the arduino.

 

Programming:

Arduino
Will consist of several functions similar to the following:

 

 

I can then do a comparison of the millis() for both players and the lower value would be the winner

*600 is a random number- I will have to determine what is considered bright and what is considered dark.

 

Equipment needed:

Breadboard
Long connecting wires
Projectors (2 to project bodies, 1 to project instructions to players)
Photoresistors (preferably larger ones than we have in our kits; couldn’t find any online)
Arduino

 

Five main concerns

  • Construction- making a body frame that is sturdy and I can mount the photoresistors onto.
  • Timing the movements – I’m unsure of how in the Program I would time the movements. For now, my idea is to use millis().
  • Figuring out what boundaries of light to use – what is considered dark vs light in terms of 0-1023 especially in differently lit environments. I’m concerned about using an analog device digitally.
  • Serial Communication – This game requires Processing and Arduino to talk to each other in a more complex way as I will be sending different information at different times.
  • Height concern – people of different heights require different body frames.

Angry Robot

I modified the robot example to move the robot’s arms using 2 potentiometers. Also when a push button is pressed, the robot gets angry and its eyes turn red.

Processing Code:

Arduino Code:

 

“Good Design On All Terms”

In the first chapter, the author uses the phrase, “good design on all terms”. I like this phrase because it highlights how good design should be the goal under all circumstances. Just because a product/device is meant to aid a disability, it doesn’t mean that good design can be overlooked. The author uses eyewear as the perfect example of how design meets disability to show that this combination is very possible and has several positive implications.

When good design meets disability, it can also lead to several positive social implications. When people look good, they feel good and as such feel more confident and comfortable. By prioritizing good design over invisibility, these aid devices can be destigmatized and can even serve as a form of self-expression. (Once upon a time glasses also carried a huge stigma too, but now they are even worn by people who don’t need them).

I also found it interesting how different users may want different outcomes from their aid devices. For example, the model Aimee Mullin enjoys showing off her different prosthetic legs and finds . However, for other people with prothetics and aid devices, discretion is paramount. As such there needs to be a range of products, all withI think the best solution is to create simple products with elegant design that can be customized from user to user.

The book also highlights the need for integration amongst fields when creating aid devices: engineers need to collaborate with doctors and designers and most importantly artists and people in fashion. The most important take away from this reading is that different fields need to collaborate to create disability devices that are bothe functional but have very elegant, yet customizable design.

 

Serial Communication Game – Brick Breaker

For my serial communication game I made a game similar to brick breaker but instead of controlling the paddle with a mouse I used serial Communication to control the paddle with a potentiometer.

 

Order in Chaos

To be quite honest, I did not understand alot of what Casey Reas was discussing in his talk because I didn’t understand alot of the artistic jargon that he used. However one major idea I took away was the concept of order within chaos. Even though some of his artpieces (and those of other artists that he showed) looked random, there was a systematic process involved in creating what appeared to be chaos.

I tried to apply that idea to the homework for today.

Retro Image

 

Classes Example

For this assignment, I made a Brick Class that can be used to print multiple bricks. I also created 2 methods. One called update() that draws the brick and another called changeColour()  that changes the colour of the brick if it is clicked. I also used the function keyPressed() to move the blocks around the screen.

 

 

Code to Portrait Sketch

Here is the code I used in processing for my portrait sketch.