Amal – Midterm: Proliferate

Project Overview

Phases of the Bacterial Growth Curve

Proliferate is a generative visual system inspired by the behavior of bacteria growing inside a petri dish. The project explores how simple rules of division, movement, and environmental influence can produce complex and aesthetically varied visual outcomes. The system simulates colonies that expand outward in generations, referencing the biological process of binary fission, where organisms divide and multiply over time.

The composition is centered around a circular dish that frames the interaction space. Within this space, colonies emerge, expand, and drift, creating layered visual trails. While the initial intention was to simulate a blooming effect similar to organic growth patterns, this proved difficult to achieve. I attempted to incorporate molding behavior based on feedback from a project check-in, but this was only partially successful. Instead, the system evolved toward a balance between structured growth and organic motion.

The project is designed to feel slightly gamified. Users can interact with the system by introducing new colonies and adjusting environmental conditions in real time, which directly influence how the system evolves visually. The name Proliferate comes from the rapid division of bacteria and reflects the way visual elements multiply across the canvas.

Generative System Design

The system operates through interactive and evolving states rather than fixed outputs. Each interaction produces a different visual result, ensuring variation across compositions.

These variations are driven by:

  • User interaction through mouse input
  • Adjustable environmental parameters
  • Generational growth of colonies over time

Each colony grows in stages, where the number of cells doubles with each generation. This creates radial formations that feel structured, while the movement of individual cells remains fluid and unpredictable.

The system combines multiple techniques:

  • Noise-driven motion to create organic wandering behavior
  • Force-based movement, including attraction and damping
  • Generational expansion using exponential growth patterns
  • Real-time parameter mapping through interactive controls

Together, these elements create a system that balances control and unpredictability.

Interaction and Environmental Controls

The system includes four sliders that act as environmental conditions influencing the behavior of the colonies. These are designed to feel like variables within a biological system.

Energy increases the movement of the cells. It can be understood as adding nutrients to the environment, causing the bacteria to become more active and spread further.

Growth controls how many times a colony divides. Higher values create dense and complex formations, while lower values result in minimal structures.

Air affects the speed of movement by influencing how quickly the noise changes. Higher values create more chaotic and dynamic motion.

Pull controls how strongly cells are drawn toward the center of the dish. Increasing this value creates tighter clustering, while lower values allow the system to expand outward.

These controls allow the user to experiment with different “conditions,” producing a wide range of visual outcomes from calm and contained to chaotic and dispersed.

Implementation and Process

This project builds on an earlier midterm progress version, which initially explored generative motion without a strong structural system. In that version, the movement had a more fluid and wiggly quality, creating trailing, tail-like forms that I found visually interesting. However, this behavior relied on continuous accumulation and became a major performance issue, causing the system to lag significantly over time.

Additionally, the particles were not constrained within a defined boundary, so they would drift across the entire canvas rather than staying within the petri dish. While this created more chaotic and expressive visuals, it further contributed to performance issues and reduced control over the composition.

Because of these limitations, I shifted toward a more structured approach. The updated system constrains all movement within the dish and introduces a generational growth model, which significantly improves performance and stability. As a result, the system feels less laggy and more controlled.

Through iteration, the work developed into a more defined system centered around colonies and generational growth. Instead of relying purely on continuous motion, I introduced a structured expansion model where colonies grow outward in rings, allowing the system to remain stable while still feeling dynamic.

Each colony consists of cells arranged in expanding rings. These cells maintain a base position but are continuously influenced by motion and forces, allowing them to shift, drift, and create layered visual traces over time without overwhelming the system.

A key challenge was attempting to replicate organic blooming or molding behavior. While I explored this direction and attempted to implement it based on feedback from a project check-in, the result was not fully realized within the timeframe. This led to a shift toward a hybrid approach that combines structured radial growth with organic motion.

While the current system is more stable and responsive, it does feel slightly less visually expressive than the earlier version. However, this trade-off allowed for a more reliable and interactive experience. I believe there is a way to achieve both performance and richer organic behavior, but I have not fully reached that solution yet.

The interface was intentionally kept minimal and clean to prioritize the visuals. Buttons for restarting, saving, and toggling information were designed to feel simple and unobtrusive, supporting the interaction without distracting from the system itself.

Sound is triggered when a new colony is introduced. The audio was sourced from freesound.org and adds a subtle layer of feedback to the interaction, reinforcing the moment of activation within the system.

The project evolved significantly from its initial version. Early experiments focused on movement but lacked compositional clarity and structure.

Key developments include:

  • Introducing generational growth patterns
  • Adding environmental controls through sliders
  • Establishing a clear composition using the dish as a boundary
  • Refining motion through the combination of forces and noise

Although the original goal of achieving a blooming effect was not fully met, the current system reflects a stronger balance between control and emergence.

Final Outputs

 

The following images represent selected outputs from the system:

High energy and growth settings produce dense, overlapping colonies, with movement constrained within the petri dish boundary.
Lower energy and growth settings produce sparse, evenly distributed colonies, with movement constrained within the petri dish boundary.
Moderate energy and growth settings produce a balanced colony distribution, where controlled movement and expansion create a layered yet readable system within the constrained dish.
Reflection

Proliferate demonstrates how simple behavioral rules can generate complex and visually engaging systems. The combination of structured growth and dynamic motion creates a space for continuous variation, where each interaction produces a unique outcome.

One of the strongest aspects of the project is the ability to control environmental conditions in real time. This encourages experimentation and allows the user to actively shape the visual result.

Future improvements would focus on developing more convincing organic behaviors, particularly in relation to blooming or molding, as well as expanding the system to include additional modes of interaction or evolution over time.

References and AI Disclosure

Inspirations:

  • Bacterial growth and binary fission
  • Petri dish cultures and laboratory environments

Sound:

  • Audio sourced from freesound.org

AI Disclosure:
AI tools were used as support throughout the development process, primarily for debugging, refining specific parts of the code, and understanding how certain behaviors could be implemented more effectively. AI was also used to help improve the interface design, including the structure and responsiveness of buttons and controls.

All core ideas, system design decisions, visual direction, and experimentation were developed independently. AI functioned as a technical aid rather than a generator of the project itself.

Leave a Reply

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