Why aren’t carnivores evolving?

Here’s a new type of post: analysing the behavior of Species: trying to work out why things are happening the way they are, and using what we learn to improve the mechanics for the future.

Eventually, I’d like to integrate this sort of questioning into the game mechanics themselves: make science itself a game mechanic. As an example: say you want to know what a specific gene does. The game could require you to earn a certain amount of “data points”, or something equally abstract, and then spend them on that gene to discover it’s function. And that would make for a decent game mechanic, encouraging you to earn data points, which I assume you’d get by performing actions like creature sampling. But it wouldn’t be science, it’d be economics. And no offence to economists and EVE Online players, but unless your entire country is falling into disrepair because of too many short-term investments and cuts by the rich and powerful, economics is boring.

Alternatively, you could take a creatures genome, apply heavy mutation to that gene specifically (via a targetable radiation gun or something equally awesome), then clone a creature from that genome and see what’s changed. You could then go back and label the gene. Observation, hypothesis, experimentation and conclusion: that’s science, turned into a gameplay mechanic. And best of all, the reward is the logical result of the experiment: you can now target that feature specifically when you manipulate genetics.

Of course, the game can take care of some of the slower bits: for instance, an ‘autocompare’ between parent and child, which detects and names the heavily mutated gene for you, would keep the game moving better than if the player had to visually inspect for differences, and then go back and type in the function of the mutated gene themselves. Afterall, I’m not interested in data entry, I’m interested in science. (On the other hand, if naming gene functions is your thing, this would tie in well with the ‘naturalist mode’ idea that Reprieve suggested)

Anyway, I’ve managed to go off track before I even got on the track in the first place. I don’t even think I ever even [i]saw[/i] the track: I’ve been doing donuts in the carpark this whole time. Shorter me: I’ll be looking for any opportunity I can to integrate science and gameplay. In the meantime, I can still do science on the game out here in meta-space.

And what I want to know today is: why aren’t carnivores evolving?

Play the game for a bit and the best you’ll probably get are omnivores, despite all the giant piles of delicious meat lying around. Something’s going on: hunting and scavenging should be viable strategies, so why don’t carnivores survive?

Part of this is simply the power of stupid. Creatures are often too dumb to seek out plants, let alone other creatures, let along dead other creatures. Rest assured I’m working on this for 0.4.1, and future versions will have significant AI improvements on top of it.

But it’s not just that. You may have noticed that probably the most viable strategy among the creatures is to find a large tree and just sit there eating it, staying at max energy and pumping out 10 or more babbies until it’s gone, like the Quiverful movement’s vision of the ideal woman.

So why doesn’t this work for carnivores?

Is it just simple math? I’ve been meaning to check the math for this post, but haven’t gotten around to it (and I don’t have the game in front of me right now durn it), but I’m pretty sure it isn’t: meat energy is highly dependant on the life of the dead creature, but everything they eat during their life is converted to meat, so there should be loads of it in each meat pile.

But there’s another factor. You see, creatures have an ‘eat rate’ value, which differs between vegetation and meat. The malleable, delicious, high-protein meat can be consumed much more rapidly than the tough, horrible, inefficient plants.

Seriously. We really appreciate it.

In theory, this serves as a reward: unlike grazing, creatures can get a lot of energy in a short amount of time from meat. In practice, it became the opposite: the above strategy, where creatures maintain their energy at max by eating from one source until it’s completely consumed, works for only as long as the source lasts. And meat doesn’t last much time at all.

This is an interesting phenomenamnicon in it’s own right: the ecosystem actually encourages slow-eating creatures, which is the opposite of my expectations. But it makes the game less interesting and actually discourages evolution, so I believe a few changes are in order.

There are two approaches I could take to this:

– The balancing approach. Consuming meat faster is preventing carnivores from developing, so I’ll make them consume meat slower. I’m not going to take this approach, partly because it’s illogical, but mainly because it utterly and unforgivably violates my primary design goal. I’m developing the environment, not the evolution: I shouldn’t be ‘balancing’ selection pressures to make the things that I find interesting develop. That’s not what the game is about! Aargh!

– The expanding approach. It’s not consuming meat faster that’s preventing carnivores from developing: it’s that I’ve failed to model the animals eating behavior correctly. It’s logically impossible for them to continue to eat when their stomach’s completely full, so why are they doing so? I need to fix that fundamental bug, rather than working within it to achieve outcomes I percieve as desirous.

Of course, I probably won’t be able to fix it immediately. Making them make a new decision when full is a relatively simple thing to implement, but it will lead to a whole bunch of new bugs to test for, and will have significant implications for their survival (making it much harder on the early, blind creatures, and much easier on the sighted random creatures). So I’ll probably hold off implementing it until 0.5.0, which will also implement grazing, a feeding strategy that doesn’t depend on sight and so makes it easier on the starting creatures.

(EDIT) Actually, you know what guys? Screw everything I just said, I’m implementing it anyway. I might as well: it’s not like I’m not fixing AI bugs already, and with those fixes I’ve already completely screwed over the game balance.

(EDIT Mk2) What the flip. The blind starting creatures are surviving better now? How are they… I don’t even… what is this? What the hell even is this? YOUR GOD DEMANDS TO KNOW.

(EDIT Mk3) Okay, it looks like this might be one of those hilariously unintuitive results the Anthropomorphic Personification Of Evolution is so fond of. I could explain what I think is causing it, but that would deprive you guys of the challenge of working it out yourself. So come on: tell me in the comments why they’re reproducing better now that they leave tree’s alone when they’re full! I’ll post what I think is the answer a few days from now.

Cheers
Qu

“Phenomenon”: singular. “Phenomena”: plural. And the “Phenomenamnicon” is a book used to summon a particularly vague eldritch abomination. Geez, it’s not that hard to remember!

Advertisements

, , , , , , , , ,

  1. #1 by Adam Benton on July 4, 2012 - 1:53 am

    To the best of my knowledge meat eating isn’t so much about speed as efficiency. Changing the system so you wind up with meat being more efficient rather than faster might help fix this somewhat. That, alone or combined with the second option, might solve it. Or just go for the second one, I like that.

    And what I like is important to you I know.

  2. #2 by ququasar on July 4, 2012 - 8:54 am

    Efficiency is a tricky one, because it’s dependant on diet. The current efficiency/diet diagram looks summit like this:

    (excess food is converted to unusable biomass without going through the usable energy bar)

    I obviously can’t increase it above 100% (conservation of energy and all that), but reducing the vegetation maximum couldn’t hurt. Well, okay, it’ll hurt the creatures, but they don’t count. Okaaaay, so maybe they do count depending on how you define life, but I’m doing it anyway because I find their pain amusing.

    And suddenly I want to implement a ‘pain’ measure, allowing creatures to percieve and react to damage. Eeehehehehee- I’m starting to think there’s something wrong with my head -hehehehee.

    ^^Also, I’m making a few edits to the end of the post above.

  3. #3 by Adam Benton on July 4, 2012 - 11:21 am

    I’d imagine lowering the maximal efficiency for plants would do the trick. After all, most grazers have to spend the better part of the entire day chewing grass.

    Also, I’d wager that they survive better because they spend less time eating in one place they spend less time clumping. This avoids the whole “I’ll just crap out babies to eat” problem I keep having and the “adapt to be purely social” you seem to get.

  4. #4 by Skylimit on July 6, 2012 - 8:30 am

    Hi,

    Here is a post I made for a similir simulation. You already have a lot in place of what was missing in the other sim. Here was an idea to stimulate biodiversity. (read Gotchi as creature, parts are unedited and may not apply here)

    A very colourful idea (Flowers and rotting meat, preference, nutricional value) :

    I think multiple food sources really add depth
    But how to accomplish without much coding ?

    I just had this colourful idea, that leads not to multiple food sources, but to nearly infinite food sources

    Further elaborating the “flowers”

    The flowers that grow on / near water, duplicate in their own area
    Seeds spread. But they are all identical

    What if we can set the color of the flower, and define it by three numbers (I’m not a colour expert, I think three is
    the entire universe of colours, it could be four numbers, but the principle is the same)

    Flower :
    Color A : 0,98
    Color B : 0,88
    Color C : 1,00

    Suppose this results in dark blue, just an example

    The plant duplicates, and does a small variation in one of the three numbers
    Suppose this results in purplish dark blue, close to original colour

    For mere beauty, this would result in a colourful landscape of flowers
    But those have a purpose

    Now we go to the gotchi’s

    Gotchi’s have a preference for colour

    Gotchi 1 likes
    Color A : 0,98
    Color B : 0,88
    Color C : 1,00

    The colour of Flower 1

    When eating this flower, it’s nutricion value is maximized

    When eating the flower next to it, the value is slightly less

    In the most extreme example, when liking color (1,1,1) then color (0,0,0) will have zero nutricional value

    But no worries, when eating the opposite color, your preference also slightly changes
    (e.g. from blue to purplish, or from red to orange, …, etc)

    When moving towards a flower, it’s nutricional value is perceived
    Therefore selection based on color, is an ability the creature must have

    It has to decide whether to consume the flower that only has 50% nutricional value, or walk the extra mile for the super tasty that is maxed

    Over time, some colours in the vegetation will be dominant in some areas, and others will be scarce
    Maybe the creature will have to climb on a hill to spot in which direction it will find the best food
    Dunno

    This will add an infinite amount of depth, and I think it is easy to implement

    Now I reread this post, the same may hold true for rotting meat.
    I do not like the cannibalism, where creatures consume their own
    When meat is consumed, it should be from another species

    This will leave a huge heap of meat lying around in various stages of decomposition
    Same as with the flowers, a preference can grow towards a specific “colour”, which maxes out nutricional value

    Last but not least, real predators
    They will have to do extra work to kill creatures, in stead of waiting for them to rot to the right degree
    So those will need a nice bonus from eating fresh killed creatures
    Maybe they should get extra reward for hunting down specific creatures, where like in the “colour” example of flowers they have a preference of the specific animal which is maxed on nutricional value
    In no case should they hunt their own.

    Maybe they need to climb on a hill to spot where to go to find the best pieces.

    So we have herbivores, dead meaters, predators
    All with specific preferences
    This means, several species can coexist, and there will be a food chain

    Biodiversity!
    This is what I currently miss. There is speciation, but this mostly happens after 1000 species have been reduced to one.
    The above can fix this (though we never know for sure, till we see it)

    Needend be with colour, you can think of various ways to implement this, one way or another

    Once we get there, there is all sorts of interesting attributes creatures could have, and there should be a trade off, in some way, where you cannot have everything at the same time
    For instance shield can be defence attribute, but will slow you dow.
    Predators can have attack attributes, like claws, poison, teeth, stealth, …
    Where herbivores could have defence & escape attributes.
    Well, just looking what exist in nature may give you some ideas here :o)

    I’ll end the post here, most likely more is coming, after I’ve played around a bit more

  5. #5 by ququasar on July 6, 2012 - 10:54 am

    Adam: Hah, maybe that’s true in the long term (it seems to be to a small extent), but they’re surviving better in the short term, amplifying the initial population explosion and not crashing quite as hard after it.

    They’re surviving better before they’ve even had a chance to start clumping.

    skylimit: Interesting idea’s! Keep them coming, they’re very helpful!

    [Evolving Tree Colour’s]

    You’re actually completely right about the three colour values: they’re Red, Green and Blue, and that’s exactly how the current creatures vary their own colours.

    The current vegetation system is a placeholder: I’m hoping to implement a much more detailed and dynamic system for the next major release, which will include 3 types of food: meat (same as existing), (grass: new, for grazing creatures) and fruit (replacing the current tree’s as the games point-based food-sources. This category also includes edible leaves).

    I’m not entirely certain how the fruit tree’s themselves will reproduce, but if I can get them to do it individually without killing performance then yes, I’ll definately try to do this idea!

    [Food Colour Preferences]

    One thing I want to avoid in Species is strictly-behavioral variables. The game’s about seeing evolution in action, and you can’t see behavioral mutation unless you watch really closely or observe the stats.

    With that said, currently creature colour has no influence: if we combined their colour and their food preference, they would hypothetically adapt to be the same colour as their food. That could be interesting, but it might also be something we’ll have to remove when or if long-term possiblities like sexual selection, camoflage and warning colours come into play.

    So, that one’s a “maybe”.

    “I do not like the cannibalism, where creatures consume their own. When meat is consumed, it should be from another species

    If I do implement anti-cannibalism measures, I’d have to do it ‘naturally’: so rather than simply forcing the creatures not to eat their own, eating their own comes with some sort of penalty. In real life, the biggest penalty is disease: eating your own exposes you to whatever the dead creature had (which might well have been what killed it!). Species doesn’t have diseases (yet!) but something like that would be the path I’d have to take to stop them eating their own.

    Inversely, if cannibalism can be a viable survival strategy (for example, a parent allowing its children to eat it so they’ll have enough energy to reproduce themselves), then that should be able to happen to. I’m not planning to make Species ‘nice’: that would be imposing my own morals onto the simulation.

    “Last but not least, real predators. They will have to do extra work to kill creatures, in stead of waiting for them to rot to the right degree. So those will need a nice bonus from eating fresh killed creatures.

    Well currently the biggest bonus comes naturally: killing a creature means you get all of it’s delicious meat to yourself. Making the meat become more inefficient as it decays is a good idea though.

    An AI improvement I’m calling “seeking” is planned for later, where creatures decide to do something prior to doing it. This would be invaluable for hunters, who currently have to a) decide on very little information to approach another creature, and b) decide on very little information to attack and kill that creature when they reach it. A hunter being able to think, even in such simple terms as: “need food, hunt creature”, would help them out a lot.

    In no case should they hunt their own.

    Luckily, killing their own comes with a natural penality (killing shared genes), so even though they’ll be happy to eat their own species, they probably won’t evolve to go hunting them. Probably.

    Biodiversity! This is what I currently miss.

    I know! Unfortionately, a world of 1000 creatures doesn’t have the same biodiversity potential as a planet, and the simulation isn’t deep enough yet to open up much in the way of niches.

    But rest assured, every time I update the game I’ll be doing my absolute best to increase the number of viable survival strategies available to the creatures, and I’ve got a few small idea’s and one really really big one for fixing the ‘small world’ problem once the simulation is a bit more developed.

    Seriously, this one idea is huge. If it works, Species will become something so much more than it currently is.

  6. #6 by Skylimit on July 6, 2012 - 9:32 pm

    Some ideas regarding the “small world”
    1000 creatures is already sufficient to evolve 1 species, but in order to evolve multiple species on a planetary scale, it is not. Of course, the resources of your pc, will very soon make progress to slow, if the world is enlarged.

    Couple ideas in that area :
    First of all, naming your species would be a very nice attribute. My first one, for instance I call “myusername\adam”

    Whenever adam’s life tree splits, I am allowed to give it a new name.
    And very nice would be if I can visualize where my new creature originally came from. So here it would be : “myusername\mammall” with adam distance 17, originated from”myusername\adam”. Also nice would be if the “real” earth data & time was captured.

    Once we have this, we can turn it into a multiplayer game.
    This may sound complicated, but it needend be.
    Myworld, will be adjacent to the worlds of other players.

    Very nice, would be to see in real time, who else is online, and who’s world I am adjacent to. I am adjacent north, south, east & west, so directly connected to a maximum of 4 players, but I may be able to visualize whom they are connected to. Then it is just a small step to create a planet. Maybe some of it with aquatic life, coastlines, rivers, …

    After some cycles, or after some time, the most successful creature in myworld, would migrate north, south, east, west
    Or even more elegant and detailed, but more difficult to implement, the most successful creature in my northern sphere, would migrate north, best southern, south, etc …
    Creatures at some point can crawl out of the sea, cross a river, or come from a mountain.
    In the current worlds, they would cross a mountain. What I would suggest is that, 5 identical creatures cross at the same time, to improve the odds for survival
    That they use their eyes to determine which direction to go to, and that they live at least until they touch the soil of the valley.
    “Those that came from the other side of the mountain” Crossing the mountain is merely an exchange of DNA from one world to another, …, nothing else is needed, the species do no need to physically crawl over the mountain. Would be neat though if they actually descend from it, and don’t get killed while doing so.

    Coming back to the naming of the species : they will remain youruser\yourspecies, until after speciation occurs, and then I can call it myuser\myspecies, without losing the information that it came from the family tree of youruser\yourspecies. If the user did not name the creature, a name can be generated in stead “youruser\randomname-Adamdistance-x” It would be very nice

    Another possibility is to have an entire planet, and the ability to choose which part you will be playing on, and to queue the creatures that crossover between worlds
    This would be helpful because your creatures could migrate to offline worlds this way, but definitely harder to implement.
    Also the queueing is less elegant, and the planet size would have to be predefined, which is another disadvantage.
    If the worlds are generated by the players, the planet size is potentially infinite, as one user is connected to only 4 other users at the same time, which in turn are connected to other users, etc…

    The advantage of predefined planets though in turn would be that speciation would not randomly spread from one continent to another as if it fell out of the universe
    Another advantage is that there could be multiple planets (or realms) you can play on
    If there is a fee, there could be a fee per realm (;o))
    So, pro’s and cons here

    What would be really neat, is that your own creatures keep evolving in other worlds, after you shut down your pc
    There could be planetary statistics, planetary food chains, planetary family trees, etc …, a wealth of statistics possible
    A lot more biodiversity, a lot more extreme environmets (desert, ocean, swamp, tundra, arctic, plains, forest, ….) all with specific specialized creatures
    Also, it would be more like a game, where you can try get one of your creatures, to be the most successful on a planetary scale (though this in turn is maybe not compatible with biodiversity)
    Or to have the most creatures on a planetary scale, that your adam is ancestor of.
    To have the creature that can survive the hottest, coldest, wettest, toxic places … etc

    On that scale, the best genetic manipulator could come in play. Not designing creature, but interbreeding or genetically manipulating already existing species.
    Extinct species can be revived by offline worlds coming online again (from harddisk) Or exporting/importing creatures, and manipulating/selecting/helping them

    Endless possibilities on this Planetary scale
    If you want to stick to the idea of only one planet, you could also make it infinitely large in a different way.
    If it is “full”, meaning all worlds are online at the same time, you could vary the scale – for instance, host a world of insects in a part of a forest, or under the surface, in a tree, in a river
    If in turn the insect worlds are full, you can go bacterial.

    I’m not sure this scaling is something that can be easily done, …, think not, but it would be neat :o)

    Coming back to the idea of colours : anywhere I used colours in the previous post, it can also be pattern recognition
    The only difference is that colours are easy to implement, pattern recognition is very complex
    To get around this, you can also allow a creature to interpret another creature, by allowing it to look straight into it’s DNA.
    Then have a pattern recognition on that level
    And set the preferences on that level

    Much more elegant than colours, a bit more complex, but a lot simpler than recognizing a pattern by observing how a creature looks, and how it moves
    You could even “read it’s thoughts” which is easier than recognizing a pattern of an angry or hungry creature, moving towards you
    It would be helpful though if a creature would be smart enough to see if something is moving towards you, are running away, or standing still

    Enough for now …

  7. #7 by Adam Benton on July 7, 2012 - 3:35 am

    Each animal consumes less enabling more to be supported by the same level of resources? Do I win?

  8. #8 by ququasar on July 7, 2012 - 1:34 pm

    Once we have this, we can turn it into a multiplayer game.
    This may sound complicated, but it needend be.
    Myworld, will be adjacent to the worlds of other players.

    Oi! Stop stealing my idea’s! 😀

    What you suggest here is exactly what I was referring to as my “huge idea” above. A network of connected players forming a massive overworld of potentially unlimited size, but each player only simulating ‘their’ bit of the map.

    We very likely won’t see this until the game goes into Beta, but it’s definately something on the menu. 😉

  9. #9 by ququasar on July 7, 2012 - 1:48 pm

    Each animal consumes less enabling more to be supported by the same level of resources? Do I win?

    Depends, does Death By Frame Rate count as a win condition? 😛

    Unfortunately, more creatures means more CPU cost. I’m doing my best to manage that, but there’s not too much I can do. Increasing the survival rate of creatures just means a it’s necessary to give them a smaller world to live in.

    I could see what happens if I tie CPU cost to survival somehow, but I have no idea how to implement that in a way that makes sense in-universe. Besides, it would actually suppress complex evolution and encourage the creatures to stay simple… not what I want.

  10. #10 by Skylimit on July 7, 2012 - 5:40 pm

    A few words about dynamic food allocation.

    I’m not sure if you are already doing this in some way, but I don’t think so.
    How I think it currently works is, that the maximum food (vegatation) is preset during world generation.
    And regeneration of food is a preset value.

    As a consequense, when starting a world with very simple creatures, they end up with mass extinction, because unable to successfully displace to food sources fast enough.
    On the other hand, when we have evolved creatures, they are all over the place, and consume all the food the minute it starts growing.

    The simple creatures would need a smaller world, with more food in it. The advanced a lot larger world, so they need to migrate to where the food is.

    A way to achieve this is with dynamic food allocation.
    You actually calculate how much food is needed to sustain a population to a given number, without taking away the dynamics of evolution.
    The number is the entire population, sum of all species.

    What we typically see is, an explosion in the population (cause of intial food) followed by a very hard crash (because of all food gone)
    Where I would want to go, is to put 10 individual creatures (exports from previous runs) into competition, e.g. in worldsize 3.
    With a preset value of 250 total creatures, where it balances the resources

    How it works
    All 10 creatures are capable of reproducing under those starting conditions. This depends on the worldsize versus food distribution.
    If you can choose the starting conditions, you can make it so that this is always true. For the exported creatures, you could even remember from previous runs in what conditions they can survive.

    Then the population starts to grow, and the system keeps track of survival rates.
    It can calculate where the equilibrium lies, given the current growth of population, and adjust the regeneration of food likewise.

    The result will be, that at the start all 10 creatures reproduce, so no food will be regenerated.
    The creatures will displace themselves to where the food is, and keep growing in numbers.
    No food at all will be regenerated during the population explosion.
    At some point, the creature will either have to turn into ominvores or carnivores and start hunting the competition.
    If no food is regenerated, the population will start to go down again.

    Here in stead of a hard crash, you can turn this into an equilibrium.
    From the mortality rates, you can calculate how much food needs to be regenerated.
    The place where it is regenerated is random.

    Typically what we will see, if my preset desired population was 250 for the given environment, that it would grow upto 500 or more (overshooting) then start going down and oscillate around 250.
    It will never be exactly 250 of course.

    The number should be chosen as to what your cpu can handle.
    So at this point you will have 250 units competing for food that is dynamically adjusted to keep the population at that number.
    Natural selection will determine within those 250 units, how much of each species can be supported by the environment.

    A bit more elegant would be a changing environment, with very fertile conditions at the start, and seasons or climatological conditions varying the food availability according to the population dynamics.
    When the population does too well, you can challenge it with drought.

    Just an idea to make optimal use of your computer resources, without any compromise towards the evolutionary aspects.
    I know for a fact this works, as I have seen it in action for several years in another sim.

    Along with this idea, you can make worlds that are a lot larger, as the food will dynamically make sure you always need about the same cpu to make it work.
    The will also make sure food sources can sometimes be far away from eachother, and allow speciation in niches unreachable to others (temporarily)
    Climate changes could create natural borders (a desert in between, or a lake, isolated land mass in a sea … ) but now I’m getting carried away a bit ;o)

    This one also seems easy to implement, if we put aside the climate change for a minute

  11. #11 by Skylimit on July 7, 2012 - 9:18 pm

    So basically, plants & animals, both exist with and without DNA

    When a creature is generated, it can only eat one of the above categories
    In case it is dead meat or grass, all it has to do is look for the greenest grass, or the freshest meat
    Or more subtle, it can have a preference towards not to greenish, or not to freshies meat, and natural selection will determine if this is a viable strategy

    In case it likes plants or animals the preference is set on DNA
    If this were randomized at the start, all creatures will die, so for newly generated species, at the start the preference is initialized by the first thing it eats
    This is only to make an educated guess when a new world is generated

    So, a herbivore born in the midst of apple trees, will initialize on apples

    We have described already that Plants also would have DNA and therefore evolve
    So it will particularly like this apple, and those that evolved from it will have less value
    Natural selection will determine what it will like next
    As it will be hard for a mutated animal to guess in what direction the DNA of the next apple may have evolved, a different system should be in place
    It is, during the life span of the creature, it’s preference can slowly adapt
    (e.g. when liking orange apples in an environment where all is blue, it could slowly adapt to this)
    This new preference is given from parents to children – x% from mother, y% from father and occasionally z% by mutation

    New preferences can only evolve within one species (of plants)
    e.g. when I have been initalized on oranges, I cannot eat melon at all, I will get sick
    I will only have 100% nutricional value when I have that specific type of orange

    At first, the world is simple, and there will be only that kind of orange, and we will initialize on it, so that will be ok

    Now what is a diet ?
    Suppose we have type Fruit : apple, banana, orange

    I have initialize on orange
    But at birth, I inherit the preferences from mother, father and occasionally by mutation (z%)
    Suppose x+y% equals 92% here and by mutation I have 8% to initialize at something else

    This will put my diet on
    92% oranges
    8% to be intialized fruit

    At birth this creatures will only get maximal 92% of his diet it can eat in oranges, and has to initialize for something else in fruit

    That will be the first thing other than oranges it eats, suppose banana
    Now it has to eat 8% banana, in order to maximize nutricional value
    But not any kind of banana, but the one it has just initialized on, with that particular DNA

    Ok here is a simple diet

    Now when I mate, I give preference to my children
    x% mother, y% father – suppose mother gives 50% in this example, and I mate
    The diet of my child will be
    96% oranges with mildly adapted DNA meanwhile
    4% banana

    With fruit this may have looked simple, but we can evolve into omnivores
    Albeit this should come with a penalty

    At birth you can introduce another preference slot
    Yet, if this is from another category, this will come with a penalty
    The overall nutricional value drops to 80% – so you get access to a lot more food, but you cannot digest everything as efficiently as before
    If you later on would add grass and dead meat to the diet, those categories will further decrease the efficiency

    Now I have 3 slots in my diet,
    Example of the outcome at birth

    Mother + Father combination e.g. counts for 80% (in this mutation)
    and would have resulted in 100% Fruit, 100% Effective, of wich 96% oranges with specific DNA and 4% banana with specific DNA
    and 20% to be determined by mutation
    But with an overall penalty on all food of 20%, because we take from different categories

    Here my diet becomes as follows :

    80% Fruit, of which 96% is oranges and 4% is banana
    20% Live animal, of which 100% is initial and will be initialized on DNA with the first thing I eat
    Overall penalty 20% (I’m not sure how to determine how high the penalty must be, my feeling says it cannot be a fixed number)

    The basic idea is
    Each creature has a specific diet.
    Diets adapt to the environment, and are inherited from parents to children (and mixed, and mutated)
    New diet slots can form through mutation, they change the diet, but can also decrease the overall value of food in general, when taken from different categories – which will discourage omnivores being omnipresent

    The lowest nutricional value will go to animals eating plants, grass, live animals & dead meat ; those will be so severely penalized that they probably cannot survive competition with specialized animals

    Enough for now

  12. #12 by Skylimit on July 7, 2012 - 9:21 pm

    Edit for above post : first part is missing

    More on food preferences : introducing the diet

    We have 4 types of food – grass, plants, live animals, dead meat
    I would classify grass & dead meat as the same (no DNA, one is herb, the other meat, and the nutricional value varies with color)
    And live animals (fresh meat) and plants also as the same (i.e. having a DNA, and nutricional value varies with DNA and preference towards DNA)

    So basically, plants & animals, both exist with and without DNA

    When a creature is generated, it can only eat one of the above categories
    In case it is dead meat or grass, all it has to do is look for the greenest grass, or the freshest meat
    Or more subtle, it can have a preference towards not to greenish, or not to freshies meat, and natural selection will determine if this is a viable strategy

    In case it likes plants or animals the preference is set on DNA
    If this were randomized at the start, all creatures will die, so for newly generated species, at the start the preference is initialized by the first thing it eats
    This is only to make an educated guess when a new world is generated

    So, a herbivore born in the midst of apple trees, will initialize on apples

    We have described already that Plants also would have DNA and therefore evolve
    So it will particularly like this apple, and those that evolved from it will have less value
    Natural selection will determine what it will like next
    As it will be hard for a mutated animal to guess in what direction the DNA of the next apple may have evolved, a different system should be in place
    It is, during the life span of the creature, it’s preference can slowly adapt
    (e.g. when liking orange apples in an environment where all is blue, it could slowly adapt to this)
    This new preference is given from parents to children – x% from mother, y% from father and occasionally z% by mutation

    New preferences can only evolve within one species (of plants)
    e.g. when I have been initalized on oranges, I cannot eat melon at all, I will get sick
    I will only have 100% nutricional value when I have that specific type of orange

    At first, the world is simple, and there will be only that kind of orange, and we will initialize on it, so that will be ok

    Now what is a diet ?
    Suppose we have type Fruit : apple, banana, orange

    I have initialize on orange
    But at birth, I inherit the preferences from mother, father and occasionally by mutation (z%)
    Suppose x+y% equals 92% here and by mutation I have 8% to initialize at something else

    This will put my diet on
    92% oranges
    8% to be intialized fruit

    At birth this creatures will only get maximal 92% of his diet it can eat in oranges, and has to initialize for something else in fruit

    That will be the first thing other than oranges it eats, suppose banana
    Now it has to eat 8% banana, in order to maximize nutricional value
    But not any kind of banana, but the one it has just initialized on, with that particular DNA

    Ok here is a simple diet

    Now when I mate, I give preference to my children
    x% mother, y% father – suppose mother gives 50% in this example, and I mate
    The diet of my child will be
    96% oranges with mildly adapted DNA meanwhile
    4% banana

    With fruit this may have looked simple, but we can evolve into omnivores
    Albeit this should come with a penalty

    At birth you can introduce another preference slot
    Yet, if this is from another category, this will come with a penalty
    The overall nutricional value drops to 80% – so you get access to a lot more food, but you cannot digest everything as efficiently as before
    If you later on would add grass and dead meat to the diet, those categories will further decrease the efficiency

    Now I have 3 slots in my diet,
    Example of the outcome at birth

    Mother + Father combination e.g. counts for 80% (in this mutation)
    and would have resulted in 100% Fruit, 100% Effective, of wich 96% oranges with specific DNA and 4% banana with specific DNA
    and 20% to be determined by mutation
    But with an overall penalty on all food of 20%, because we take from different categories

    Here my diet becomes as follows :

    80% Fruit, of which 96% is oranges and 4% is banana
    20% Live animal, of which 100% is initial and will be initialized on DNA with the first thing I eat
    Overall penalty 20% (I’m not sure how to determine how high the penalty must be, my feeling says it cannot be a fixed number)

    The basic idea is
    Each creature has a specific diet.
    Diets adapt to the environment, and are inherited from parents to children (and mixed, and mutated)
    New diet slots can form through mutation, they change the diet, but can also decrease the overall value of food in general, when taken from different categories – which will discourage omnivores being omnipresent

    The lowest nutricional value will go to animals eating plants, grass, live animals & dead meat ; those will be so severely penalized that they probably cannot survive competition with specialized animals

    Enough for now

  13. #13 by Skylimit on July 8, 2012 - 8:29 pm

    Some ideas on adjacent worlds :

    While north, south, east, west is an option, a bit more elegant would be Hexagons
    This way there would be 6 directions to spread to, so there would be 6 gateways to different worlds.
    The different worlds belong to other players online
    But you can also think about creating larger offline worlds, so you can migrate to your own offline worlds, that you process later
    Or a model with predefined planet size, where you can “lease” a world.
    i.e. you keep your world some time after it has gone offline, and it can be fed by other players while you are offline.
    You lose the right on the lease after a period, but only if meanwhile other players have claimed the territory

    This queueing between offline worlds though, would have to be arranged by a central server, which may be an obstacle
    The advantage though is that there are potentially huge distances, and there will be a lot of local variation, niches, isolated land
    Climate changes could make it so that over time seas dry up or become ice, or new islands form, how bout plate techtonics ;o)

    Coming back to the hexagons, there are 6 portals in your world, that are available every x cycles
    The number of cycles can be negotiated by the players through parameters (lo-avg-hi) and low wins over high
    If I am working on a new world, low may be my preference, whilst when I have a dominant species I may want to set it to high, so it can spread

    The way portals work could be very elegant.
    Take an object from the adjacent world, one of your creatures must respond to it
    e.g. a fruit tree from adjacent world, which may be something that does not exist in your world, exotic fruit so to speak
    When my herbivore eats from the fruit, the exotic fruit tree is planted in the proximity of my portal, where it may multiply, and my herbivore is projected into the next world.
    While typing this, i realise that this would be complicated to achieve with offline worlds, but very elegant when both worlds are online
    Once the exchange has been made we do the same in the opposite direction
    Maybe there should be some kind of time out as well (as in, nobody attacks my t-rex, how come …?) while vice versa, my t-rex will attack the object in it’s portal, so the timeout will prevent that there
    is some kind of portal deadlock occuring.

    About size of the worlds :

    I would make the hexagons fit to adjacdent worlds regardless of size. There is no need to take worldsize into account, this would introduce complexity.
    Whilst, complexity is not needed, as each world has 6 portals, regardless of it’s size.
    One world may also have different parameters than the next, which is fine as well.
    I see portals as some kind of tunnel or cave or natural border, that can only be crossed in drips, and not in mass, and may give way to a larger or smaller world

    About gaming aspects :

    I am really impressed by the speed at which evolution occurs in this simulation, giving that 1000+ objects are individually moving and taking decisions, and all this is also visualized in a very nice landscape.
    So here I see a lot of potential of creating the one sim that has never been created with success. There is a lot of ideas and complexity that can be added.
    Some of the ideas would definitely take down the performance, and this is usually very hard to get around. To simulate evolution, processor power is crucial.
    So I definitely think we need to combine processing power of an entire community. By doing so, you create the infinite space, that is needed to really see evolution at work.

    I think it is crucial, that gaming aspects are added in some way. (without killing the natural evolution, that is)
    In some way, I think it is impossible to outsmart nature. So there could be your challenge… Try to outsmart nature
    As you can only take action in your world, you need to try to make a difference from there.

    Haven’t really thought through where the gaming apects come in.
    I would think in terms of achievements. Those are useless in itself, and need not mean anything on a planetary scale.
    But they will mean something to the godlike player that manipulated this specimen, trying to outsmart nature.

    Achievements and terms of regional accomplishments, first very small regions, then country like, continent like, planetary.
    How about being allowed for instance to give a name to places on the map where you have had one of your specimen first
    How about achievement to create an ecosystem with 20 of your specimen as most succesful, first in your world, then in x number of adjacent worlds
    Objective to have the fastest, biggest diet, most specialized, …, whatever you can think of

    Or create missions that have to be accomplished. e.g. send a specimen through all 6 portals and make it survive in the adjacent worlds

    All this time you have only limited tools at your disposal to genetically engineer your specimen
    And you would require some rough information on adjacent worlds as well, statistics, specimen characteristics, etc …

    There is some more thinking here on how to introduce gaming aspects in an evolutionary sim.
    A creature designer would be cool as well, but maybe, first you need to complete missions and reach objectives to earn game points first
    And those game points you can then use to influence your environment, by genetic manipulation, …, intervention
    As in, I think it is very hard to outsmart nature on a planetary scale, so those local variations will be a competion human versus sim, that could be very challenging.
    I bet on nature though :o)

  14. #14 by ququasar on July 9, 2012 - 12:35 pm

    Wow Skylimit! I think you’re writing more on my blog than I am! 😀

    I don’t have time to reply to everything there, but I’ll write tomorrows post on my plans for the multiplayer, and the problems it causes, and respond to a few of your points here.

    I’m not sure about the controlled resource allocation (ie. provide more food during extinctions, less during explosions). Even though it would help the CPU and probably make the evolution more interesting, it veers a bit too close to ‘guiding’ the environment for me. I feel that, like the evolution, the environmental changes should be should be reactive on an individual scale (creature eats grass, ground loses energy, area becomes slightly more barren) rather than on an overall scale, with the dynamic elements resulting from the statistical effects of that.

    I think diet should probably remain a genetic value: adaptation during their lifespan wouldn’t add much, since their lifespan can usually be measured in seconds, (hmm… there’s something we’re missing on the species stats screen, lifespan). It should probably also remain a scalar value, going from vege to meat: the complex system you suggested, even though it would add depth, would not be visable from looking at the creature and would evolve much more slowly than a scalar value, and the penalty to being omnivorous is a simple matter of changing the graph I posted above…

    I talked about gameplay in my last post: I completely agree with you, it’s vital that the game give the player something to do, and just as vital that what the game gives the player to do isn’t controlling the simulation, so much as interacting with it. That’s why I’m adding gene splicing, the radiation gun, and a way to visualise stats (which makes artificial selection much easier) to the version I’m releasing on Sunday (0.4.1).

    And finally, on achievements, when I do add them I’m planning on making achievements for absolutely every goal in the game I can think of. Increase the biodiversity above 5 species? Achievement. Kill everyone except your own species? Achievement. Engineer a creature which can’t survive without human aid? Achievement. Resurrect a dead species? Achievement. And so on.

  15. #15 by Skylimit on July 9, 2012 - 7:57 pm

    About DNA for vegatation :

    I’m not sure how feasible it is to have vegation evolve through DNA.
    Less complex alternative that would serve the same purpose.
    We have a couple of named categories : e.g. Fruit, trees, flowers, grass

    Grass, I would treat differently, and just make it vary in color for the grazing animals.

    Other than grass, I would let it evolve.
    Within the fruit category, fruit is born as Adamfruit

    Now how does speciation work ? Within the category, Adamfruit can only vary it’s color.
    Creatures have a preference for a certain color, if they have the fruitslot activated
    The color variations are mutations, in the fruitspecies.
    Just like for animals, you can count the generations, and just for like creatures , you can set a number of mutations as distance from adam, as to where a new speciation occurs.
    At that point the life tree of fruit splits. None of the existing creatures will consume this, cause none can have it in it’s preferences. Now we have two species, adamfruit & evo01-fruit.

    How do herbivores start adding evofruit to their diet?
    By mutation, a second fruitslot must be opened. By initializing on other than Adamfruit, Evofruit can be added to the diet. You can either make it guess this – cause the worldstatistics know that Evofruit exists locally. Or you can have it initialized by consuming other than adamfruit through exploration/curiosity. But only for those who have an additional fruitslot through mutation.

    This way we have a simple way of creating an infinite amout of foodsources, that only need to be named thourgh speciation, and only need to vary in color. With every new species you can also vary the shape of the fruit. It does not matter whether the creatures use a name or code as unique identifier, or a shape. This is also an easy way to accomplish the Diet idea for herbivores.

    Few words about sizes & shapes :

    I can be wrong, but I have the impressions that there is not much variation in size. A way to accomplish this is to have the large & heavy creature, have to eat a lot more than the small lightweights. This way, nature will balance the sizes, and open several strategies around this.

    Also I see insect like creatures with the size of a dinosaur. There are some gravity aspects that come into play here. For instance an ant with the size of a dinosaur could not carry it’s own weight, and can therefore not exist. So size does have an effect on physiognomy

    About dynamic food allocation :

    The idea is from a sim with only one food source. Critters can also eat eachother. Eventually only two parameters define the environment, and that is available food & worldsize. The sim is extremely heavy on cpu, cause all critters have receptors and an indidual brain with neurons and synapses, and the brain evolves, connections are made stronger or weaker – so other than mutation, the critters also learn through experience by use of their brain. At this moment, the largest computer on earth (think of it as a huge datacenter) is used to simulate a mouse brain. Simulating a human brain, is something we lack the technology for – or read, the funding, as it is a matter of money rather. So in this particular sim, optimizing cpu is of vital importance.

    Your sim does not have creatures with brain (yet) but you are thinking of multiple food sources, speciation, many different specialized creatures, and an infinite world. At some point, cpu is going to become a factor. Wouldn’t it be fun already to have a much larger world, with many thousands of creatures ? Multiplayer is one way to go, but even if we have thousands of players, the sim is going to be so much better if those thousands of players also have 1000% more efficient use of their cpu resources.

    So here is where to place this idea. Maybe something to think about in a distant future.

  16. #16 by Skylimit on July 9, 2012 - 9:55 pm

    About Leasing, territory, objectives, naming, tenders, personalized

    Pondering about infinite world versus predefined planet, …
    Why not something in between

    In the beginning, the shape is unkown, and all is grey.
    The first tile, is the first lease, by the first player ever on this planet.
    All we assume is that the planet is a ball, and we intitialize in a mild climate somewhere in the northern sphere
    More to the north is colder, more to south is hotter, then extremely hot, then cooler again
    To east and west gives variations as well, depending on heights, continental, etc …, huminidity, …

    We use the leasing principle, in which the user claims a tile, and holds on to it some time after he last processed it. Only loses it when someone else claims it after that time. You can allow a user to lease several tiles, up to some maximum. All need to be processed though at regular intervals.

    Once the first tile has been laid, the next tile can only be adjacent to it. A landmass will form, but tiles will expire as well, and go inactive for some time, meaning landmasses can get disconnected over time (temporarily) When laying a tile, a user can chose to form a coastline or natural border, which would influence also the choices of the adjacent users that are laying a tile. This way, map is randomly generated based on the choices of the individual users, spreading in all directions. If we have aquatic as well, we can also form sea, deep sea, … etc…

    Now we are forming a blind map.

    Naming the places on the map, can be part of an achievement.
    For instance, objective, have the most dominant carnivore in 10 adjacent worlds, may allow you to name this particular territory that has formed (e.g. t-rex valley) Then this part of the world is named. Depending on the difficulty level of the objective, the names will last longer. Then you can have quests spreading over adjacent named territory. E.g. have most common fruit trees in a territory covering 4 adjacent named regions. This way larger regions are named, and have the smaller as “provinces”.

    This way, users are competing for the largest named territory. By naming it, they claim it as theirs. They can only lose it, if other players win quests in those areas.

    Then about tenders, objectives, quests :

    A list of tenders/objectives/quests is available every day, onto which players can subscribe.
    If a player does not subscribe, he cannot win. So this will enlarge participation level.
    It does not necessarily mean he has to do anything more than participate, as his creatures are spread all over the online world, but he needs to register.

    The objectives can be for claiming/naming territory, or to gather game points. Game points are a currency needed to for instance use genetic manipulation, and various other things you could think of. Lets call the currency, the Evo :o) Maybe you can even buy land with evo, or enlarge your max number of leased squares, dunno

    The daily objectives must have a registration period of several days (e.g. three) and run over a period of several days (e.g. 10)
    This will keep a much larger part of the world online. Maybe some will be online all the time.

    An objective could for instance also be, to spot the black zimbra and several other rare species, with an indication of how common it is, and in which named region it was last seen. So players will need to be aware of the named regions. Maybe need to explore other worlds in vehicles. This can be done by short term leases adjacent to the region, which may cost Evo points …?

    Timeout.

  17. #17 by ququasar on July 10, 2012 - 3:57 pm

    Don’t have long, but there’s two more points Skylimit made I want to comment on:

    “I can be wrong, but I have the impressions that there is not much variation in size.”

    Actually, there is no limit on size at all. When I was testing the new-fangled radiation gun I accidentally created an eldritch abomination half the size of the map (I’ve since limited how much a creature can mutate in one hit, sorry guys). It glowed cyan.

    The restrictions you’re seeing are either in the Initialise Random routine (creatures can be initialised at any size from 0.1 to 3), or are simply the result of natural selection pressures.

    “Maybe need to explore other worlds in vehicles. This can be done by short term leases adjacent to the region, which may cost Evo points …?”

    I’ve been considering this, but it would have to be an ‘offline’ exploration: you wouldn’t be able to affect another users map, and you’d only get a copy of it (from there it would diverge from their simulation. With careful and strategic manipulation, though, I might be able to keep the two relatively synchronised).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: