corey jackson's profile

Chromagen (UCLA MFA Thesis)

I had been interested in recombinant forms for a long time, and had an opportunity to explore this when building the landscape assets of Game Neverending and then the architectural building blocks for the web based MMO Faketown. In these games there was a need for a large number of uniquely identifiable buildings that could be assembled from a palette of architectural components. In the case of Faketown, the buildings would be assembled by the players, so the pieces needed to fit together such that the finished building always looked correct, but with a little effort could look amazing. Each set of blocks represented a different part of the world, and was for me a fun puzzle to determine what rule set would best define the architectures of the region. After I had enough block sets to play with, as a personal exploration I wrote a script that would procedurally generate buildings from a randomized seed.
 
When I was planning my thesis project at UCLA, I knew I wanted to build something to explore procedural generation. I was most interested in exploring a system of layered animations that could describe microscopic organisms. The initial inspiration was the scene in Aeon Flux where Aeon utilizes a futuristic microscope to analyze a sample of yolky material found in an alien egg.
 
 
I started to experiment with simple life forms that could be described by layering sequences of repeating actions- pulsing, breathing, unfurling, and by creating variations in the frame length of these loops so that the whole organism had consistent timing.
The nested layering of movieclips in Flash was the perfect system for easily swapping out these animated parts and dynamically generating thousands of different organisms from hundreds of constituent clips.
In this early build I had just learned how to code boids behavior for the organisms. The overlay invokes the Aeon Flux robotic arm which can interact with the basic ecosystem. (Arrow keys can move the location around the petri-dish like world). The ‘game’ element is basically trying to keep the population alive as long as possible, but this also facilitates seeing the more advanced animation states of the organisms.
 
This was a slightly more sophisticated attempt at defining the process of making new organisms, with the ability to cache and implant the ‘DNA’ of organisms to ‘craft’ new ones with the desired traits. At this point I was imagining a game element where the goal is to level up the organisms by matching the right genetic traits. I created an ‘AI’ mode where you can see the game successfully played, in part because human players found it impossible to understand the arcane genetic rules that I had set up and never actually got to see the cooler looking organisms.
 
I also added a system of circuits in the petri dish that extract byproducts from the organisms in order to build themselves out, because I thought that would look cool.
 
At this point I was investing so much thought into the means of tending to this ecosystem as a ‘god-force’ … tending/using the organisms as a resource. Imagined what the organisms themselves would think of the situation (how would they want to help themselves?)
 
In this build you could now play as an organism. The world itself is now an environment that is hostile to the organisms, it is a laboratory designed to efficiently harvest the organisms as a resource. The player needs to evolve the traits that can resist this oppressive machine (I was inspired by a matrix-like science fiction). If the player wants, they can still play as the laboratory, where their goal is to maximize the collection of organism byproducts. This instance of the game was an exploration of ‘genetic destiny’ where the laboratory and the organisms have two opposing and incompatible goals for their future lineage, and the forces to control this destiny are in conflict. The laboratory arm is actively selecting for reproduction the traits that make the cells docile and resource-rich. The cells themselves (and the player when in this position) is trying to amplify the traits that let them evolve abilities that are useful to their own survival. Although I was interested in this game-like narrative, I resisted the compulsion to actually build it into a game with an implemented win condition because my priority was still building a simulation for exploring the visual evolution of the organisms.
 
An important development was the implementation of organism communication by pheromones, via which the organisms direct each other toward food and each other. They are basically painting the environment with signals that decay over time, but build out a useful map. I began playing with a way for the laboratory player to compromise this system for its own purposes, and this led to a deeper contemplation of how the life-form and a system designed to compromise it would interact.
 
The dichotomy of cells vs circuits was interesting to me and at this time I had a whole ‘culture’ of the organisms established but very little to show for their oppressor (aside from the ever-present arm). I created a new environment where the floor of the world was composed of living circuitry, which extends itself by releasing electrical pulses that build out pathways. They are ‘driven’ by the periodicity of cellular automata oscillator patterns, which determine their rate of processing and what signals they dispatch. By editing the seed pattern of a CA simulation node, the player can initiate production of differently organized networks. This has no effect on the organisms, it was just a feature I was excited to build.

link to playable build
By this time I had learned a lot about building with actionscript and was a lot more conscious of its possibilities and limitations. The old way of building everything with nested movieclips was wrong to me, and so I built a new cell renderer that could generate a bitmap animation for an organism whenever it needs to appear on screen. The generator takes the DNA, age and state of the organism and returns the frames as a sprite sheet that can be efficiently rendered. This process raised by tenfold the number of organisms that could be rendered simultaneously.
The new efficiencies and improvements in the code meant I could also dramatically increase the scale of the world. The pheromone system needed to be improved such that the organisms could navigate across a larger area. I built an editor version that can display the many information layers of the simulation and allow real time adjustment of the global parameters. The terrain map and initial food sources are initialized from the same perlin noise distribution, which you can see by activation of ‘GRAVITY’ and ‘FOODS’ (‘SOURCE’ is the initial perlin noise). ‘LOCAL’ is on by default and follows the currently tracked organism. Clicking on another organism within view sets the camera to track that organism. The tracked organism’s major stats are displayed at lower right, with the ‘CONF’ representing its current confidence- this was a composite ‘score’ determined by what its immediate needs were and whether it had the information necessary to resolve them. For instance, if the organism is hungry, its confidence score is based on finding local pheromones that strongly indicate a nearby food source. Organisms with low confidence will resort to following those nearby with high confidence, even if their needs are not the same. I wanted to see how effectively the organisms could organize an effective map of their world with a pheromone trail system (‘TRAILS’ map represents this, with different families having their own unique colors for trails).
 
This was the final build of my thesis project. It is much more a simulation than game, but can be ‘played’. Upon initialization you can see the primitive organism that you are following. You can take control of it by clicking on it and dragging away (like pulling a leash). Dragging the control node onto another nearby organism initiates an attempt at reproduction. If successful the player’s control is transferred to the resulting offspring and their former avatar wanders off. Each new birth takes on traits from both parents, and every generation supports a higher number of nodes than the previous. The simulation starts out with smaller, circular organisms but after a number of generations they grow branching appendages and display complex internal animations. The goal of the game is to find other organisms with awesome and complementary colors and patterns and incorporate them into the current design of their organism by reproducing. In this manner of directed selection the player can ‘design’ an organism. The goal of the project was to explore a process for generative animation. There were many distractions along the way, elements that I thought would help structure the context of this exploration of the generative organism-- even in the final build the player needs to put in quite a lot of effort to get their organism to an evolved state.  
 
Chromagen (UCLA MFA Thesis)
Published:

Chromagen (UCLA MFA Thesis)

Evolution of my MFA thesis project at UCLA

Published: