Initial concept
I initially wanted to make a top-down shooter game, I designed a lot of stuff, a collision algorithm for the bullets, obstacles, and enemies, a multitude of weapons with special traits, power ups, an infinitely-expanding map, and a bunch of other interactive elements. I got really frustrated with the implementation and gave up on the idea. I came back a day later and didn’t know whether I should abandon the game or not, so I changed to code to make it a horizontal shooter game,and below is where i reached, before completetly abandoning the idea, even though I had almost all the logic and algorithms implemented, I just couldn’t work with a project a didn’t love.
Hence the delay of submitting this assignment. 
Current concept
I woke up 2 days after, I saw a spider on top in some corner no one goes to in my house with a small net. I decided it to befriend it and I called it Webster.
This sparked an idea in me, which is to make a game of a spider swinging around the world with a web. Then I drew my initial concept.
The most frightening part
This would probably be the implementation of gravity and the physics of the web/rope. I already implemented them though.
class Spider {
constructor(x, y) {
// store position & velocity in p5 vectors
this.pos = createVector(x, y);
this.vel = createVector(0, 0);
// spider radius = 15 is used for collisions
this.radius = 15;
// track if spider is attached to rope or not
this.attached = false;
}
update() {
// apply gravity each frame
this.vel.add(gravity);
// if spider is attached, we do some rope physics
if (this.attached && ropeAnchor) {
// figure out how far spider is from anchor
let ropeVec = p5.Vector.sub(ropeAnchor, this.pos);
let distance = ropeVec.mag();
// only if rope is stretched beyond rest length do we apply the spring force
if (distance > ropeRestLength) {
let stretch = distance - ropeRestLength;
// hooke's law, f = k * x
let force = ropeVec.normalize().mult(stretch * ropeK);
// add that force to our velocity
this.vel.add(force);
}
}
// apply damping (which is basically air resistance)
this.vel.mult(damping);
// move spider according to velocity
this.pos.add(this.vel);
}
show() {
// draw the spider sprite instead of a circle
push();
imageMode(CENTER);
image(spiderImg, this.pos.x, this.pos.y, this.radius * 2, this.radius * 2);
pop();
}
}
