This is an idea I've had for a long time and haven't gotten around to seriously implementing. I'm mainly putting it on here to get some ideas from folks in the know on how to proceed.
What needs to be done, in no particular order:
- choose a physics API and language
- make a simple 3D world with some resources (analogs of food, water, etc)
- make simple creatures out of 3D primitives (spheres, capsules, boxes). The specifics of the construction (number of segments, size & position) depend on a 'genome'.
- animate the creatures with 'muscles' using the physics API (not predetermined slkeletal animation). The position & strength of the muscles depends on the genome, and their use consumes resources.
- give the creatures behaviour patterns that also depend on the genome, such as methods of locomotion, peer recognition, goal seeking and hazard avoidance. This too depends on the genome
- if creatures run out of resources they die. Survivors can sexually reproduce with other creatures using mendellian inheritance of the genome, with occasional mutations.
The end result will be an autonomous system that the user sets up with some variables (gravity strength, food abundance, cost of body construction, cost of reproduction, etc) and then simply watch as (hopefully) generations go by evolving into new and different forms in real time 3D. Perhaps there'd be an option to switch off the visualisation and leave it running overnight and see what's grown in the morning.
Described above is the simplest form of the idea. Later versions would include predation and parasitism, the production of 'chemical' trails and other forms of communication, visual communication in the form of textures, and online sharing of creatures with other user, allowing them to compete and evolve in different environments.
I've never really done a project like this before, so I'm not sure what kind of response to expect. I'm willing to do as much of the coding myself as is necessary, primarily I'm after advice on how to proceed. Of course, I'm happy to accept as much help as is on offer.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2009-09-11
This actually sounds interesting and at the same time insanely difficult.
First of all, you're working with 3D animation and a physics engine. Doesn't seem like a walk in the park to me.
Second, it seems like you're talking about allowing users to design their own animals to apply to these conditions. What if there is no way for the animals to survive in the given conditions though?
There are several other problems with this created merely do to the scale of it all.
With that being said, this sounds like fun. Where do I sign up?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
>>First of all, you're working with 3D animation and a physics engine. Doesn't seem like a walk in the park to me.
Agreed, but it would all be done procedurally. Animation is done by coordinating the pulling of muscles. Modelling is done by attaching bits one at a time. I've found PAL, the physics abstraction layer, which seems to have a fairly simple interface and gives the choice of any physics API, which is good. Also, that means it'll probably be in c++, as an aside, which is fine.
>>Second, it seems like you're talking about allowing users to design their own animals to apply to these conditions.
Possibly at a later stage, but only as an additional feature. The point is to evolve the creatures, not design them. One would start with some very simple design (say, a spherical body, four single capsules for legs and a spherical head) and a rudimentary behaviour (just rotate all limbs differentially toward food sources, or something), then evolve a more complicated form. The complicated, evolved form is what would be shared with others to show off what you've 'made'.
>>What if there is no way for the animals to survive in the given conditions though?
Then they die. If they all die, you need to alter some conditions.
>>There are several other problems with this created merely do to the scale of it all.
Yep, that's why I've put it on here rather than try to do it myself.
>>With that being said, this sounds like fun. Where do I sign up?
I don't know, I'm not sure how this works. I've never used sourceforge or CVS before. I guess I'll figure out how CVS works, make a simple implementation using PAL and upload that, then go from there.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is an idea I've had for a long time and haven't gotten around to seriously implementing. I'm mainly putting it on here to get some ideas from folks in the know on how to proceed.
What needs to be done, in no particular order:
- choose a physics API and language
- make a simple 3D world with some resources (analogs of food, water, etc)
- make simple creatures out of 3D primitives (spheres, capsules, boxes). The specifics of the construction (number of segments, size & position) depend on a 'genome'.
- animate the creatures with 'muscles' using the physics API (not predetermined slkeletal animation). The position & strength of the muscles depends on the genome, and their use consumes resources.
- give the creatures behaviour patterns that also depend on the genome, such as methods of locomotion, peer recognition, goal seeking and hazard avoidance. This too depends on the genome
- if creatures run out of resources they die. Survivors can sexually reproduce with other creatures using mendellian inheritance of the genome, with occasional mutations.
The end result will be an autonomous system that the user sets up with some variables (gravity strength, food abundance, cost of body construction, cost of reproduction, etc) and then simply watch as (hopefully) generations go by evolving into new and different forms in real time 3D. Perhaps there'd be an option to switch off the visualisation and leave it running overnight and see what's grown in the morning.
Described above is the simplest form of the idea. Later versions would include predation and parasitism, the production of 'chemical' trails and other forms of communication, visual communication in the form of textures, and online sharing of creatures with other user, allowing them to compete and evolve in different environments.
I've never really done a project like this before, so I'm not sure what kind of response to expect. I'm willing to do as much of the coding myself as is necessary, primarily I'm after advice on how to proceed. Of course, I'm happy to accept as much help as is on offer.
This actually sounds interesting and at the same time insanely difficult.
First of all, you're working with 3D animation and a physics engine. Doesn't seem like a walk in the park to me.
Second, it seems like you're talking about allowing users to design their own animals to apply to these conditions. What if there is no way for the animals to survive in the given conditions though?
There are several other problems with this created merely do to the scale of it all.
With that being said, this sounds like fun. Where do I sign up?
>>First of all, you're working with 3D animation and a physics engine. Doesn't seem like a walk in the park to me.
Agreed, but it would all be done procedurally. Animation is done by coordinating the pulling of muscles. Modelling is done by attaching bits one at a time. I've found PAL, the physics abstraction layer, which seems to have a fairly simple interface and gives the choice of any physics API, which is good. Also, that means it'll probably be in c++, as an aside, which is fine.
>>Second, it seems like you're talking about allowing users to design their own animals to apply to these conditions.
Possibly at a later stage, but only as an additional feature. The point is to evolve the creatures, not design them. One would start with some very simple design (say, a spherical body, four single capsules for legs and a spherical head) and a rudimentary behaviour (just rotate all limbs differentially toward food sources, or something), then evolve a more complicated form. The complicated, evolved form is what would be shared with others to show off what you've 'made'.
>>What if there is no way for the animals to survive in the given conditions though?
Then they die. If they all die, you need to alter some conditions.
>>There are several other problems with this created merely do to the scale of it all.
Yep, that's why I've put it on here rather than try to do it myself.
>>With that being said, this sounds like fun. Where do I sign up?
I don't know, I'm not sure how this works. I've never used sourceforge or CVS before. I guess I'll figure out how CVS works, make a simple implementation using PAL and upload that, then go from there.