Midterm Project – Draft

Midterm project – progress

Concept and design:

For my midterm project, I want to create a game where the player has to repair a broken control system. The system’s memory and navigation are corrupted, so the player has to complete different challenges to slowly restore it. The game includes number-pattern questions, arrow-key navigation tasks, and a final stage with many moving colored balls where the player has to figure out what to do by paying close attention. The player also has a battery that starts at 100%, and wrong answers lower it. Visually, I want the same control-panel background to stay throughout the game so it feels like the player is working inside one damaged system.

User Interaction and Code Design:

The player will interact with the game using the mouse and arrow keys. I will use the mouse for choosing answers, pressing buttons, and selecting objects, while the arrow keys will be used for the navigation challenges. Hints will also be available when the player needs help. I plan to organize the code using different stages for each part of the game, such as the start screen, memory tests, navigation challenges, final challenge, win screen, and restart screen. In the final round, there will be many moving colored balls, and I want to use a class so that each ball can have its own position, speed, size, and movement.

For the background, I first looked at an image of a control panel to help me decide the overall style I wanted. I then sketched out how I wanted the screen to be arranged, after that I used AI to help create the final control panel image that I plan to use as the background for the experience, images I gave AI:

Sketch I did

final image:

Risk Prevention:

One part I was unsure about was whether the scanner that suppose to help the user get the answer work well enough . Since the scanner is one of the main ways the player explores the screen, I wanted to make sure the movement felt smooth and that the user could control it easily. I tried making a small test sketch first where a circular scanner moves up, down, left, and right using the arrow keys. This helped me check that the interaction worked before adding it to the full experience.

Here is the code I used to test it:

Another risk I identified is that the final page with the moving balls could be too difficult for the player. I still want it to be challenging, but not impossible to figure out. To reduce this risk, I plan to make the answer noticeable enough if the player watches carefully, and I will also include hints they can use if they get stuck. However, using too many hints will lower the battery percentage.

This is how the start page will look like:

how the challenge questions will look like:

 

W5 – Midterm Progress

Concept

My birthday is coming up soon, and I’ve been spending a lot of time looking through old photos of myself and reminiscing about when I was younger. This inspired me to create a game about going down memory lane and reliving memories from different ages.

In the game, the character “hops” onto each birthday cake and explores the different objects on it. Each object represents a memory from that age. When the character reaches an object (for example a plane) a short piece of text appears explaining the memory connected to it.

Design

The game is structured around different birthday cakes that represent important ages in the character’s life. Each cake has the same overall visual style, but the number of candles, background colour, and objects change depending on the age. The character moves across the cake and interacts with different objects, with each object representing a specific memory from that stage of life. When the character reaches an object, a short piece of text appears describing the memory.

This is the color palette I chose. I used soft pastel colors to create a nostalgic, playful feeling and reflect the innocence and simplicity of childhood.

Sprite sheet created using the help of AI.

Uncertainties

I think I might face difficulties with how the character will move around the cakes and how the memories will appear when an object is reached. I am also unsure about how to connect the different ages smoothly so that the game feels like one continuous journey. Another challenge will be finding the right balance between gameplay and storytelling, as I want the game to be interactive without taking away from its nostalgic and personal feeling.

Actions to minimize risk

I will plan the game before developing it and test each part as I go. I will start with simple character movement and interactions before adding more complex features, so any problems can be fixed early. I will also keep the number of memories and animations limited so the project remains manageable.

 

 

Reading Reflection

What I found most interesting about this reading was how different computer vision is from human vision. Humans can understand what they are looking at naturally, while computers only see pixels and need specific techniques to find meaning in an image. I also liked the idea that the physical environment can affect how well computer vision works. Things like lighting, contrast, and the background can make it much easier for a computer to detect what it is looking for. This made me realize that designing an interactive experience is not only about the code, but also about designing the environment around it.

One thing I will take away from the reading is that computer vision can make interactions feel more natural by allowing people to use their bodies and movements instead of traditional controls. However, its ability to constantly track people also makes me think about the difference between interactive art and surveillance, especially when people may not realize they are being observed.

Reading Reflection 4

Reflection:

What I got from this reading was that my body my own body can be an intertface you know? Like I think the thing that stuck with me the most was that the section on Videoplace and that was because the participant didn’t need a controller, keyboard or a mouse, their silhouette, posture and their movement itself became the input and the system responded by creating graphics around them. I think that is such, such a different way of thinking about interaction because the computer isn’t just something waiting for me to click now, its watching where I move, how I move and its reacting to me.

And this made me think about games again, I know you might say Oh Hamad  you talk alot about games but I really do think you can compare them to everything. Like I really have liked the way games make me physically involved instead of just pressing buttons. Like the readings talks about interactions where a persons silhoutte can touch or even overlap or even reflect virtual objects which almost makes it seem like the body is another controller.

Week 5 – Midterm Project Progress

Golden Goal

My Concept

For my midterm project, I decided to make a football penalty game because football is something I really like. My main inspiration came from a game I used to play in my childhood called Penalty Shootout Multi League from Friv. I liked how the game allowed the player to take penalties against a goalkeeper, so I wanted to develop my own simpler version using p5.js and the programming concepts we learned in class throughout the last 5 weeks.

I did not want to exactly recreate the original game, so I added some of my own ideas to make it more challenging and interactive. The player has five attempts, and they only have five seconds to take each shot. If the player does not shoot before the timer finishes, the attempt is lost. The goalkeeper also moves quickly from left to right, which makes choosing where and when to shoot more difficult.

My other own addition is the “golden chance.” On the fifth and final attempt, a golden target appears inside the goal. If the player hits this target, they receive two points instead of the normal one point. I wanted the final attempt to feel different and more important than the earlier attempts.

User Interaction

The experience starts with an instruction screen that explains the rules. The game waits for the player to click before it begins. During each attempt, the player clicks on the position where they want to shoot the football. The ball then moves from the player toward the selected position while a kicking sound plays. The player must think about the goalkeeper’s position and shoot before the five-second timer ends. A normal goal gives one point, hitting the goalkeeper results in a save, and clicking outside the goal results in a miss. During the last attempt, the player can aim for the golden target to receive two points.

After all five attempts, the game displays the player’s final score. The player can click again to start a new session without refreshing or restarting the sketch.

Code Progress

So far, I have created the instruction screen, main game screen, and final score screen. I used a variable called screenNumber with conditional statements to decide which screen should be displayed. The values 0, 1, and 2 represent the instructions, game, and final score.

I also created a separate file called Ball.js for my Ball class. The class stores the ball’s position, destination, speed, and whether it is currently moving. Its functions allow the ball to shoot, move, display its image, and return to its starting position.

I used an uploaded transparent football image for the ball and added an MP3 sound that plays whenever the player shoots. The football field, goal, goalkeeper, and player are currently made with basic p5.js shapes. The goalkeeper moves left and right using a speed variable and conditional statements that change its direction.

For the positions of the game objects, I used width, height, width / 2, and height / 2, which helps keep the game properly positioned when the size of the browser changes.

Most Uncertain Part

The most uncertain part for me was making several parts work together at the correct time. The ball must move toward the mouse position, the goalkeeper must continue moving, the timer must decrease, and the game must decide whether the shot was a goal, save, miss, or golden goal.

To reduce this risk, I started testing these important parts early. I used the dist() function to check the distance between the ball and goalkeeper and between the ball and golden target. I also tested the timer by starting it at 300 because draw()normally runs about 60 times per second, making 300 frames around five seconds.

Separating the ball into its own class also helped me organize the program. Instead of putting all the ball code inside the main sketch, I can control it using functions such as:

ball.shoot(mouseX, mouseY); 
ball.move(); 
ball.display(); 
ball.reset();

These tests helped me make sure that the main idea of the game is possible before spending more time improving its appearance.

Plans Before the Final Draft

Before the final draft, I would like to improve the designs of the player and goalkeeper so that they look more like football characters. Right now, they are intentionally simple and made from basic shapes because I first wanted to make sure the gameplay worked. With more time, I would like to add more detail and improve the kicking movement.

I also want to add more sounds. Right now, I have a kicking sound, but I would like to add background stadium and fan noise. If the player scores, the fans could cheer, and if the player misses or the goalkeeper saves the shot, the fans could whistle. This would make the result of each shot clearer and make the game feel more interactive.

I would also like to keep adding creative ideas as they come to me. For example, I could improve the instruction and final screens, change the visual appearance of the golden target, and possibly add different difficulty levels. I think the more creative details and reactions I add, the more interactive and enjoyable the final game will become.

Assignment 5 – Midterm Mockup / Idea

Midterm Idea – One Piece Map

Concept:

My midterm is a game called Uncharted. It grew out of my Assignment 3 piece, a generative sea chart where a ship sails from island to island and draws the route behind itself as it goes. Every run gives you a completely different sea, and once I had that working I kept thinking it was already most of a game that nobody was playing.

I am a big One Piece fan and that is where the idea came from, a sea nobody has mapped and a crew crossing it island by island. You set sail, the ship charts a sea that has never existed before, and something is guarding every island. Beat what is guarding it and the way to the next island opens.

Design:

The whole thing is drawn to look like an old nautical chart. Parchment colour, faded stains on the paper, tiny dashes for open water, a compass rose in the corner and a double line border. Each island is about twelve elipses going over eachother instead of just one shape, cause I figured out from Assignment 3 that if you overlap enough circles the outline will stop looking like circles and start reading like a coastline, then deeper into the island, etc.

For this draft I mostly built the main menu, since the brief says the experience has to start with a screen that gives instructions and waits. Three screens work so far: the menu, a how to play page, and the map.

What I am happiest with is that menu is there and the ship is sailing in the background kind of like a loading screen or something you’d see in an actual game. The title uses a real One Piece display font and everything else uses Metamorphous. I tried the menu in a few fonts first, but they didn’t work out so I just stuck with these two.

Assignment 5 - One Piece Map - How to Play Screen
Assignment 5 – One Piece Map – How to Play Screen

This is a basic how to play screen, but what I plan to actually have it as is like an intro and a story and everything but I made something, very, very ,very basic for now.

This is the structure I have in mind:

    1. Main menu (title, Set Sail, How To Play)
    2. How to play screen (explains the game) with a back button
    3. The map, where the ship sails island to island
    4. A fight when the ship reaches an island
    5. Win or lose screen with a play again button

Uncertainties:

I have not decided what the fight is. There is a monster on every island and beating it opens the next route, but the rest is open. One version is clicking the monster a set number of times before a bar runs out, which is simple and would work. The other is the monster throwing things while you move the ship left and right to dodge, which is more fun and a lot more to build, and it needs collision detection, which I have not done before. I will probably build the clicking one first so there is something playable, then upgrade it if I have time.

I also do not know whether the player should steer the ship. Right now it sails on its own, which looks good and is where the character of the Assignment 3 piece comes from, but between fights the player has nothing to do. I would rather keep the self sailing and hand over control only during a fight.

There are three things I want in it that I have not started yet. I want the player to build their own character at the start instead of being handed one, and to design their own flag, which would replace the little red triangle already flying on the ship’s mast. The third is the monsters. I want them generated the same way the islands are, out of rules rather than me drawing each one by hand, so you do not know what is waiting on an island until you reach it. That would also mean the fights stay different after you have played a few times, which the map already manages and the rest of the game does not.

Resources:

Loops example from Class
Loops and Arrays from Class
Another Loops example from Class with Arrays

One Piece manga font

Metamorphous on Google Fonts

MDN: the for statement

MDN: return

MDN: comparison operators

BRO CODE!!!! – i love this guy so much, his videos have helped me so much not just with java but with coding in general this guy is amazing.

Buttons

Week 5 Midterm progress

Concept

For this project I decided to explore the unconventional. I thought of making a parody horror game, where the ghost is the one being chased. Here is the twist: the ghost isn’t really a ghost, but is a boy with a sheet on his head and the “monster” chasing him is his mom. She is annoyed with him not picking up his laundry,  so she is running after him. The story is pretty self-explanatory from here on – he doesn’t have clothes and that is why he is wearing the sheet on his head instead. The aim is to pick up all the clothes without being caught.

In the background ominous music is playing to add on to the tension and is actually the only scary part. A swoosh sound is implemented for the “folding” of the clothes. Different sounds play when the user wins, loses and before the game begins.

Design

Using ProCreate I drew the characters how I imagined them. I started working on how the clothes will look also. The environment around them could change depending on the mode chosen in the beginning, but the aim stays the same. The mom is purposefully made to resemble me as a way to add personalisation.

 

After drawing my character I asked AI to turn them into sprite sheets.

Challenging aspects

  • Switching between the different modes might be hard to execute. I am thinking that it will significantly slow the process.
  • Drawing the different environments, clothes, change of screens. This is a challenge to myself, because I want to draw every single detail by myself. When it is something that could be drawn digitally, I would be taking this opportunity, completely avoiding the use of images from the Internet. This way the game will really feel like my creation + I am one of the main characters.
  • Dealing with two different sprite sheets. This is frightening to me because this will be my first time working with sprite sheets and I have to do it twice.
  • The characters going outside the screen.

Risk prevention

  • Two (or more) layers to keep the different scenes from merging. For now this is enough, because otherwise the game and the aim stay the same.
  • I will be making the drawings the moment I think of them, so as not to forget my ideas or will be writing a plan if unable to draw them immedeatly.
  • For the sprites I will do them separately to give them different speeds.
  • I will give them constrains for the width and height, so they do not escape.

AI use

As previously mentioned, AI was used to make sprite sheets in png for the characters I drew.

Reading Reflection Week 5

Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers

I guess I always figured that the way computers “see” things was a very complex system, but it was only until I read this that I realized all the work and how far we’ve come in regards to computer “vision”. I even remembered when I was little and would play with my family using the Xbox Kinect. It would be so awesome to use this for projects.

  • What are some of the ways that computer vision differs from human vision?
    Computer vision is different in the sense that, it doesn’t automatically understand what it sees. When a person sees something they can immeadiately distinguish between different objects, while a computer cannot.
  • What are some techniques we can use to help the computer see / track what we’re interested in?
    Some techniques are based on detecting different things, like motion, brightness, and presence. They detect whether pixels have changed between frames or substract a previously established background to excract any changes from said background, etc.
  • How do you think computer vision’s capacity for tracking and surveillance affects its use in interactive art?
    I think that computer vision is a key element in interactive art’s future, being able to track a person’s movements makes way for endless possibilities in the field, but when applied to other fields, such as its use in surveilance (like the Flock cameras) proposes ethical and moral questions that, although valid, innevitably delay advancements in these technology. It’s a shame, but at the same time, these ethical dilemmas are definitely worth having.

Week 5 Reading Assignment – M7md

One thing I found interesting about the reading was the difference between how humans and computers see. I was not completely surprised that computer vision has more limitations because, at the end of the day, computers interpret information numerically. Even when we write code using programming languages, it eventually has to be translated into something the computer can process. What I found more interesting was the idea that instead of only improving the algorithm, we can change the physical environment to make it easier for the computer to see. Techniques such as background subtraction, brightness thresholding, and frame differencing depend on things like contrast, lighting, and movement. Computer Vision for Artists and… At first, I wondered how changing the environment would help when the computer still has to translate what it sees into data either way. However, I think the point is that these changes make that data easier to distinguish. For example, making a person stand out strongly from the background gives the computer clearer differences in brightness or color to work with. I found it interesting that sometimes changing the environment can be more effective than simply making the software more complicated.

I also think computer vision creates an interesting relationship between interaction and surveillance. Tracking someone’s body can make an artwork feel much more interactive because the body itself becomes a way of communicating with the system and receiving feedback from it. I could imagine experimenting with something like this myself. I have seen a musical work where artists used Wii remotes to affect sound through their movements, and computer vision could create a similar interaction without necessarily relying on a traditional controller. At the same time, I think there is an important ethical boundary. The reading shows that computer-vision artworks can track willing participants as well as people who are unaware that they are being observed. Computer Vision for Artists and… I would be comfortable interacting with an artwork that tracks me as long as I am informed beforehand, especially if there are clear rules about what happens to the data being collected. Tracking people without their knowledge crosses a line for me, even if being unaware is supposed to be part of the artistic experience. Computer vision can make interactive art more responsive and interesting, but I don’t think creating an experience should come at the cost of the participant’s awareness or consent.

Week 5 Midterm Progress Report – M7md

Concept

For my midterm, I wanted to make something that feels more like a complete game experience rather than just a small interaction or visual experiment. I’m interested in fighting games because of how intense and dramatic the characters in those games can be.  The game characters have different strengths, the player has to react quickly and a lot of variables can influence the outcome of the game.

One game that influenced this direction is Super Smash Bros. I like how different characters can completely change how a match feels because of their movement, range, attacks and abilities Even though the basic goal stays the same, learning how a character works changes how you approach the fight. I want to take that idea of different play styles, but use my own class system and combat mechanics instead of recreating the game.

What I want the player to experience is a short but intense duel where they have to understand how their chosen class works, react to the enemy, and decide when to attack, defend, or use a special. I also want the fight to feel a little cinematic, with moments like special clashes, low-health sequences, and stronger visual effects when something important happens.

The player will choose between three classes: Knight, Rogue, and Mage.

The Knight will have high health and defense but slower movement and only close-range attacks. The Rogue will have lower health but move faster and attack at close and mid range. The Mage will have medium health, lower defense, and mainly use ranged attacks.

Each class will also have its own special attack. The Knight will use “Earthsplitter,” the Mage will use “Meteor,” and the Rogue will use “Shadow Step.”

I also want the fights to have short cinematic moments so they do not feel like a basic fighting game. These could include special clashes, low-health moments, and possibly victory animations if I have enough time. For special clashes, if two strong attacks meet, the game could briefly pause and use a timing challenge to decide which attack wins.

Design

The experience will start with a title screen asking the player to press Space. After that, the player will see the controls, then choose a class before starting the fight.

so it would look like this:

Start Screen -> Control -> Class Select -> Fight -> Win/Lose Screen -> Restart

The player will move using the arrow keys and will be able to double jump. During combat, they will have a light attack, heavy attack, block/parry, class ability, and special attack.

Blocking can be held for up to three seconds. If it is held for too long, it goes into a five-second cooldown. The first few moments of blocking will also act as a parry window. A successful parry will avoid damage, stun the enemy for two seconds, and add to the special meter.

The special meter will fill by both dealing and receiving damage, but taking damage will fill it faster.

 

Code Structure

I started by separating the fighter logic into its own fighter.js file. Both the player and the enemy use the same fighter class:

player = new Fighter(200, height - 145, "Player", false);

enemy = new Fighter(width - 200, height - 145, "Enemy", true);

The last value tells the fighter whether it is controlled by the player or by the AI.

The AI is very simple for now. It faces the player, moves toward them slowly and sometimes attacks when it gets close enough. I can make it more complex later if I have time.

Most Challenging Part & Risk Prevention

The part I was most worried about was getting the actual fighting system to work. There are a lot of things that eventually need to work together, like movement, attacks, hit detection, health, AI, different classes, blocking, and special attacks.

I did not want to work on all the visuals and class abilities first and then find out later that the basic combat was too difficult to make work. To reduce that risk, I made a very simple version of the fight first using stick figures as placeholders.

 

For now, I focused only on the main things I would need for a fight. I got movement and double jumping working, added a simple AI opponent, made a basic light attack, added hit detection and health, and made a win/lose screen that lets the player restart the fight.

One thing I specifically wanted to test was hit detection. For the light attack, I made a point in front of the fighter depending on which direction they are facing, then checked how close the enemy is to that point.

let attackX = this.x + 45 * this.facing;
let attackY = this.y - 35;

let distanceX = abs(attackX - targetX);
let distanceY = abs(attackY - targetY);

if (distanceX < 45 && distanceY < 65) {
  otherFighter.health -= this.lightDamage;
}

Getting this basic prototype working makes me more confident about continuing with the idea. It also means I can build the more complicated attacks and class differences on top of something that already works instead of trying to build everything at the same time.

Next Steps

Next, I want to start adding the actual class differences, heavy attacks, blocking and parrying, the special meter, class abilities, and the animated special attacks.

The stick figures are only placeholders for now. If I have enough time, I want to replace them with my own sprite sheets and improve the AI and cinematic effects later.