MANMEET SAGRI

← Back to Projects

IAT 265 · Multimedia Programming for Design

Honey Harvest Simulation

14+ Classes
7 States
Solo Project
4 wks Timeline

July – August 2025

Role: Programmer & Visual Designer

Tools: Java, Java Swing, Graphics2D, Figma, Sketch.io

What is it?

A goal-driven interactive simulation built for IAT 265: Multimedia Programming for Design. The project combines object-oriented programming, animation, mouse interaction, sound, and generative effects to create a playful honey-harvesting experience.

In the simulation, the player captures a queen bee using a draggable net, places her into a hive box, waits while honey brews, and then collects it using a jar. I designed the full experience myself, including the assets, interaction flow, and implementation.

The Process

Phase 1

Concept & Planning

Proposal document outlining the Honey Harvest concept and interaction flow Planning document showing key simulation elements and structure

I mapped the full interaction loop before writing a line of code: intro, hive opening, queen capture, brewing, honey collection, and restart. Each stage had to unlock the next in a way that felt guided rather than arbitrary. Identifying the main classes and state transitions early made the final system much easier to build and debug.

Phase 2

Asset Design

Honey Harvest assets and interface elements designed in Figma Additional hand-drawn simulation assets created in Sketch.io

Unlike some of my earlier projects, I created the visuals for this simulation myself from scratch using Figma and Sketch.io. This included the queen bee, worker bees, hive box, honey jar, net, start screen, and supporting interface elements.

Designing the assets myself gave the project a more personal and cohesive visual identity, and it made implementation easier because I could control the look, scale, and function of each element.

Phase 3

Core Development

Java code structure for the Honey Harvest simulation Gameplay screenshot showing the Honey Harvest simulation in progress

The project was built in Java using Swing and Graphics2D, with separate classes managing the bee system, interactive objects, interface buttons, visual effects, and the main simulation panel. I used a state-based structure to control the flow from the intro screen through to the ending screen.

Key systems I implemented:

  • 7 simulation states managed in HoneyPanel via a Swing Timer at 30ms intervals
  • 17 Java files across 4 packages: main, garden, Effects, Buttons
  • Abstract BaseButton class extended by HiveBox, Net, HoneyJar, BeeNest, StartButton, and RestartButton
  • WorkerBee extends Bee, both using 2-frame image-sequence wing animation
  • Bounding box collision via Rectangle2D.intersects() for net catching the queen
  • 8 separate Minim audio files for music, sound effects, and transitions
  • Full restartGame() method resetting all object positions, states, and audio

Phase 4

Generative Effects & Testing

Simulation screen closeup showing the beeSwarm effect Simulation screen closeup showing the honey Brew effect

The swarm effect uses a recursive fractal algorithm. Each call draws a translucent ellipse then branches into 6 children at depth 4, creating an organic burst pattern around the queen bee. Getting the depth, radius decay, and transparency right took significant iteration before it felt expressive rather than chaotic.

The brewing effect uses Perlin noise via Processing's PApplet to drive 25 golden blobs rising from the hive over 30 seconds. A sine wave overlay simulates a day and night cycle during the wait, giving the brewing stage a sense of time passing rather than just a loading screen.

Problems & Reflection

Problem

The bee swarm effect was the hardest feature to design and control.

I wanted the swarm to feel expressive and organic, but recursion was one of the most difficult concepts to translate into a visual effect. It took multiple rounds of experimentation to make the burst readable without becoming too chaotic. I worked through this by revisiting lecture and lab materials, asking my TA and professor for feedback, and refining the depth, spacing, and scale of the recursive pattern.

Problem

The brewing stage needed to feel active, not like a waiting screen.

A static delay would have made the experience feel flat, so I designed a golden brewing effect that grows over time and paired it with visual transitions and sound. This made the wait feel intentional and helped turn the brewing stage into one of the most memorable parts of the simulation.

Feedback

Designing all assets myself was flagged as a strength.

The professor and TA noted that creating original assets in Figma and Sketch.io gave the simulation a cohesive and polished identity that stood out. This was a direct contrast to my earlier Aladdin project, where I relied more on external sources. The feedback confirmed that the visual and technical work supported each other in a way that felt intentional.

What I Learned

Feedback, iteration, and experimentation made the hardest parts manageable.

This project strengthened both my programming and design confidence. I learned how to structure a multi-state simulation, manage drag-based interactions, and integrate generative techniques into a larger user experience. More importantly, it showed me that challenging concepts like recursion become much easier when I break them down, seek feedback, and keep iterating.

Watch the Full Simulation