Rain- week 2

reference video

For my movement-in-nature example, I focused on rain falling in wind. I like rain because it looks simple, but it is actually full of micro rules. It accelerates because of gravity, it gets pushed sideways by wind, and it never falls in a perfectly clean line. It feels alive even when nothing “exciting” happens.

My goal was to give the rain a personality through behavior only: steady, determined drops that do not freak out. Even when you move your cursor hard left or right, the rain will lean but it will not speed up. It is stubborn in a calm way.

Rules I used

  1. Each raindrop has a velocity and an acceleration.

  2. Acceleration acts like steering, not like speed boosting.

  3. After applying acceleration, I force the velocity back to a constant magnitude so every drop keeps the same speed.

  4. Cursor movement creates wind direction, but the wind eases in and out so it feels natural, not like a switch.

  5. Mouse click adds more drops, it does not change the physics.

Code highlight I am proud of

This is the moment where the whole concept becomes real. I let acceleration steer the motion, then I “lock” the speed so nothing can accidentally accelerate out of control:

update() {
// acceleration steers direction
this.vel.add(this.acc);
// constant speed ALWAYS (prevents mouse from “speeding it up”)
this.vel.setMag(SPEED);this.pos.add(this.vel);
}

This is basically my “thesis”. The rain can have mood and direction changes, but it stays consistent. It feels grounded.

Embeded sketch

Reflection + future improvements

I love how it turned out honestly

What worked:

  • The constant speed constraint makes the sketch feel controlled and intentional. Even when the wind changes, it stays believable and not chaotic.

  • The eased wind makes interaction feel like a real force building up, not a sudden game mechanic.

  • The click-to-add drops changes the “weather intensity” without breaking the physics.

What I would improve next:

  • Depth: Add a second layer of drops that are thinner and slightly slower, so it feels like near/far rain.

  • Gust behavior: Instead of mapping wind directly to mouseX every frame, make occasional gusts that ramp up and decay, then let the cursor influence gust direction.

  • Splashes: When drops hit the bottom, spawn tiny splash particles for a few frames.

  • Performance polish: Use an object pool for drops so we reuse drops instead of constantly adding new ones when clicking.

 

Leave a Reply

Your email address will not be published. Required fields are marked *