Author Topic: Conspec Challenge  (Read 8170 times)

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Conspec Challenge
« Reply #15 on: May 11, 2008, 11:11:50 AM »
I have been running it in 2.43.1i, with multiply and the alga as the only bots.

Well probably I did something wrong. I will look into it.
Oh my god, who the hell cares.

Offline abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Conspec Challenge
« Reply #16 on: May 28, 2008, 10:33:09 PM »
Quote from: Peksa
I guess that's why Aura's got %= instead of =. %= returns two if the first value is within 10% of the second one.
No, Aura was done SG style. It checked if the sum of a few vars was what it should be, although there was an error in it.
The first Etch checked *.refbody in addition to several other vars. The second one doesn't. I was planning to add better conspec recognition back in, but I didn't get around to it. It's rather vulnerable to chameleons because of this.
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline d-EVO

  • Bot Destroyer
  • ***
  • Posts: 125
    • View Profile
Conspec Challenge
« Reply #17 on: November 30, 2008, 03:47:15 PM »
This bot will live quite happily off your alge.

1:      2 is true
2:      1 is false

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
Conspec Challenge
« Reply #18 on: November 30, 2008, 04:41:36 PM »
What if..... What if you made a bot, that could use a number of standard conspecs, and check each of them by 'spoofing' conspec returns , and use each one every now and again, monitoring which ones still work. Add in an extra function, this alga's conspec stealing gene, and check to see if the targetted bot A, passes most of the bot's remaining functional conspecs, and B, doesn't steal it's conspec. If the targeted bot steals the bot's conspec, it's an enemy. If it's an enemy, steal it's conspec and kill it. Use the conspec like a fake I.D. to run around unopposed. Imagine Seasnake with such a conspec system.   It would destroy the IM in less than a day.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Conspec Challenge
« Reply #19 on: December 06, 2008, 08:26:07 AM »
I should mention, last I checked the alge it was broken... I think the amount of sysvars counted as eye/shoot commands or such has changed slightly causing it to delete itself
But the conspecs I've seen here would work though, broadcasting coordinates is a clever way of being sure.

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).

And if you're not concerned about viruses then I ussualy use .dnalen .memloc store because it requires no stores per cycle and can't eb faked. However if you get infected by a virus the conspec will break.

Anyway nice conspecs... I'll fix the alge when I get a chance. But lately all my spare time is going into making a NN mod for DB... and I barely have any spare time to begin with... so it'll be a while

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Conspec Challenge
« Reply #20 on: December 06, 2008, 09:02:00 PM »
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!
« Last Edit: December 06, 2008, 09:03:21 PM by jknilinux »

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Conspec Challenge
« Reply #21 on: December 07, 2008, 06:06:20 AM »
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

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Conspec Challenge
« Reply #22 on: December 07, 2008, 06:27:34 AM »
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.

Offline d-EVO

  • Bot Destroyer
  • ***
  • Posts: 125
    • View Profile
Conspec Challenge
« Reply #23 on: December 07, 2008, 01:48:05 PM »
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).
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
« Last Edit: December 07, 2008, 02:28:52 PM by d-EVO »
1:      2 is true
2:      1 is false

Offline abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Conspec Challenge
« Reply #24 on: December 08, 2008, 11:06:54 AM »
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7716
    • View Profile
Conspec Challenge
« Reply #25 on: December 09, 2008, 03:38:06 AM »
One of the things I really like about Darwinbots is how, years and years after it was created, there's still no perfect conspec recognition.  We always come up with new ways, and new ways to fool the new ways, but there's never a perfect solution.

Offline d-EVO

  • Bot Destroyer
  • ***
  • Posts: 125
    • View Profile
Conspec Challenge
« Reply #26 on: December 09, 2008, 08:43:43 AM »
Quote from: Numsgil
One of the things I really like about Darwinbots is how, years and years after it was created, there's still no perfect conspec recognition.  We always come up with new ways, and new ways to fool the new ways, but there's never a perfect solution.

I think we should keep it this way. There is no perfect solution in reality, so why make one for darwin bots?
you would never see interesting mimic bots evolve like we see in nature
1:      2 is true
2:      1 is false

Offline abyaly

  • Bot Destroyer
  • ***
  • Posts: 363
    • View Profile
Conspec Challenge
« Reply #27 on: December 09, 2008, 01:55:30 PM »
A conspec that uses a store every cycle is plenty secure; it won't be mimicked without copying over the conspec code. Unless your definition of a perfect conspec system talks about maintenance costs, this is it:
- Just one .out sysvar used.
- Leaves .memloc free to look at other useful values.
- Can only be fooled (in the general case) if a bot becomes capable of solving a problem it can't realistically solve: a polynomial of any degree could be used to generate the sequence. This is a problem a person wouldnt be able to solve (seeing just a finite part of the sequence), much less program a darwin bot to solve.
« Last Edit: December 09, 2008, 01:57:33 PM by abyaly »
Lancre operated on the feudal system, which was to say, everyone feuded all
the time and handed on the fight to their descendants.
        -- (Terry Pratchett, Carpe Jugulum)

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Conspec Challenge
« Reply #28 on: December 10, 2008, 04:02:11 AM »
Actualy the alge was able to steal the conspec from excalibur before it broke... it uses 5 different keys, but when you meet an oponent you only need to steal his key... so it works ok, eventualy you end up with all keys.
It doesn't do anything specific for stealing excaliburs key, it just checks where excalibur is looking and copies whatever is there to the same location in ones own memmory... after that you no longer need to worry about it, excalibur will look at that location and see the key... eventualy you end up with all 5.

Offline Pirate-Rob

  • Bot Neophyte
  • *
  • Posts: 1
    • View Profile
Re: Conspec Challenge
« Reply #29 on: August 31, 2010, 12:52:59 PM »
Code: [Select]
' Gene 3 Start gene
cond
start
1 971 store
*971 .memloc store
stop

' Gene 4 Avoiding Family
cond
*.eye5 0 =
*.refeye *.myeye =
*.refkills 0 >
*.refpoison 0 =
*.refvenom 0 =
*.reffixed 0 =
*.memval *971 !=
start
 314 rnd .aimdx store
stop


This is the code I made for this challenge. This is Animal_Minimalus genes to avoid family only it is highly edited.

(I hope I can still post here even though the last post is from 2008, but I think I can because I'm still trying the challenge.)