Week 7

Setup and prototype:

Vlad Ciutacu, Jeroen Nijkamp — Sonic Coin Run

Concept:

  1. Hot lava; the user balanced on the beam is surrounded by hot lava, and when they touch the floor, the lava erupts or reacts
  2. Frozen Lake: the user is balancing over a frozen lake, and when they touch the lake  that part of the lake defrosts and the irce breaks
  3. Collapsing building: every time the user touches the floor another part of the build collapses
  4. Coin run: swing from one end to the other collecting as many coins as possible (ropes / balancing bench)
  5. Coin run 2 – balance from one stone to another collecting as many coins as possible

Scenario:

  • The user collects coins by going from one balancing stone to the next, collecting coins in between. This gives the user an incentive to do the exercise. Coins make sound when they are collected.
  • When the user get onto a new balancing stone, the coins positions randomize, adding replay-ability to the experience.
  • The coins are spinning, to give the interaction a dynamic feeling.

Interface:

  • Coins
    • Spinning
    • Randomized locations

Wizard Rules

  • The wizard follows the user with the mouse, and when the mouse touched a coin in processing, then the coin is collected

int numFrames = 8;
int currentFrame = 0;
int score = 0;
int time = 60;
PImage[] images = new PImage[numFrames];
PImage background;

void setup(){
size(700, 600);
frameRate(16);

background = loadImage(“backgeround.jpg”);
background.resize(700, 600);
images[0] = loadImage(“coin1.gif”);
images[1] = loadImage(“coin2.gif”);
images[2] = loadImage(“coin3.gif”);
images[3] = loadImage(“coin4.gif”);
images[4] = loadImage(“coin5.gif”);
images[5] = loadImage(“coin6.gif”);
images[6] = loadImage(“coin7.gif”);
images[7] = loadImage(“coin8.gif”);

images[0].resize(64, 64);
images[1].resize(64, 64);
images[2].resize(64, 64);
images[3].resize(64, 64);
images[4].resize(64, 64);
images[5].resize(64, 64);
images[6].resize(64, 64);
images[7].resize(64, 64);

}

void draw(){
background(background);
noStroke();
currentFrame = (currentFrame+1);
for (int x = 0; x < width; x+= images[0].width) {
image(images[(currentFrame) % numFrames], 150, 100);
image(images[(currentFrame) % numFrames], 150, 200);
image(images[(currentFrame) % numFrames], 150, 300);
image(images[(currentFrame) % numFrames], 150, 400);
image(images[(currentFrame) % numFrames], 150, 100);
image(images[(currentFrame) % numFrames], 150, 200);
image(images[(currentFrame) % numFrames], 150, 300);
image(images[(currentFrame) % numFrames], 150, 400);
image(images[(currentFrame) % numFrames], 250, 100);
image(images[(currentFrame) % numFrames], 250, 200);
image(images[(currentFrame) % numFrames], 250, 300);
image(images[(currentFrame) % numFrames], 250, 400);
image(images[(currentFrame) % numFrames], 350, 100);
image(images[(currentFrame) % numFrames], 350, 200);
image(images[(currentFrame) % numFrames], 350, 300);
image(images[(currentFrame) % numFrames], 350, 400);
image(images[(currentFrame) % numFrames], 450, 100);
image(images[(currentFrame) % numFrames], 450, 200);
image(images[(currentFrame) % numFrames], 450, 300);
image(images[(currentFrame) % numFrames], 450, 400);
fill(21, 67, 170);
ellipse(175, 425, 100, 100);
ellipse(175, 125, 100, 100);
ellipse(475, 425, 100, 100);
ellipse(475, 125, 100, 100);
ellipseMode(CENTER);
ellipse(mouseX, mouseY, 100, 100);
fill(255, 255, 255);
textSize(16);
text(“score:” + score, 25, 25);
}
if (keyPressed == true) {
score++;
}

}

void display(){
fill(255);
}

Reflection:

At first, I imagined it would be boring and relatively easy to do, but it proved out to be quite a challenge because at first, while coming up with concepts, I was thinking all the ideas we’re coming up with are pretty easy to set up and test, but when we got to actually deciding on an idea (the second coin run, sonic the hedgehog inspired), we realised that we overcomplicated our design past the functionality of the application (gifs in processing), so we had to come up with a workaround to that. Besides that, the coin collecting method didn’t really work, and as we ran out of time (and we wanted to test the application properly), we had to wizard of oz that too, increasing the score of a player with the press of a button (white the mouse followed the player’s position to hide currently picked up coins).

While coding we found out that a lot of things that seemed easy on paper turned out to be had to do in a small period of time and as we did not have the time available until the testing, we had to work around with what we already had. The finished prototype is pretty messy, as we did not use arrays for the coin placement, but it works, and that’s what mattered for the sake of this experiment.

Continued in Week 8.

Week 8

Testing result:

 

direct link: https://www.youtube.com/watch?v=R5fHav8-_iQ&feature=youtu.be

Finished product testing example attached below. Thanks to Martin Havelka for helping us demonstrate the concept.

Done with the help of Processing by myself (Vlad Ciutacu) and Jeroen Nijkamp.

Conclusion

We spent more time than we expected to on getting the actual coins to spin and be placed correctly in order for the user to be able to pick up most of them, and we only got the coin-collecting mechanism figured out before actually testing it, which made the Wizard Of Oz experience more interesting – although we got it to work using workarounds, the experience for the user was definitely entertaining, while it kept him focused on keeping his balance and scoring as many points as possible.

Reflection

Because the coins were not actually disappearing (they were simply being overlayed by an ellipse which was following our wizard’s mouse cursor) the scoring mechanism had to also be faked, so we set the program up so by pressing (or holding) a button, the score increases, which was a quick workaround (and a second task for the wizard).

If I were to do it again, I would certainly do things differently. I would go back and try do it again in the original way as we planned it, with randomly spawning coins (like in Snake). We also didn’t get to play around with mapping our prototype until recording the video, and the mapping stretched out the program a lot and some elements were either unreachable or not visible because of the balancing stones being in the way of the projection. Having time to experiment with how the image is being projected on the floor definitely would have made the overall product different, although I am satisfied with our concept and our execution of “faking it till you make it”.