Stories and imaginary worlds, as we traditionally imagine them, are hand-crafted, populated painstakingly by authors or designers. What happens if, instead, we observe narrative agents in a persistent virtual space? Can happy accidents arrive through emergent systems?
My intent with Ecosystem was to explore and study these techniques and associated algorithms in order to create and populate a "generative world." My goal was that I could combineprocedural content, algorithmically simulated behavior, and programmatic world-building can create something that is both like and entirely unlike a game; although it is built on game technologies and has the look and feel of a game, it isn't playable. There's a sense of place and users may infer their own story, but it resists conventional narrative readings.
I created a persistent, ambient game world (what we might call an observable bubble of simulated reality) using behavioral simulation and rules-based AI techniques to create an explorable virtual space where an observer can watch these algorithms unfold in real-time.
With Ecosystem, I felt it was important to see if I could effectively back into storytelling, by setting up a lightweight framework of space and character and letting the story emerge organically out of multiple systems interacting in unexpected ways. My intent was to observe the possibilities of story and setting derived from emergent systems, and expose my audience to this “ambient storytelling” as well.
What we see here are a cast of different characters programmed with a particular set of motivations and behaviors modeled using game AI techniques like Craig Reynolds' steering algorithms, finite state machines, and A* pathfinding. The result when they're all combined, and dumped into one shared world, is an infinitely running work full of unexpected interactions.
My hope is that this project could find a home as an projected or "big screen" installation and be able to run for days or weeks at a time, gradually transforming its virtual world over time as growth, death, and history impact the environment.
Ecosystem was the first time I executed a large-scale project within the context of an art or design school. I worked within a framework established by Parsons' MFA in Design in Technology. I conceived of and executed Ecosystem over the last eight weeks of the MFA DT course Major Studio I.
I began with wide-ranging research into behavior through code, starting with the Daniel Shiffman's book The Nature of Code and his extensive breakdown of "Autonomous Agents" in code. From there I read A.K. Dewdney's The Magic Machine: A Handbook of Computer Sorcery focusing his "dinner party" and "palmiter protozoa" algorithms. The most valuable book for the purposes of this project was Programming Game AI by Example, with detailed analysis of everything from state machines to A* pathfinding to steering and flocking algorithms.
I also drove out a series of studies that explored particular technical and aesthetic aspects of the work. Examples include a reacreation of Dewdney's programmatic "dinner parties," testing out a custom hunting/farming algorithm, and an 8-bit prototype created in the virtual console PICO-8.
Once I had dialed in a firmer set of goals and tested out some visual and technical aspects of the project, I created the project using Unity's 2D desktop features. It was important for me to execute Ecosystem in a game engine – tools for game development and creative coding come with different expectations and affordances for designers, and I wanted to use the same tools game designers, artists, and developers would to make a 2D pixel art game, while subverting the end product.
The music and sound effects were created in Ableton Live and Max For Live, with some additional sonic treatments happening at runtime within the game. Music and sound are areas I know well, and I felt it was important to place them front and center in Ecosystem.
Ecosystem was an interesting experiment that I expect to inform future work in and out of my time as an MFA student at Parsons, as I feel there is a lot of untapped potential in leveraging emergent behaviors for creative work.
My next step will be playing with different visual takes on the same content – for instance, would a "low poly" 3D version of this project be more visually compelling?