Today we began programming.
But first--The concept solidifies:
The main page of the website will hold the Java applet (made in Processing) -
- Shows the "top" Organism
- Text box below in which the user enters a name
- Clicks "play" to begin the game (game uses user's name to generate the 1st organism's DNA)
The Game -
- User's Organism is immersed in an environment full of randomly generated organisms (some simpler, some more complex)
- The Organism follows the user's mouse
- Option to mate with or eat other organisms to evolve or survive
- After mating occurs, the user has a choice of one of three offspring
- Generated organisms grow in complexity as successive generations are produced
- Generated organisms will mate and eat each other
- Once the user's Organism reaches a certain point (perhaps based on complexity) they meet the "top" organism and have the option to mate with or eat it, therefore producing a new "top" organism
- Information about the Organism is displayed on the side, i.e. DNA
The Details -
- Organisms will be generated through a number of flexible characteristics defined by a DNA class
- Possibility of different polygonal shapes, colors, and any number of segments (think snake-like)
- After this system is programmed and implemented, other traits may be added, like cilia (hairs), eyes, spikes, etc.
So far the code doesn't do anything, but we've got a bunch of parts that work, such as a follow-the-mouse script and a polygon-generator (thanks to Ira Greenberg). But now we are both tired. More to come soon.
Wednesday, January 30, 2008
Monday, January 28, 2008
Brainstorming
Jackie and I have had a chance to talk to many of our professors for ideas and preemptive feedback. Somehow, we've got a lot of people interested in (and dare I say excited about?) our project.
Hopefully we won't disappoint anyone!
After many brainstorming sessions (with more foreseen in the future), we've come up with a somewhat feasible idea. We figured that we should solidify our ideal concept first, and figure out how to implement it later.
Concept so far:
- MMOG-esque, a la Endless Forest, but also browser-based and AFFORDABLE for us to host (somehow)
- relatively simplistic style, i.e. 2D environment & simple-shape organisms
- indirectly-user-created organisms (perhaps based on a name/IP address)
- automated organisms created by the program/website
- users' organisms mate with others (automated or not) to create new, slightly mutated organisms
- the user chooses which offspring (out of 3 or so) lives
- organisms have base attributes that make up its genotype (i.e. size, speed, strength, etc.)
- attributes originally created by user-data, i.e. name/IP
- attributes are expressed as shapes/features, a la the phenotype
- needs environmental factors (this part is still a little fuzzy)
- "genetic code" should be visible, perhaps as abstract barcode-like graphic, instead of a "name"
These are merely features that we would like to see implemented in our project. Some may be dropped and some may be added as we progress, obviously. As soon as we decide a few things, such as our intended audience and goal of this piece, perhaps ways of implementing the aforesaid list may become clearer.
I've been thinking abstractly about how some of this stuff may be programmed eventually. The stuff I read about genetic algorithms was really enlightening as to how the general principle works. I think I might have a preliminary concept of how the "DNA" will work, as well as how the combining of genes, i.e. reproduction, will be realized. The "attributes" of these organisms are simple variables, such as "speed = 5," and can be thought of as their DNA. When two organisms "mate," their variables will be cut up and recombined in a coherent fashion. As an example:
OrganismA's size=10; a random number between 0-10 is selected, let's say 7
OrganismB's size=5; a random number between 0-5 is selected, let's say 2
7+2=9, therefore their offspring OrganismC's size=9
This way, if two organisms with equal sizes mate, their offspring will generally be the same size as their parents, but this also leaves room for variation.
Though perhaps the number selected should be half the original value instead of a random number, and a mutation probability could offset the amount slightly.
Either way, some things fell as if they're falling into a coherent structure.
By the way, ideas and links to other resources are welcome.
Hopefully we won't disappoint anyone!
After many brainstorming sessions (with more foreseen in the future), we've come up with a somewhat feasible idea. We figured that we should solidify our ideal concept first, and figure out how to implement it later.
Concept so far:
- MMOG-esque, a la Endless Forest, but also browser-based and AFFORDABLE for us to host (somehow)
- relatively simplistic style, i.e. 2D environment & simple-shape organisms
- indirectly-user-created organisms (perhaps based on a name/IP address)
- automated organisms created by the program/website
- users' organisms mate with others (automated or not) to create new, slightly mutated organisms
- the user chooses which offspring (out of 3 or so) lives
- organisms have base attributes that make up its genotype (i.e. size, speed, strength, etc.)
- attributes originally created by user-data, i.e. name/IP
- attributes are expressed as shapes/features, a la the phenotype
- needs environmental factors (this part is still a little fuzzy)
- "genetic code" should be visible, perhaps as abstract barcode-like graphic, instead of a "name"
These are merely features that we would like to see implemented in our project. Some may be dropped and some may be added as we progress, obviously. As soon as we decide a few things, such as our intended audience and goal of this piece, perhaps ways of implementing the aforesaid list may become clearer.
I've been thinking abstractly about how some of this stuff may be programmed eventually. The stuff I read about genetic algorithms was really enlightening as to how the general principle works. I think I might have a preliminary concept of how the "DNA" will work, as well as how the combining of genes, i.e. reproduction, will be realized. The "attributes" of these organisms are simple variables, such as "speed = 5," and can be thought of as their DNA. When two organisms "mate," their variables will be cut up and recombined in a coherent fashion. As an example:
OrganismA's size=10; a random number between 0-10 is selected, let's say 7
OrganismB's size=5; a random number between 0-5 is selected, let's say 2
7+2=9, therefore their offspring OrganismC's size=9
This way, if two organisms with equal sizes mate, their offspring will generally be the same size as their parents, but this also leaves room for variation.
Though perhaps the number selected should be half the original value instead of a random number, and a mutation probability could offset the amount slightly.
Either way, some things fell as if they're falling into a coherent structure.
By the way, ideas and links to other resources are welcome.
Friday, January 25, 2008
The Project
Before I describe anything, a bit of background information is necessary.
I, Cory Hughart, am a T.I.M.E. major at the Cleveland Institute of Art. T.I.M.E. stands for "Technology and Integrated Media Environment"; it's a fancy way of saying "Digital Art major." My emphasis is in Game Design.
Jackie Watson, my partner in this project, is a Biomedical Art major. She goes to the cadaver lab every week and draws dead peoples' insides, among other less gory things. She is also interested in digital art, and decided to take a T.I.M.E. elective in which I am also enrolled: Media Integration & Interactivity, which is a fancy way of saying "Interactive Web Art."
The assignment for this class is this: Team up with other people to plan and create an interactive web piece that reflects a semester's worth of research, planning, and production.
Jackie and I went through a couple different ideas, one being a subversive, glitchy website about a hoax medical conspiracy or another site offering in-depth tutorials about self-surgery. However, we settled on a more serious, but no less playful, idea:
We will be applying the scientific concepts of genetics and evolution to digital, interactive art.
Yes, this has been done before, varying from pictures evolved by the user to dancers that learn new moves by natural selection. We feel, however, that we may be able to bring something different and interesting to the web, along with documenting our process so that others interested might be able to follow all of this relatively complex theory and programming. After all, both of us are relative newbies at programming, and all of this genetic algorithm stuff is new to me. So you, lucky reader, get all of our hard-earned knowledge about how to make sense of it all for free.
That is, if we manage to figure any of it out at all.
We'll be programming in a language called Processing, designed specifically with artists and other creative people in mind. It's open source and free to download; it's definitely worth checking out if you have any interest in making programmed art.
I'll be posting updates on our progress, as well as providing links to all of our sources in the "Resources" box to the right.
I, Cory Hughart, am a T.I.M.E. major at the Cleveland Institute of Art. T.I.M.E. stands for "Technology and Integrated Media Environment"; it's a fancy way of saying "Digital Art major." My emphasis is in Game Design.
Jackie Watson, my partner in this project, is a Biomedical Art major. She goes to the cadaver lab every week and draws dead peoples' insides, among other less gory things. She is also interested in digital art, and decided to take a T.I.M.E. elective in which I am also enrolled: Media Integration & Interactivity, which is a fancy way of saying "Interactive Web Art."
The assignment for this class is this: Team up with other people to plan and create an interactive web piece that reflects a semester's worth of research, planning, and production.
Jackie and I went through a couple different ideas, one being a subversive, glitchy website about a hoax medical conspiracy or another site offering in-depth tutorials about self-surgery. However, we settled on a more serious, but no less playful, idea:
We will be applying the scientific concepts of genetics and evolution to digital, interactive art.
Yes, this has been done before, varying from pictures evolved by the user to dancers that learn new moves by natural selection. We feel, however, that we may be able to bring something different and interesting to the web, along with documenting our process so that others interested might be able to follow all of this relatively complex theory and programming. After all, both of us are relative newbies at programming, and all of this genetic algorithm stuff is new to me. So you, lucky reader, get all of our hard-earned knowledge about how to make sense of it all for free.
That is, if we manage to figure any of it out at all.
We'll be programming in a language called Processing, designed specifically with artists and other creative people in mind. It's open source and free to download; it's definitely worth checking out if you have any interest in making programmed art.
I'll be posting updates on our progress, as well as providing links to all of our sources in the "Resources" box to the right.
Subscribe to:
Posts (Atom)