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.

No comments: