INDIGO, my master's thesis project, is a digital tool designed for creating generative content using a rule-based iterative approach similar to production systems like shape grammars or L-Systems. What sets INDIGO apart is its operation on objects, known as Nodes, rather than shapes or ASCII symbols. Nodes store data, while the Rules contain all the logic, enabling complex behaviors to be broken down into smaller, manageable pieces that can be assessed per Node.
Designed as a creative tool, INDIGO aims to foster experimental workflows by emphasizing creative choices over technical details. Built entirely by me, from concept to final tool, it features a user interface inspired by modular synthesizers, aiming for an enjoyable user experience. By exposing all critical parameters of the generators on a single interface layer, it minimizes the need for navigating sub-menus. This design encourages experimentation with the parameters, as they remain in the user's direct focus and are non-destructive by nature.
Throughout the development process, I delved deeply into procedural generation, gaining insights into its technical foundations like noise functions and model representation. INDIGO was a unique opportunity to combine my passions for 3D procedural generation, graphic design, UX, and programming. I wrote all the original code and used the Unity game engine for its robust rendering capabilities while incorporating external packages to add functionalities I didn't have time to code from scratch.
As part of my master's thesis, I also created three books showcasing my work and the theoretical backgrounds that underpin it. These books serve as both documentation and a deeper exploration of the concepts behind INDIGO.
INDIGO has more design flaws than I could list here, and development was a crunching hell. But it's still the best project I’ve ever realized, holding so many ideas, concepts, and implementations that I'm incredibly proud of. When I ever get the time (which will probably be when I retire), I really want to revisit and rewrite it.