Author Topic: .sexrepro reimplemented in 2.43.1  (Read 17140 times)

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #30 on: February 05, 2008, 08:44:16 AM »
Quote from: EricL
Quote from: rsucoop
Perhaps the explosive shots could be introduced for egg use?
Perhaps I'll add an option for the DNA produced via crossover to replace the "mother's" DNA instead of producing a new bot, perhaps via storing a negative number to .sexrepro.   In this way, time shifted reproduction can be accomplish by a "female" bot laying an egg through asexual reproduction.  After storing a negative value to .sexrepro, the female's DNA would be coded to do bascially nothing - expending no nrg - until fertilized at which point the egg hatches with the combined DNA from both parents.

Explosive shots are a nice idea, but I don't really see them playing a role in sexual reproduction, unless of course they are filled with Tequilla....  

Or are on fire.

-8 is the sperm, so a sack should be identifiable to a robot's eye. Also, the eggs should be attachable to the mother/farther, so that a random bot doesn't go and try to eat the offspring.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #31 on: February 05, 2008, 10:25:15 AM »
Quote from: Endy
Maybe the female simply becomes an egg once properly fertilized by a male.
This is an option given what I am suggesting.  That is, there are four ways to reproduce:

1) Asexually as always
2) "Giving birth" sexually via storing a positive value in .sexrepro before or after being fertilized
3) "Laying eggs" by storing a positive value in .repro and then coding the DNA such the egg stores a negative value to .sexrepro and then does nothing else except wait to be fertilized.  Every gene is predicated with some trigger that does not get set until .fertilized goes positive.  Namely, the only gene or sub-gene firing in the egg is

clearbool
trigger 0 !=
-50 .sexrepro store
*.fertilized 0 !=
1 .trigger store

4) "Becoming the offspring" as you suggest by simply storing a negative value in .sexrepro before or after fertilization

1 and 2 work in 2.43.1.  3 and 4 are post 2.43.1.

Quote from: Endy
Could use explosive shots for firing multiple "sperm" or other types of shots at once. Could be handy for firing at a groups of bots or if you don't have a specific bot you want to shoot.
Right.  This is how I see explosive shots working.  I.e. We add some generic way for the bot to specify a shot should "explode" at some range.  Any shot can potentially be made to explode includng sperm shots.  The power or longevity or whatever of the single shot gets divided up amoung the fragments.  You loose power but gain hit probability.   I'd probably just reuse some of the poff shot code.




Quote from: rsucoop
-8 is the sperm, so a sack should be identifiable to a robot's eye. Also, the eggs should be attachable to the mother/farther, so that a random bot doesn't go and try to eat the offspring.
By using bots for the egg(s), both of what you indicate are in fact the case.  Eggs can be seen and they can be attached and carried around by a parent, before or after fertilization.
Many beers....

Offline googlyeyesultra

  • Bot Destroyer
  • ***
  • Posts: 109
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #32 on: February 05, 2008, 07:38:35 PM »
Could we just make the negative .sexrepro value make a temporarily DNA-disabled offspring (until it's fertilized)? Seems like simpler system, at least to me. Also, I think .shootval should be implemented for -8 shots. Negative=greater range, positive=greater % chance for your DNA to be used.

Offline Peksa

  • Bot Destroyer
  • ***
  • Posts: 118
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #33 on: February 06, 2008, 09:39:53 AM »
Quote from: EricL
I don't plan to reset .sexrepro unless sexual reproduction actually occurs (so that males can detect females in heat) so bots need only evolve the DNA to set this sysvar once in a while or have it set via altzheimers or info shots or similar.
I love the idea of old asexual bots getting fertilized becouse they're getting a little lightheaded and accidentally store negative value in .sexrepro.

 
Quote from: googlyeyesultra
Also, I think .shootval should be implemented for -8 shots. Negative=greater range, positive=greater % chance for your DNA to be used.
I have no objections for increasing the range, but I don't think the tradeoff should be probability of injecting your own dna. I could agree with that, if the probability of injecting your own dna wouldn't rise above 0,5 or the bots would have some countermeasures against it. Maybe increasing range could be made crazy expensive energy-wise, maybe the value of .shootval in the power of 3-4.

EDIT: Or maybe the time stored in the buffer could be larger for -8 shots with shorter range. That way bots could be fertilized much later if needed or from further range more immediately.

I'm not sure if I would like more if .sexrepro was tuned to way it's probably going to remain and work and wait or just to get right to it and experiment with a unfinished version
« Last Edit: February 06, 2008, 09:48:40 AM by Peksa »

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #34 on: February 06, 2008, 11:35:28 AM »
2.43.1 has been released.  Negative values of .sexrepro do nothing in 2.43.1.

I do not like the idea of "temporarily DNA disabled offspring".  Eggs may want or need to execute DNA.  They may want to decide whether to accept fertilization (I.e. set .sexrepro) by a specific male or at a specific time or only when mom is around or just become an asexual offspring after a certain time passes without fertilization or tie to a veggy like an egg sack and grow prior to fertilization (perhaps producing additional eggs) or whatever.   Personally, I prefer to see the need for time shifted reproduction evolve naturally out of existing mechanims if possible, ideally because there is a reproductive advantage to doing so e.g. the sea turtle strategy were mom is large and hard to kill, but offspring are weak and small.  Mom stockpiles large numbers of low resource offspring over time (mom goes out and hunts between laying) which then all hatch at the same time where maybe 1 in 100 make it to adulthood.  That kind of thing.

To this end, I would support a general change such as allowing for asexual reproduction giving less than 1% of parental resources for example.

Adding more range or speed to a shot should IMHO be consistant and work the same for any shot and the cost of this should be simply one of the nrg needed to shoot.  The .shootval code is really ugly.  Cleaning it up is on my list.  When I do so, I'd like to create a straight forward, consistant way for bots to impact the range (I.e. longevity) speed and explosivness of any shot type.

I'm happy to entertain ideas for allowing both the male and the female to impact how long fertilization lasts but I agree that the decision to shoot far and the decision to shoot sperm that surives longer once fertilization occurs should be able to be made independently.  


 
Many beers....

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #35 on: February 06, 2008, 08:34:30 PM »
Quote from: EricL
2.43.1 has been released.  Negative values of .sexrepro do nothing in 2.43.1.

I do not like the idea of "temporarily DNA disabled offspring".  Eggs may want or need to execute DNA.  They may want to decide whether to accept fertilization (I.e. set .sexrepro) by a specific male or at a specific time or only when mom is around or just become an asexual offspring after a certain time passes without fertilization or tie to a veggy like an egg sack and grow prior to fertilization (perhaps producing additional eggs) or whatever.   Personally, I prefer to see the need for time shifted reproduction evolve naturally out of existing mechanims if possible, ideally because there is a reproductive advantage to doing so e.g. the sea turtle strategy were mom is large and hard to kill, but offspring are weak and small.  Mom stockpiles large numbers of low resource offspring over time (mom goes out and hunts between laying) which then all hatch at the same time where maybe 1 in 100 make it to adulthood.  That kind of thing.

To this end, I would support a general change such as allowing for asexual reproduction giving less than 1% of parental resources for example.

Adding more range or speed to a shot should IMHO be consistant and work the same for any shot and the cost of this should be simply one of the nrg needed to shoot.  The .shootval code is really ugly.  Cleaning it up is on my list.  When I do so, I'd like to create a straight forward, consistant way for bots to impact the range (I.e. longevity) speed and explosivness of any shot type.

I'm happy to entertain ideas for allowing both the male and the female to impact how long fertilization lasts but I agree that the decision to shoot far and the decision to shoot sperm that surives longer once fertilization occurs should be able to be made independently.

There would have to be an effective relationship between eggsize, how many cells/multi-cells within the egg (we should support multi-cellular embriotic development, it would require DNA activation in the egg to work properly) and the amount of energy given to the egg. Eggs in real life need a lot of energy to go for a full birth cycle (anywhere between 15 days to nine months), so the more things required to do before hatching would mean more energy reserves. So would this egg creation be limited to one bot, or could a multi-bot produce a copy of itself, taking with it certain specified memories, such as their enegy or pain, or a loaction of an enemy not killed? I think for Multi-Bot developmental purposes, we should allow for DNA transfer between conspec multi ties that take with it x amount of energy (I.e. .eggnrgm) to some other bot and so on, until all the genes have been collected and placed inside an egg by a single bot. I say it should be for conspec use only, because I could see it as a backdoor in to gaining an unfair advantage, by taking a very powerful strand of DNA and combining it with your own and making some super-mutant bot. Although the idea is not that far from real life, some bacteria are capable of copying missing pieces of DNA from a similair bacteria.

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #36 on: February 07, 2008, 12:50:02 AM »
Quote
Adding more range or speed to a shot should IMHO be consistant and work the same for any shot and the cost of this should be simply one of the nrg needed to shoot. The .shootval code is really ugly. Cleaning it up is on my list. When I do so, I'd like to create a straight forward, consistant way for bots to impact the range (I.e. longevity) speed and explosivness of any shot type.

A bit off topic, but what about a moded percentage based system for shots(range, speed, explosiveness)? Any value could be used by the bot, but it would be reduced to just the last two digits. This way the evolution wouldn't be as likely to get stuck at the ceiling value of 99.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #37 on: February 07, 2008, 09:20:29 AM »
To give finer graining, consider this:

0-99 gives x% of nrg, body, etc.

100 - 1099 gives (x - 100) / 10 % of nrg, body, etc.

Or perhaps:

0-99 gives x% of nrg, body, etc.

-1000 to 0 gives -x / 10 % of nrg, body, etc.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #38 on: February 07, 2008, 11:50:17 AM »
Quote from: Numsgil
0-99 gives x% of nrg, body, etc.

-1000 to 0 gives -x / 10 % of nrg, body, etc.
This is essentailly what I was thinking, but across a wider range of negative values.  I.e.

-16000 to 0 gives -x / 160 % of nrg, body to an exteranl offspring, etc.
-16001 to -32000 indicates DNA replacement upon fertilization

This allows for the possibility of really low resource offspring/eggs, down to 0.0000625% of resources.  A bot with 32000 nrg would produce an offspring/egg with only 2 nrg at the lowest percentage.   Not unreasonable in my opinion.   I think we should allow for the possibility such tiny offspring/eggs at least.

For .sexrepro. I'd use -16001 to -32000 to indicate sexual reproduction should replace the bot's DNA instead of creating a new offspring.  The specific value would not matter.  It's the space relative to mutation probability that matters.  For .repro, this range would do nothing, as today.

I prefer using negative values as opposed to positive values above 100 as it spreads the offspring percent resource probability more evenly across the space of possible values, giving mutations a better distribution for hitting percentages across the entire range spectrum including a 1/4 chance of being an egg.  

Many beers....

Offline Botsareus

  • Society makes it all backwards - there is a good reason for that
  • Bot God
  • *****
  • Posts: 4483
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #39 on: February 07, 2008, 02:21:23 PM »
2/3rds of the stuff I did "not compute" but:  
« Last Edit: February 07, 2008, 02:22:32 PM by Botsareus »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #40 on: February 07, 2008, 09:11:29 PM »
I would be careful with DNA replacement.  Rape is one thing, but outright forcing another bot to mingle its DNA with your own is something even more brutish.  I would ask that a bot destined to be an egg be produced specifically for that cause.  Use -16001 to -32000 in sexrepro to mean to produce an egg: it would have all the DNA of the parent, like a normal .repro, but would be available for DNA replacement.  Otherwise it could function like a normal bot.  DNA replacement would occur either automatically after fertilization or by calling sexrepro (any value), depending on you thoughts.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #41 on: February 07, 2008, 09:54:37 PM »
Quote from: Numsgil
Use -16001 to -32000 in sexrepro to mean to produce an egg: it would have all the DNA of the parent, like a normal .repro, but would be available for DNA replacement.  Otherwise it could function like a normal bot.  DNA replacement would occur either automatically after fertilization or by calling sexrepro (any value), depending on you thoughts.
Sounds good to me.  It will be a few weeks before I get to this (vacation coming up).
Many beers....

Offline JossiRossi

  • Bot Neophyte
  • *
  • Posts: 31
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #42 on: February 08, 2008, 01:42:59 AM »
I'm sure this is because there is more going on but 2.43.1 goes about half as fast as version 2.43z. Is the sex stuff responsible for this alone?

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #43 on: February 08, 2008, 10:29:37 AM »
Quote from: JossiRossi
I'm sure this is because there is more going on but 2.43.1 goes about half as fast as version 2.43z. Is the sex stuff responsible for this alone?
Shouldn't be directly, but I did make a change to the shot array compact routine to handle -8 shots.   That may be it.

I'll do some profiling shortly.  It's time.  The next drop will have some perf work.
Many beers....

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
.sexrepro reimplemented in 2.43.1
« Reply #44 on: February 08, 2008, 05:01:00 PM »
Is there a way to push information into memory locations of an egg? Through a tie or info shot?