Salem Al Shamsi – Assignment 10

Al Ghawwas — The Pearl Diver

Concept

Before oil, the Arabian Gulf had pearls. Every summer during Al Ghous Al Kabir (The Big Dive), fleets of wooden Dhows sailed out while divers plunged to the seafloor with nothing but a nose clip, a collection bag, and Al Zubail, a stone weight tied to the leg to help them sink. The only thing connecting them to the surface was Al Yada, a rope held by a crew member on the Dhow.

This sketch simulates that dive. The player controls a pearl diver descending from a Dhow into the Arabian Gulf, collecting pearls from the seabed before their breath runs out. The visual concept came from Xavi Bou’s Ornitographies, making invisible motion visible. Here, the diver’s path through the water is the thing being revealed.

Sketch

Code I’m Proud Of

The most interesting part is how forces stack underwater. Three things push against each other every frame:

// Dive toward mouse
Body.applyForce(diver, diver.position, { x: fx, y: fy });

// Tidal current fights you sideways
Body.applyForce(diver, diver.position, { x: currentX, y: currentY });

// Oxygen drains faster the deeper you go
let depthDrain = map(diver.position.y, MIN_DIVER_Y, 578, 0.1, 0.22);
oxygen -= depthDrain;

None of these forces work alone, they fight each other. That tension is what makes the dive feel hard, which felt true to the history. The current also shifts direction every few seconds, so the player can never fully settle.

Process and Challenges

The sketch was built in stages, each one adding a new layer of physics or visual detail.

Phase 1 — Engine and water

Just the physics engine running inside p5.js. Nothing moves yet, just proving the two libraries work together.

Phase 2 — First bodies: seafloor, dhow, diver

A circle for the diver, a rectangle for the seafloor, and one for the Dhow. The diver falls under gravity and lands on the floor. No control yet, just physics bodies existing in the world.

Phase 3 — Forces: buoyancy and diving

Gravity is turned off. Everything is now controlled through applyForce. Buoyancy pushes the diver up every frame. Holding the mouse pushes it toward the cursor. This is where it first felt like something underwater.

Phase 4 — Rope, Collision Events and Pearls

Oyster shells added as sensor bodies. A collisionStart event fires when the diver touches one, spawning a glowing pearl. The rope connects the diver to the Dhow using manual distance math, drawn as a bezier curve. A top boundary stops the diver from floating above the water surface.

Phase 5 — Final

Already embedded above. The final version added everything that made it feel like the Gulf: the drawn Dhow with sail and rigging, the pearl diver figure with Al Zubail stone weight, gradient sky, animated wave surface, sun, clouds, fish, seaweed, bubbles, splash on water entry, the two phase return journey, oxygen system draining faster with depth, and shifting underwater currents that push the diver off course every few seconds.

Reflection

What surprised me was how much the history shaped the design. The rope length, the oxygen mechanic, the stone weight, these are not decorative details. They are the actual constraints real divers worked within. Simulating even a simplified version of them made the difficulty feel earned, not arbitrary.

Things I would add with more time: varying pearl depths, a multi dive scoring system, and an automatic rope pull mechanic like the real Al Seib, pulling the diver up whether they are ready or not.

References

 

Leave a Reply

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