General > Bot Challenges
Conspec Challenge
jknilinux:
Actually, that's kinda cool- virus infection automatically messing up conspec. That way, bots attack infected members of their own species... I consider that a feature instead of something to worry about.
EDIT: WHOA! I'M A BOT LORD!
Moonfisher:
The downside is that the infected bot also attacks it's own
But I guess you could put in a gene to save the amount of genes, and one to react to infections. It would just be the 2 last genes.
I know you can use .genes dec to help hide the presence of a virus, so maybe it would be possible to just know the size of your virus and deduct it from dnalen... if that's the case then you also need to save your dnalen every cycle in your first gene and then check against the saved value instead of the location for dnalen (But then it costs a store every cycle).
start
*.dnalen X sub 110 store 'Where X is the dnalen of this gene
*.thisgene .delgene store
stop
cond
*.dnalen *110 !=
start
0 .shoot store
-1000 .mkshell store
-1000 .strpoison store
0 .up store
0 .dx store
'asf
'asf
stop
jknilinux:
But my point was that's good- maybe not exactly in F1, but it is neat to kill off diseased members of your own species, to contain the virus.
d-EVO:
--- Quote from: Moonfisher ---So far the conspec I like the most is the one that was similar to the anti parroting conspec from bascillus. Can't rememebr who posted it, but the idea was more or less the same, except you broadcasted a random value from 0 to 100, and added 10 on the other output.
And the reason I like it is beacsue it can be compressed into one output without too much trouble. (To spend less energy on stores every cycle).
--- End quote ---
that was me
one problem I had with the alge using this system.
when the alge simply copy the in/out syvars it doesnt work because my bot attacks bots with the same in/out as it
but when an alge copeys another alge that copys one of my bot it is safe. so aventualy you just have a lot of alge stareing at each other safe from attack.
fond a way around this by seeing if the alges in/out changes each cycle. problem is it takes 2 cycles to evaluate an enemy which is ok when they are just alge but in an f1 match it is kind of useless.
I fixed it by making the ratio between the conspects a syvar which is fixed for a whole species. such as *.totalmyspecies and just through in a *.totalbots
that way the enemy cant reproduce without being vunerable to attack and every time your bot repros eny unupdated enemy becomes vunerable.
very easy to throw in a few other syvars just to be sure
abyaly:
The best conspec I have seen that doesn't require using stores to change values is Excalibur's.
It uses multiple memory locations and memloc. I don't remember how many, but let's say 10.
At init it picks a random number from 1 to 10.
This bot will check the nth memory location.
A conspec-stealer, in order to steal a memloc, must do the following:
-read the value of .memval in the opponent
-read the value of *.memval in the opponent
-assign *.memval (in the opponent) to the necessary location.
Excalibur uses the same value in each memloc, but it is not required.
This memloc can theoretically be fooled, but it's really hard. You need to keep a list of memlocs, and the list has to be large enough to keep up with how many the opponent uses, and you need to be able to distribute the entire list (and the associated values) among the species. The total number of locations dedicated to stealing conspec values has to be double the number of locations the opponent is using. At around 50 locations, the energy cost of the conspec is still low, but communicating this quickly becomes infeasible.
Although, if you don't mind using a store every cycle to guarantee the conspec is secure (I don't), then the options are endless. You can use pretty much any number sequence (in synch with either .timer or .robage). Saber uses robage. Here is the code:
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']*.type .thrust =
.id1 *.robage .key1 mod .key2 add mod dup
.out1 store
.tout1 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
*.type .parry =
.id2 *.robage .key1 mod .key2 add mod dup
.out1 store
.tout1 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
*.type .riposte =
.id3 *.robage .key1 mod .key2 add mod dup
.out1 store
.tout1 store
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version