Your job, Dr. Frankenstein, is to create new life. Your project might be a sensate creature, a dynamic flock or swarm, an artificial cell-culture, or an ecosystem. Your software should algorithmically generate the appearance and behavior of your new life form. Will it/they be able to sleep, reproduce, die, or eat one another? Your creature may benefit from inhabiting an ecosystem or environment with abiotic elements that present additional constraints or opportunities. If there is more than one, consider the relationships between the individuals in your species and how you might support this with a corresponding interplay of simulated forces such as attraction or avoidance. Give consideration to the potential for your creature to operate as a cultural artifact. Can it attain special relevance through metaphor, or commentary, or by addressing a real human need or interest?
As the myths of Pygmalion, Golem, and Frankenstein show, the god-like desire to create artificial life persists throughout our folklore. This impulse also underlies the history of robotics, where gestures are mechanically automated in the Karakuri of Japan and in the early automata of Europe, like Turriano’s “Praying Monk” (c. 1560) or de Vaucanson’s “Defecating Duck” (1738). With computers, software simulations of life systems allow behaviors and interactions to be programmed and scaled across massive multiagent systems. Many of these systems exhibit emergence, where self-regulation, apparent intelligence, and coordinated behaviors arise from simple rules followed by many actors.
Whether the medium is hardware or software, the goal of is to create the impression that an engineered system is alive. Unlike the work of “character design,” where the creator’s focus is often on visual appearance, this assignment is concerned with the construction of a creature with responsive, dynamic behaviors that are contingent on environmental interactions.
A creature without a context is boring—with nothing to do, and no one to do it to. Stories happen, character is perceived, meanings are made when an agent operates on or within an environment that likewise acts on it. By placing a creature into feedback with external forces or subjects, and especially with the actions of an interacting user, we can create companions that stave off loneliness or appear to have feelings, virtual pets like the Tamagotchi that evoke empathy through their fragility, or sublime simulated ecosystems that evolve in surprising ways.
Project: A Virtual Creature
In OpenProcessing (#26), create an interactive virtual creature. Your creature is due at the beginning of class on Wednesday, February 23. There are three constraints:
- Create your creature in p5.js in a canvas whose dimensions are 800 × 450. (I recommended this 16:9 aspect ratio since it will yield good video documentation.)
- Your creature(s) should respond to (or be puppeteered by) the user’s mouse, keyboard, and/or microphone. (You may also have it respond to an audio file if you wish.)
- You are limited to constructing your creature from rectangles, and you may use no more than three rectangles to construct the body of a creature. (There can be more than one creature if you wish. Also, you may use the versatile p5 rect() command.)
The deliverable requirements are as follows:
- Sketch first.
- Consider behavior, and not just appearance. How might you simulate physics, tropisms, intelligence? In designing a vocabulary of interaction, ask: what can the user do?
- Record an interaction with your creature in a brief (~10 second) video or animated GIF screen capture.
- Create a blog post on this site, and write a paragraph that discusses your development process, and critiques your work. In your writing, answer the question: Through the interactions you have established, what sort of relationship does the person experiencing your app have to your creature? (For example: pet-owner/pet, scientist/subject, cage-cleaner/zoo-animal, farmer/livestock, predator/prey, puppeteer/puppet, etc.).
- Name your creature (or its species).
- Embed a still image of your project.
- Embed a photograph or scan of any sketches you made.
- Upload and embed your video and/or GIF.
- Title the blog post, nickname-Creature
- Categorize the blog post, 04-Creature
- Demonstration of mouse interaction techniques
- Demonstration of microphone interaction techniques and a clean simple one.
- Connie’s demonstration of audio-sensitive design
- Zeno’s Interpolation Demo (Position)
- Zeno’s Interpolation (Color)
- Smoothly change the frequency of a sinusoid
- Very simple particle, attracted to cursor
- Simplest possible spring
- Lecture on Springs from a previous semester
Some Processing examples: