Statistics | We have 1675 registered users The newest registered user is dejo123
Our users have posted a total of 30851 messages in 1411 subjects
|
Who is online? | In total there are 26 users online :: 0 Registered, 0 Hidden and 26 Guests :: 1 Bot None Most users ever online was 443 on Sun Mar 17, 2013 5:41 pm |
Latest topics | » THIS FORUM IS NOW OBSOLETE by NickTheNick Sat Sep 26, 2015 10:26 pm
» To all the people who come here looking for thrive. by NickTheNick Sat Sep 26, 2015 10:22 pm
» Build Error Code::Blocks / CMake by crovea Tue Jul 28, 2015 5:28 pm
» Hello! I can translate in japanese by tjwhale Thu Jul 02, 2015 7:23 pm
» On Leave (Offline thread) by NickTheNick Wed Jul 01, 2015 12:20 am
» Devblog #14: A Brave New Forum by NickTheNick Mon Jun 29, 2015 4:49 am
» Application for Programmer by crovea Fri Jun 26, 2015 11:14 am
» Re-Reapplication by The Creator Thu Jun 25, 2015 10:57 pm
» Application (programming) by crovea Tue Jun 23, 2015 8:00 am
» Achieving Sapience by MitochondriaBox Sun Jun 21, 2015 7:03 pm
» Microbe Stage GDD by tjwhale Sat Jun 20, 2015 3:44 pm
» Application for Programmer/ Theorist by tjwhale Wed Jun 17, 2015 9:56 am
» Application for a 3D Modeler. by Kaiju4u Wed Jun 10, 2015 11:16 am
» Presentation by Othithu Tue Jun 02, 2015 10:38 am
» Application of Sorts by crovea Sun May 31, 2015 5:06 pm
» want to contribute by Renzope Sun May 31, 2015 12:58 pm
» Music List Thread (Post New Themes Here) by Oliveriver Thu May 28, 2015 1:06 pm
» Application: English-Spanish translator by Renzope Tue May 26, 2015 1:53 pm
» Want to be promoter or project manager by TheBudderBros Sun May 24, 2015 9:00 pm
» A new round of Forum Revamps! by Oliveriver Wed May 20, 2015 11:32 am
|
|
| Autotroph Evolution Distribution Procedure | |
| | Author | Message |
---|
~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Autotroph Evolution Distribution Procedure Fri Nov 04, 2011 5:43 pm | |
| I got thinking today about biomes, specifically about the producers. We'll need to know a lot about the producers to start placing in consumers, so I decided to create a concept of what producers (autotrophs) do in a biome. In order to understand this, you'll need a very basic knowledge of cellular automata and our planet generation procedure, and our evolution procedure. Once the area of a biome has been defined, we can create a texture map of that biome, where each pixel represents a certain area of ground (probably the size of the highest resolution terrain tile we have). With this texture map, we can define the properties of each of those pixels. We will have a few basic kinds of maps. Values in most of the maps correspond to the maximum and minimum values that that biome can contain, where a black pixel is minimum and a white pixel is maximum, and a 50% gray pixel is somewhere directly in between. We already have a heightmap for elevation, and from this we can create a slopemap, which shows the slope of each terrain tile from 0° (black) to approaching 90° (white). A lightmap shows how much light a plant can get in a day, from no light to full light. A nutrientmap shows how nutrient rich the soil is, from no nutrients (black) to saturated with nutrients (white) A moisturemap shows how wet/dry the soil is, from underwater (white) to completely dry (black) A pH map (which may or may not be important enough to include) shows soil acidity from 0 (highly acid, white) to 14 (highly basic, black) Each plant will have a defined range in which it can live for all of these values. It can reside in a square only if all of the requirements for its existence there are met. The maps of light, and nutrients can change every generation depending on the plants that lived around them the last generation. Some plants will be able to reproduce each generation, others will only reproduce after they have lived for x number of generations. Some plants will live and die in one generation, while others will have a lifespan of several generations. This means that there is one final map for the biome, one that is more than just black and white, one that is based on cellular automata. This is the plant map. Each plant in a biome gets its own tag, or playing piece. For the sake of simplicity, only three plants can occupy one unit square at once. Each plant has its own rules for how it plays the game of cellular automata. This is how plants evolve in a biome. They have a game independent of the animals, as well as the one with animals. The rules include: How much nutrient it uses per generation How much nutrient it replaces each generation (Nutrient map changes a lot, and each square changes according to what lived on it last generation) How much water it uses each generation (water changes independently from the plants) How much light it uses (based solely on the size of the plant) How it reproduces (these include: by runner or falling seed, spreading outwards each generation, and by wind or animals, where new pixels are seeded randomly. A plant can reproduce by both.) The plant's lifespan (x number of generations) The generations before the plant matures (x number before it reproduces) The plant's shading effect on its own square neighboring squares (tall plants like trees will reduce light intensity in neighboring squares, and use up most of the light in their square) The plant's size (each square can contain many of the same plant, or many of a few different plants, the size tells how many can fit in a square on average, meaning we can then calculate populations and run mutations) Therefore, each generation, the light and nutrient maps will change, and then the plants will be able to run their next move. | |
| | | Mysterious_Calligrapher Biome Team Lead
Posts : 1034 Reputation : 26 Join date : 2010-11-26 Age : 32 Location : Earth, the solar system, the milky way...
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Nov 04, 2011 7:09 pm | |
| <3
Only one problem - sunlight use should not depend solely on plant size, as we will then have no underbrush in my forests, which is a big buzzkill for biodiversity.
There could be a range of sunlight use corresponding to size, though. I have no problem with that. Say, a plant of size x uses between y lux/hour and z lux/hour. | |
| | | ido66667 Regular
Posts : 366 Reputation : 5 Join date : 2011-05-14 Age : 110 Location : Space - Time
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Nov 04, 2011 7:55 pm | |
| Wait... What Do you Mean by generation. There is No generations In Planets | |
| | | ~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Nov 04, 2011 10:49 pm | |
| - ido66667 wrote:
- Wait...
What Do you Mean by generation. There is No generations In Planets Generation is the unit of evolution in the game. | |
| | | Nimbal Programming Team lead
Posts : 258 Reputation : 24 Join date : 2013-03-17 Age : 40 Location : Ratingen, Germany
| Subject: temp autotroph Fri Apr 19, 2013 2:41 am | |
| - Daniferrito wrote:
Actually, now that i see this as an example, i dont think this will be a problem.
Not so fast. Say we have two plant species, F(irst) and S(econd) competing for sunlight (a patch of ground, if you will). These species are exactly equal, save the order in which they consume the sunlight. Here are the very simple rules:
- The biome will seed 100 units of sunlight each turn.
- Both F and S start out with an initial population of 10 each.
- A single plant needs 7.5 units of sunlight per turn. If that's more than is available, the plant starves and dies.
- The populations of F and S grow by a factor of 1.5 each turn.
- A turn consists of compound consumption and then procreation.
Now let's play a game. Turn 1
- Biome seeds 100 units of sunlight
- Population of F consumes sunlight. Total consumption: 10 * 7.5 = 75. Every plant of F survives.
- 25 units of sunlight left
- Population of S consumes sunlight. The remaining 25 units of sunlight are enough to keep 3 plants alive. The rest dies.
- Procreation: F now has a population of 15. S has a population of 5.
Turn 2
- Biome seeds 100 units of sunlight
- Population of F consumes sunlight, but there's not enough for everyone. The 100 units can keep 13 plants alive. The rest dies.
- 2.5 units of sunlight left
- Population of S consumes sunlight. The 2.5 units available are not enough for even one plant. S dies out.
So by virtue of being the first plant to get resources, F has become the dominant species and successfully killed off its rival. A more natural and bio-diversity friendly way to distribute resources among the species would be to give them each an appropriate percentage of the available ones. Since F and S were identical, they would have each gotten half of the sunlight, stabilizing their populations at 6-7 plants each. | |
| | | Daniferrito Experienced
Posts : 726 Reputation : 70 Join date : 2012-10-10 Age : 30 Location : Spain
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 3:26 am | |
| Yes, you are right, light is a special case where all possible light will be used. That is why scio's idea of a lightmap would be usefull.
Each individual plant is on a partucular spot, and you have a lightmap (id doesent have to be a complicated lightmap, a plain lightmap would work).
You take the highest plant. It consumes light on its area, and reflects that change on the lightmap, creating a shadow. Next, second highest map. it takes all avaible light on its area, creating shadow. If part of its area is alredy shadowed, it doesent get light from there.
But this isn't too scalable as you must have each individual plant separatedly.
The other idea is to just share the light: ConsumptionA = MaxConsumtpion*TotalAvaibleLight/(Sum(MaxConsumption)) I hope names are clear enough to explain the equation. Once we have the light inputed to a species, we have another problem. We could either feed them one by one, so some of them get their maximum and the rest nothing, or we could share the light equally, which could mean killing everyone of starvation while there was enough to keep alive some. Second idea seems more realistic.
@Nimbal: Hey, and i realized that while you always have a list on your posts, i always have a example. | |
| | | Nimbal Programming Team lead
Posts : 258 Reputation : 24 Join date : 2013-03-17 Age : 40 Location : Ratingen, Germany
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 5:21 am | |
| I'm still wary of the maps because they will greatly increase the processing time for the evolution, but I'll hope for the best. Let's try to specify that a little more like a manageable program. Each biome has a list of grey-scale maps that model the biome's biosphere and geometry. These maps include:
- An elevation map
- A population density map for each species
- A density map for each compound that might be lying around
Each turn, those maps are mutated to progress the biome's state. Creatures dying, reproducing and migrating will modify their species' population density map. Creatures consuming and excreting compounds will modify the compounds' density map. In the case of sunlight, water and possibly other compounds the compounds' density map can also be changed by the biome itself. Using these maps to procedurally generate the landscape and its flora and fauna for the player's benefit should be pretty straight-forward. Let's make this a little more concrete, starting with the light map. First, we need to simulate sunlight. That's easy, just generate a map with a base light level at the beginning of each turn. Next, we need to find everything that blocks (or emits) light. To keep things simple, we'll say that every species that can either consume or produce light is important for the light map, nothing else. We can then iterate through these species, from tallest to lowest. For each species, we put the current light map, the species' population density map and the relevant properties (foliage density / amount of emitted light) into a magical (read: yet to be figured out) function that will generate the next light map. Rinse and repeat. Note that each turn, we'll have to remember how much light a species has gotten. That's actually another map, because it depends on the location of the species' members. Some members will be located in open spaces, receiving much light. Others may live under taller plants that take a chunk of light away. That will cause the open space dwellers to prosper, while the poor things living in the shadow may die out or need to mutate. | |
| | | Daniferrito Experienced
Posts : 726 Reputation : 70 Join date : 2012-10-10 Age : 30 Location : Spain
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 5:48 am | |
| Well, a (greyscale) map is just a 2d colection of values. If we have a population density map and a lightmap, we can do something like - Code:
-
lightmap = [][] populationmap = [][] for i in range(len(lightmap)): for j in range(len(lightmap[0])): lightmap[i][j] = lightmap[i][j] - foliagedensity * populationmap[i][j]
Sorry for it being python. I was coding in python when i saw the post We can do that for any population consuming any compound/other population, as long as we assume that the population on one space only can feed on thet particular space. For taking from nearby locations it becomes a bit harder, but not for much. The order for doing the consumptions is from higher plants to lower plants. I dont think any creature will emit enough light to be worth puting it as a light emiter. | |
| | | Nimbal Programming Team lead
Posts : 258 Reputation : 24 Join date : 2013-03-17 Age : 40 Location : Ratingen, Germany
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 6:06 am | |
| - Daniferrito wrote:
I dont think any creature will emit enough light to be worth puting it as a light emiter.
In an earth-like world? Unlikely. But remember that we are not bound to create a virtual earth. I would actually really like to see someone playing with the parameters of the simulation and create a world full of luminescent herbivores that need to keep their food source alive with their light. With proper lighting in the graphics engine, this could be quite a sight to behold. A man can dream... Anyway, the function you wrote is pretty much what I imagined and will probably work fine for light / foliage interaction. But if we want to keep luminescent creatures in play, it gets (a little bit) more complicated. To make the light "spread", we can apply a blur filter to the population map before adding it to the light map. Same for the feeding range problem you mentioned. | |
| | | Daniferrito Experienced
Posts : 726 Reputation : 70 Join date : 2012-10-10 Age : 30 Location : Spain
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 6:36 am | |
| Still, i dont think it is realistic. Because of thermodinamics.
The plants would be getting energy from the light the other creatures emit. But that light takes energy to produce. And that energy comes from the plants again. It is a closed system, but they are still geting energy from somewhere.
You still need the sun or other way of geting energy into the system.
Anyway, yes some kind of blurring function is what i was thinking of. I'm also afraid this might be too much to simulate, but we'll see. However, i dont think reducing it to the other idea will be too hard. And we can start implementing it at microbe stage, where the soup is a map containing nutrients instead of a stockpile. The cell will interchange nutrients with the soup at the points where it is currently, and all nutrients will get blurred into the soup each cycle a bit. | |
| | | ~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 3:37 pm | |
| Yeah, unfortunately thermodynamics prevents herbivores from providing a meaningful source of light. That would be quite a beautiful scene. Allotting sunlight according to height is a perfect solution, because its going to create evolutionary pressure for plants to be taller, but not arbitrarily tall- they only need to be just a little bit taller than their neighbors. Also, the density of a plant on a terrain tile is predefined (it's part of the plant's behavior)- terrain tiles can easily house multiple plant species because one plant species most likely won't cover the square in its entirety. It can only gather as much of the light percentage as its density allows. therefore, your game runs a little differently. Say we have two plant species, F(irst) and S(econd) competing for sunlight (a patch of ground, if you will). These species are exactly equal, save the order in which they consume the sunlight. Here are the very simple rules:
- The biome will seed 100 units of sunlight each turn.
- Both F and S start out with an initial population of 10 each.
- A single plant of species F needs 7.5 units of sunlight per turn, but covers 60% of the tile. The remaining 40% is taken up by species S. If that's more than is available, the plant starves and dies.
-
The populations of F and S grow by a factor of 1.5 each turn. The populations of plants in a tile are fixed- when their population grows, they spread out into another tile, depending on their method of procreation.
- A turn consists of compound consumption and then procreation.
Now let's play a game. Turn 1
- Biome seeds 100 units of sunlight
- Population of F consumes sunlight. Total consumption: 10 * 60% * 7.5 = 45. Every plant of F survives.
- 55 units of sunlight left
- Population of S consumes sunlight. The remaining 55 units of sunlight are to keep species S alive on the tile. 10 * 40% * 7.5 = 30
- Procreation:
F now has a population of 15. S has a population of 5. F and S both reproduce.
On reproduction- there are a two different ways to spread your seeds if you're a plant. You can drop them next to you (or use runners), or you can get the wind, animals, or some other force to spread them. Dropping them next to you is pretty simple- the species just spreads out into all adjacent squares that it will fit into (meaning that there's enough space left for it [see above] and the tile has enough sunlight/nutrients awarded to it to sustain the plant last turn*). Using a different method of transport means that seeds are scattered randomly into terrain tiles in the biome. *notice that it's not required that the tile be able to sustain all of the species in it with nutrients/light/water/etc. this means that a plant can enter a new tile and then outcompete another species in the tile next turn. Hopefully that clears up most of the problems with autotrophs. The only issue left with autotrophs now should be growth: we don't want fully grown trees popping up out of nowhere. We need to figure out how to make plants grow every generation, and what effects that will have on their environment. | |
| | | ~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 3:43 pm | |
| Also, would you mind If I put these posts about autotroph distribution back onto the Autotroph thread? | |
| | | Nimbal Programming Team lead
Posts : 258 Reputation : 24 Join date : 2013-03-17 Age : 40 Location : Ratingen, Germany
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 3:53 pm | |
| - ~sciocont wrote:
- Hopefully that clears up most of the problems with autotrophs.
Um... on the contrary. I'm sorry, but I'm seriously wondering where that rule "S takes the rest of the sunlight" came from. What makes S special in that regard? And what if there's a third, fourth or whatever many other species competing? Also, the tone of your post is pretty matter-of-factly, as if this was all discussed and hashed out before. Where? I don't mean to sound huffish, but I'm feeling a little silly, trying to break down AutoEvo into manageable parts that I think can actually be implemented, only to have another rabbit pulled out of the hat in front of my eyes. Edit: And go ahead with moving that stuff if you feel it's better placed elsewhere. | |
| | | Daniferrito Experienced
Posts : 726 Reputation : 70 Join date : 2012-10-10 Age : 30 Location : Spain
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 4:02 pm | |
| - ~sciocont wrote:
- ...the species just spreads out into all adjacent squares that it will fit into (meaning that there's enough space left for it [see above] and the tile has enough sunlight/nutrients awarded to it to sustain the plant last turn*)
I wouldnt put it that way. The plant spreads anyway, and the little plant spawn will die next turn if the square wasnt good. Aditionally, plants geting light should do anything other than survive. Lets say plant A got 10 units of light. It inmediatly transforms that light into 10 units of nutrients. First of, it will use 3 units to keep alive. If it doesent get that amount, it dies. Next of, it uses 3 more units to reproduce. If it doesent get that amount, it just doesent reproduce, but the plant itself doesent die. Finally, it uses 3 more to grow, increasing its height and maybe ocupying nearby squares. The remaining unit either gets stored for when there is no light (if we allow plants to store nutrients) or just gets wasted. Just because it doesent need it inmediatly it doesent mean that it will hide its leaves so lower plants can get light. However, the more complex we made this, it gets more resource-intensive. We should stop complexity at some point, or move it up all the way of all plants and creatures being fully simulated. Yes, i would agree on moving this posts to the autothrops thread. We could continue discusion there. | |
| | | ~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 4:04 pm | |
| I definitey agree with the separate needs for growth, homeostasis, and reproduction. | |
| | | Daniferrito Experienced
Posts : 726 Reputation : 70 Join date : 2012-10-10 Age : 30 Location : Spain
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 4:13 pm | |
| Yes, i also agree on Nimbal that the second plans shouldnt get all the remaining light.
If plant A gets 60% of sunlight that gets to it, it will leave 40 out of 100 light left for lower plants.
Plant B gets 40% of sunlight that gets to him. That means that it gets 40*40% = 16 units of light, and 24 pass on for the next one. | |
| | | Nimbal Programming Team lead
Posts : 258 Reputation : 24 Join date : 2013-03-17 Age : 40 Location : Ratingen, Germany
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 4:30 pm | |
| I may have just realized what your model is, sciocont. Correct me where I'm wrong.
- Each tile has a fixed "budget" of plants it can support.
- A plant species has a "size" attribute (not necessarily physical size, but in relation to the above-mentioned budget)
- Several plant species can coexist in one tile, as long as their combined size fits into the tile's budget
- Incoming sunlight is distributed to a tile's plants proportionally to their sizes
Is that about what you tried to explain? If yes, it's a little confusing that you left in the line about "initial population of 10", because in your model, plants don't really have a population, just an area they cover. Anyway, this introduces an additional degree of freedom: the plant budget per tile. Should that be the same for all tiles? Randomly generated? | |
| | | ~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Re: Autotroph Evolution Distribution Procedure Fri Apr 19, 2013 5:05 pm | |
| - Nimbal wrote:
- I may have just realized what your model is, sciocont. Correct me where I'm wrong.
- Each tile has a fixed "budget" of plants it can support.
- A plant species has a "size" attribute (not necessarily physical size, but in relation to the above-mentioned budget)
- Several plant species can coexist in one tile, as long as their combined size fits into the tile's budget
- Incoming sunlight is distributed to a tile's plants proportionally to their sizes
Is that about what you tried to explain? If yes, it's a little confusing that you left in the line about "initial population of 10", because in your model, plants don't really have a population, just an area they cover.
Anyway, this introduces an additional degree of freedom: the plant budget per tile. Should that be the same for all tiles? Randomly generated? This is exactly what I mean. The idea of tiles having different budgets is interesting, but do we want to add in another degree of complexity like that? plant populations on a tile are already limited by resources in the tile (hence the reason for light/nutrient maps) and I based the concept off of the fact that all tiles are the same size (though that's technically untrue because of planetary and terrain warping). I don't think we necessarily want variations in budget, but it could create some very interesting environments. | |
| | | Nimbal Programming Team lead
Posts : 258 Reputation : 24 Join date : 2013-03-17 Age : 40 Location : Ratingen, Germany
| Subject: Re: Autotroph Evolution Distribution Procedure Sat Apr 20, 2013 4:28 am | |
| So you mean that the "budget" I mentioned is the amount of water, sunlight, etc. that's present on a tile? Fine with me, it's more intuitive anyway.
How are plants supposed to break into other, already "full" tiles, though? Would it have to wait until the current inhabitant(s) die? If yes, how do we determine who gets first pick when multiple plant species would be able to spread to one and the same tile? | |
| | | ~sciocont Overall Team Lead
Posts : 3406 Reputation : 138 Join date : 2010-07-06
| Subject: Re: Autotroph Evolution Distribution Procedure Sat Apr 20, 2013 10:21 am | |
| - Nimbal wrote:
- So you mean that the "budget" I mentioned is the amount of water, sunlight, etc. that's present on a tile? Fine with me, it's more intuitive anyway.
How are plants supposed to break into other, already "full" tiles, though? Would it have to wait until the current inhabitant(s) die? If yes, how do we determine who gets first pick when multiple plant species would be able to spread to one and the same tile? What I originally meant by the "budget" was the amount of space on a tile. The suggestion you were making was what I interpreted as being inclusive of space, water, nutrients, etc. which we have specific maps for. Not every tile is going to have a full [space] "budget" at all times. If a plant can fit itself into the space on a tile, it can then compete for the nutrients defined by the light, water and nutrient maps. Determining first pick is a bit difficult- I'd say do a coin flip, but there might be a better way. Perhaps a plant could mutate to have a better chance of winning that flip. | |
| | | Sponsored content
| Subject: Re: Autotroph Evolution Distribution Procedure | |
| |
| | | | Autotroph Evolution Distribution Procedure | |
|
Similar topics | |
|
| Permissions in this forum: | You cannot reply to topics in this forum
| |
| |
| |