Week 5 – Midterm Progress

Concept:

For my midterm project, I thought of doing a theater management experience. This idea stems from our assigned Crawford reading on interactivity. Crawford argued that activities like reading a book or theater are not actually interactive. A person can only react to them. I decided to do this experience not as a counter to his argument, but rather to give the commoner a playful way to interact with the theatrical world by stepping into the shoes of a stressed director. To be honest, coding this small game is by far the most time-consuming and complex coding I have done so far. At first, I was so full of ideas that I was finding it difficult to ground myself. This is when I came up with my colorful pens and paper. Believe me, this traditional mind-mapping method does wonders! I was able to make a game plan of what I wanted and could do.


Since it was very intimidating to code everything at once, I divided the task into different levels. I started off by making the cover and the 3 sub-games. This way, I did not have to scroll endlessly to find particular snippets of code, and I could debug instantly. Also, seeing some working parts of my code gave me more confidence in my work. However, as of now, I do have 4 different p5 windows. (Sorry if this is making the blog post long.)

Embedded Sketch:

1. Game Cover:

2. Wires Game:

3. Tears Game:

4. Script Game:

The Process:

To save time and focus only on the small games that I wanted to do, I opted to generate my backgrounds using Claude and my characters using pixler.dev (Link – an online tool for generating game characters and props). As for the sound effects I have used so far, I downloaded them from an online library called ‘Pixabay’ (Link). Now, coming to my code, I am really proud of my progress so far. I focused more on polishing my little games (and I have been able to add sound!) I learnt to use new functions like ceil and blend as and when I encountered a few problems. Crucially, I am happy that I was able to implement loops and nested ifs. Here are some code snippets:

This is from the wire game.

function mouseReleased() {
  if (DraggingWire != -1) { //checking if the mouse was let go on a right terminal
    for (let j = 0; j < 4; j++) {
      if (dist(MouseXPosition(), MouseYPosition(), WireRightX, WireY(j)) < 40) {
        if (RightOrder[j] == DraggingWire) {
          ConnectedWire[DraggingWire] = true; //checking matching colors
        }
        else {
          WireTimeLeft = WireTimeLeft - 2; //wrong color costs 2 seconds
        }
      }
    }
    DraggingWire = -1;
  }
}

And this one is from the tears game (after countless crashouts, actual tears and trial and error).

if (TearResult == "playing") {
  //timer
  TearTimeLeft = TearTimeLeft - deltaTime / 1000;
  if (TearTimeLeft <= 0) {
    TearTimeLeft = 0;
    finishTears(false);
  }
 
  //a new tear every half second
  if (frameCount % 30 == 0) {
    Tears.push(new Tear(random(20, Width - 20), 0));
  }
 
  //the tissue follows the mouse
  TissueX = constrain(MouseXPosition(), TissueW / 2, Width - TissueW / 2);
 
  //check if the tear was caught or missed
  for (let i = Tears.length - 1; i >= 0; i--) {
    Tears[i].update();
    let caught = Tears[i].y > TissueY - 15 && Tears[i].y < TissueY + 15 & abs(Tears[i].x - TissueX) < TissueW / 2;
    if (caught) {
      CalmLevel = CalmLevel + 7;
      Tears.splice(i, 1); //the tissue caught it, so the tear disappears
    }
    else if (Tears[i].y > Height) {
      CalmLevel = CalmLevel - 4
      Tears.splice(i, 1); //it fell off the bottom, so removing it
    }
  }
  CalmLevel = constrain(CalmLevel, 0, 100);
  if (CalmLevel >= 100) {finishTears(true);}
  else if (CalmLevel <= 0) {finishTears(false);} //the calm bar ran out before the timer
}

Reflection:

The next step is to create the backstage scenario where all the problems will be, merge all my code, and work on the final show. As I am writing this sentence, I am realizing how much more work my project is demanding. I also remain a bit worried about whether all my uploaded files will slow down the interface once I merge the code. But, well, I am determined to have a fully working midterm project in one more week. And I believe my strong-will will indeed keep me going.

Leave a Reply