Darwinbots Forum
Code center => Suggestions => Topic started by: Numsgil on October 06, 2005, 10:13:44 PM
-
Changes I'm making:
1. While being copied to a virus, a gene cannot be executed.
2. Only things between a start/else and a stop/start/else can be copied. Thus no conditions can be included. Thus genes might be inserted into part of the genome of the victim that turns off the start/else statement, causing it to get executed sporadically or not at all.
3. Multiple viruses can be made in a single bot simoltaneously, and stored for later use.
4. Only the gene that wants to be copied can inititiate it's viral copying stage. This is to prevent abuse of #1 as a weapon.
5. Viruses cannot be aimed. Upon exiting the bot, they travel in a random direction.
6. Bots that die release all their stored viruses (finished or not)
Thus, from the above rules, we get these lemmas:
1. A gene cannot be copied into more than one virus simoltaneously. Each virus must be copied one at a time.
2. Multiple viruses of the same gene can be stored, but then they must all be released simoltaneously.
-
hmmm... This makes "The One" absolite does'nt it?
-
I don't believe the One uses viruses.
-
It doesn't and it still owns? alright then...
-
1. While being copied to a virus, a gene cannot be executed.
Eh? Why? What do you mean by "while"? The program works in steps.
2. Only things between a start/else and a stop/start/else can be copied. Thus no conditions can be included. Thus genes might be inserted into part of the genome of the victim that turns off the start/else statement, causing it to get executed sporadically or not at all.
Not very realistic, but OK for balancing purposes.
3. Multiple viruses can be made in a single bot simoltaneously, and stored for later use.
Good.
4. Only the gene that wants to be copied can inititiate it's viral copying stage. This is to prevent abuse of #1 as a weapon.
Would be cool if it worked this way 99% of the time, but in the other 1% it would copy a random gene.
5. Viruses cannot be aimed. Upon exiting the bot, they travel in a random direction.
Very nice!
6. Bots that die release all their stored viruses (finished or not)
Very nice!
-
1. While being copied to a virus, a gene cannot be executed.
Eh? Why? What do you mean by "while"? The program works in steps.
The time .vtimer reads back now is the time that's theoretically being spent copying the viral code. During this time, that gene cannot be executed.
2. Only things between a start/else and a stop/start/else can be copied. Thus no conditions can be included. Thus genes might be inserted into part of the genome of the victim that turns off the start/else statement, causing it to get executed sporadically or not at all.
Not very realistic, but OK for balancing purposes.
Yeah.
Would be cool if it worked this way 99% of the time, but in the other 1% it would copy a random gene.
Hmm.. that's not a bad idea. Should the accidental copy gene still be unallowed from executing?
-
Oh, thought of another one.
6.5: viruses in corpses spend a few turns "feeding" on the body of the corpse, giving themselves a more powerful vshoot amount, thus longer range. They burst out of the corpse when it's body becomes too low.
No DNA copying can be done during this time.
Sorta reminds me of that movie Alien. Would freak me out if I were a bot, and was feeding on a corpse that suddenly explodes with thousands of little viruses.
-
y remove condition? how are you then supposed to make the virus go of when we want?
but the random copying is very realistic, sometimes genes that aint supposed to go with the virus follows with it, sometimes just parts of some genes. I really love it.
-
More Arguments and counter arguments for using somthing better then *.thisgene .mkvirus, I even have a solution at hand.
Argument:
What If you want to pass an exsisiting gene from the robot without evolving it twice (once for the virus gene and once for the robot itself). This brings me to another qustion: Whats wrong with passing conditions as viruses? (if robots can awoid using them anyway)
Counter Argument:
If a robot has a moded "*.thisgene .mkvirus" in each gene what is going to stop it to passing on its entire dna anyway?
Solution:
If you want robots only to pass on one gene per life time then do so:
Make robots only allowed to have one instance of the .mkvirus command otherwise make too expensive (but not impossible) and make them remember what gene they passed the lest virus from , and if they try a different gene in one life time, then make it too expansive.
Do we have a delete gene virus command? I think that needs to be stoped from easly deleting the whole dna. Simuler methods can be used.
-
I appreciate the attempt at a logical post, but you still lost me.
Conditions can't be passed with viruses for the simple reason that a single condition can control multiple genes. Thus an inserted viral gene could control a great number of genes after it, which is too powerful.
Also, there are some issues with copying into viruses, specifically deciding when to stop copying upstream.
The .delgene command can delete genes in the genome, if that's what you're asking.
-
Conditions can't be passed with viruses for the simple reason that a single condition can control multiple genes. Thus an inserted viral gene could control a great number of genes after it, which is too powerful.
Then make conditions passed by viruses only control the viral dna.
I appreciate the attempt at a logical post, but you still lost me.
Witch parts did you not understand?
If a robot has a moded "*.thisgene .mkvirus" in each gene what is going to stop it to passing on its entire dna anyway?
^%^%%%^
What If you want to pass an exsisiting gene from the robot without evolving it twice (once for the virus gene and once for the robot itself).
Lets look at this example:
'gene1
cond
start
-1 .shoot store
stop
'gene2
cond
start
-1 .shoot store
*.thisgene .mkvirus store
stop
Now without the *.thisgene restriction:
'gene1
cond
start
-1 .shoot store
stop
'gene2
cond
start
1 .mkvirus store
stop
Note that I did not have to write -1 .shoot store twice , makes it easyer to evolve.
-
Then make conditions passed by viruses only control the viral dna.
How? I already suggested that conditions only control the gene after it and people didn't like it.
I appreciate the attempt at a logical post, but you still lost me.
Witch parts did you not understand?
For your benefit: here is what makes no sense, or seems non sequiter.
More Arguments and counter arguments for using somthing better then *.thisgene .mkvirus, I even have a solution at hand.
More arguments implies there have been arguments prior. The only arguments prior was when I considered that .mkvirus would only really accept *.thisgene as legitimate.
What I think you mean to say is that you have something better in mind than .mkvirus being so picky.
What If you want to pass an exsisiting gene from the robot without evolving it twice
What do you mean evolving it twice? Evolution as a verb is a mass verb. One Evolution + One evolution = One Evolution. Same with poison. The idea of plural doesn't exist.
Maybe you mean without mutating it twice? But then the only time in 2.37.4 that DNA mutates is during reproduction. In 2.4, mutations will theoretically occur anytime DNA is being copied. Is that what you were referring to?
If a robot has a moded "*.thisgene .mkvirus" in each gene what is going to stop it to passing on its entire dna anyway?
Why did you add the adjective "moded" to that sentence? "If a robot as "*.thisgene .mkvirus store"..." is a sentence I understand. By adding that qualifier, you're changing the meaning of the sentence to something I don't understand.
Solution:
If you want robots only to pass on one gene per life time then do so:
Make robots only allowed to have one instance of the .mkvirus command otherwise make too expensive (but not impossible) and make them remember what gene they passed the lest virus from , and if they try a different gene in one life time, then make it too expansive.
Poor, poor grammer. Rewritten:
Solution:
If you want robots to only pass on one gene per generation then enforce that.
Only allow robots to have one instance of the .mkvirus command in their genome. If they have more, make it prohibitively expensive. Also, store what the last gene that was formed into a virus was. If the bot attempts to form a different gene into a virus, charge the bot extra for that.
In response I'd say: "why do we care if a bot passes on it's entire genome or not?". I certainly never voiced concern over this. The way you worded it it was as if you were suggesting that this had been cited as a concern, and you were addressing it. As it is, I think it's a new problem you just perceived. If so, you should do your best to indicate that it's a new problem no one's thought of before.
Lets look at this example:
'gene1
cond
start
-1 .shoot store
stop
'gene2
cond
start
-1 .shoot store
*.thisgene .mkvirus store
stop
Now without the *.thisgene restriction:
'gene1
cond
start
-1 .shoot store
stop
'gene2
cond
start
1 .mkvirus store
stop
Note that I did not have to write -1 .shoot store twice , makes it easyer to evolve.
.
Ah, but you see that is the cost of creating a virus. That gene can't get executed for a while. It's a tradeoff. There are ways around it, as you just showed, but they still are somewhat difficult.
-
I actualy forgot why I wrote "moded" there :S Ignore moded.
Ah, but you see that is the cost of creating a virus.[you] That gene can't get executed for a while.[/you] It's a tradeoff. There are ways around it, as you just showed, but they still are somewhat difficult.
And what does that have to do with: making it easy for a robot to use its already mutated -1 .shoot store , instead of mutating it twice? I don't get it.
Doesn't the .mkvirus command copy everything in the gene you spesifiy as a virus. Or am I lost here?
Nice beefy patcher you got there with 2.4 , I am likeing it already...
-
And what does that have to do with: making it easy for a robot to use its already mutated -1 .shoot store , instead of mutating it twice? I don't get it.
Exactly that it isn't easy for a bot to do that. If a bot wants to use a gene and copy that gene into a virus and distribute it, it's going to have to balance the benefit of executing that gene for itself vs. the benefit of having that gene in other bots.
Nice beefy patcher you got there with 2.4 , I am likeing it already...
I'm not sure why it's so large to be honest. The next 2.4 patch will be like the old ones, under a meg.