Author Topic: Universal Species Recog Gene Protocol (F1 conditions)  (Read 3847 times)

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« on: February 14, 2008, 04:41:01 PM »
As more and more bots are developed, each one gets more and more DNA making it very difficult to tell who's who. There have also been many methods at creating symbiotic bot relations and multibots with very complex functions. All of these features make it difficult to tell veggies from enemies and conspecs. We have to agree that regardless of the number of bots in the environment, the best to thrive are the ones that work together (this is how the Invincibles are so effect against many array of enemies). So, why instead of breeding multiple destructive bots, we create bots that attempt to behave in a simbiotic balance with all other bots. Of coarse one would have to include their own method of deactivating this switch when it fails, but it would not be nessecary. Once in internet share mode, multi-bots could form on any computer connected, and the species could all vary. The ultimate diea would be to build a bunch of simple bots that only perform basic tasks, but work well with other bots when tied together, to act as an efficient hunter and defender/harvester. This would also cut down on muatation rates within the bots' genes, making it less likely that one of them will start tie feeding from a friend. But in order for this to be effective, at least one out location would have to be commited to showing the 'friend' value to let all others know its a conspec.  The very logistics of the inner workings of the bot would be up to the designer, but the conspec identification of a multi-friend would have to be set so that the genes which could destroy eachother are return to a 0. What do the DB bot designers' think of this?
« Last Edit: February 17, 2008, 09:21:17 AM by rsucoop »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #1 on: February 14, 2008, 05:18:37 PM »
What's to stop someone from cheating?

Offline googlyeyesultra

  • Bot Destroyer
  • ***
  • Posts: 109
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #2 on: February 14, 2008, 06:58:34 PM »
I proposed something like this in my F1 alliance thread. It ultimately died out, but if you can set this up nicely, then let's do it.

Furthermore, Numsigl, cheating is already possible. I can always just use the same freevars as Ymir to fool it's memloc, or create a bot with the same amount of eyes. I haven't seen people do this kind of thing, so I think it's safe that we can assume that they won't. And if they do, it's not hard to just switch our conspecs around.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #3 on: February 14, 2008, 07:32:39 PM »
In the leagues it rarely happens because it would just cause an infinite cycle of people changing conspec ID numbers to out compete the other guy.  But in IM, there's an even stronger FFA attitude.  Not to mention the introduction of mutations, which could cause a cheater to arise naturally.

But if you want to go for it, by all means do.  I can still very easily be surprised by things in this program.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #4 on: February 15, 2008, 01:25:37 PM »
Any sort of Anti-Cheat genes would have to deeloped by the designer. I will present a new bot for this project that will have memory protection and certain values that have to be meet before a friend is truely determined. I have thought about even createing a 'gift' gene that would cause younger bots to give up any extra veggies to an older bot. One easy way to prevent a supposed friendly bot from tie feeding is simply forcing any returned pain to be sent back from the reciever, making its feed pointless. Unfortunately, I have come no way near to perfecting a mini-bot form of a multibot with any real application, each Slim Evo seems to get larger and larger in DNA length. Most likely I will place random gene checkers throughout the bot's DNA, as to prevent useless genes or overly agressive ones. One important thing I wish to see grow is memory allocation for empty variables. More specifically, would be empty variables designated only within a tie, so that any bot could manipulate it without directly effecting the bot tied to it; I.e. virtual memory for multi-bots. If people think this soudns like a good idea I will make a suggestion for it at a later time. I would suggest that any one who wants to be involved use a lot of memory for Conspec related identity. My goal is to base it entirely off of variables, and not on DNA Length or refeye. Slim Evo 4 will have 50 variables dedicated for Conspec recognition using time lapse and individuality to identify exactly who are its foes, what the veggies are, and who is truely friendly or even neutral. Under this ammount of information, only 25 bots can be remembered at a time, and emotional values stored for that bot (1 - friend 0 - neutral (-1) - enemy). THeoretically, identity within the species would be neutral by default, so that they do not start fighting eachother and become each other's enemy. But the 360 Eye system I have used requires alot of vaqriables; so their will be inevitable limitations to such a bot. However, relying on variables will no doubtly be far better than eyes or dna, because the outputs could mutate at random and not effect conspec recognition, but simple commands given as a group, such as coordinates or orders. I will ladly share the out commands I will be using for anyone intereseted in communication attempts through conspecs as well.

So, if they try to switch the refeyes or dnalen, a Slim Evo should still be able to know its an enemy. Secondly, any attempt to camoflage to the bot would result in death; a simple little gene to detect an attempt to mask as that bot (or in this case identiy theft) will result in that species becoming an enemy (or at least that bot). Since Slim Evo 3-2 came out, identity of indivduals was introduced, every bot stored a 5-digit value into out1; everytime they meet a new conspec, they checked if they had room for memory or never meet them, then they stored it into the next available memloc. With the next version, it would have to be a 4 digit number maxed to 32000, so that more bots could be meet without identicles. Another feature I would like to add would be some other important value that could be checked again later to determine if some other bot has attempted to steal a friend's identity. When I work out the tie reading for shared individuality memory, so that potentially the Slim Evo could encounter 10 * Tied Conspecs. This would make for a more complex bot with far more potential for learning. Once this is perfected, true tactics could be derived by the bot using multiple variables to record certain lapses of an individual, and predict or determine the bot's next move. But since each cycle allows for one tmem push, not much can be achieved until something happens to change that.
« Last Edit: February 15, 2008, 01:40:27 PM by rsucoop »

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #5 on: February 17, 2008, 09:18:58 AM »
Creating a ref-less conspec recognition system:

allocate 100 variables and you can have 25 bots stored for conspec recognition. Since we can assume die-offs will be often, simply overwiting the first bot identified would be ok. So we have 25 variables to record a name or conspec number (depending on what out is used for conspec with the individual, I like to use out1 as the botname for identity). Any time a bot is seen, several things are recorded into one variable. The first question asked, have I met this bot before? If yes recall information on bot; if no create new profile for the bot. Is the bot moving towards me? Is the bot changing out1? -If yes, then the bot is not a conspec, but might be neutral. Is the bot facing me and I'm shooting a value of -2 towards it? If yes, its an enemy; if no no change. Am I tied to the bot? If yes; is the bot trying to overfeed (I.e. trefpain != mypain) Destroy with shots and tie feeding: if no allow feed. If no, tie to the bot once time seen has extended to 50 cycles. Once all of these have been evaluated, a value is stored in the 25 identity-profile values.

Protocol for genes looks like this:

New bot? - No Recall genes end protocol
Yes - Is the bot shooting me?
      No - Bot is neutral or friendly
      Yes - Bot is enemy
Am I tied to the bot?
      No - Have I known this bot for say 50 cycles?
             No - Play it safe, wait to tie
             Yes - Tie to the bot
      Yes - Is the bot feeding *.trefpain > (*.pain - external factors precalulated every previous cycle in different gene protocol
             No - Allow for feed
             Yes - Shoot and over tie feed the enemy - store as enemy
Is the bot changing the out1?
     No - Bot is friendly
     Yes - Bot is different species, possibly neutral
Is out1 = in1
     No - Neutral/Friendly
     Yes - Bot is enemy or identity theft
Store Species info (0 - neutral, -1 enemy, 1 friend, 2 unknown)

We give the bot the choice to be confused, when this happens one of the factors that was not determined is checked with other values: Out1 changing but not agressive, check the DNA Length if stored in .in value. Ties not remaining? Beging a readtie only protocol to check for errors in the DNA of a familiar.



The remaing 50 variables necessary: Bottime, dnalen/random value
Then from their about 25 variables for read and write commands are necessary for identifying what has been stored in the Randomvalue locations.

The External factors would be a -2 in the direction != to the angle towards the individual. Tie feeds from other conspecs or potential enemies. Attempting to limit numties to 4 conspecs only 8 more values are commited to external factors, 4 tie-specs (found in familiar values), 4 tie-feed conspecs.

The more effective the bot is to be, the more memory requried. The above protocol works for Slim Evo, because when I start with only 1 Sliom Evo 3-2, only about 20-30 bots are created before major kill offs begin. As mutations occur, the entire system could become ineffective, or may become overly-effective depending on  what check valuesw are changed. Importantly, no change in refeye will not confuse this type of check system. However, a bot firing random values into random locations might really confuse the Species Recog genes.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #6 on: February 20, 2008, 05:50:04 PM »
I'm not sure if I got the point here, maybe mutations are too destructive to maintain what I have in mind...
Either way, if you just need a universal conspec, why not just do this :

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
*.eyef 0 !=
start
*.body *.nrg add *.aim sub .out1 store
stop

cond
*.eyef 0 !=
*.refbody *.refnrg add *.refaim sub *.in1 !=
start
'Kill
stop

You could do the same using .memloc/.memval ofcourse...

And as always someone could just copy the exact same values and algorith that you're using.

If you're not going for cross species you could just add *.totalmyspecies to the equation to make sure people can't duplicate it.
If I'm completely missing the point here, then this could at the very least be usefull for short bots.
I can't think of a way to fool this method, unless someone can think of a way I'll probably use it if I decide to keep working on Pacifist.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #7 on: February 20, 2008, 06:01:36 PM »
The only downside is that you're storing a new value every cycle, which could concievably cost quite a bit of nrg to maintain.

But all conspec systems break down when mutations are allowed, because a bot could mutate to attack friends, and still maintain the appropriate conspec code.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Universal Species Recog Gene Protocol (F1 conditions)
« Reply #8 on: February 20, 2008, 06:19:30 PM »
Quote from: Moonfisher
I'm not sure if I got the point here, maybe mutations are too destructive to maintain what I have in mind...
Either way, if you just need a universal conspec, why not just do this :

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
*.eyef 0 !=
start
*.body *.nrg add *.aim sub .out1 store
stop

cond
*.eyef 0 !=
*.refbody *.refnrg add *.refaim sub *.in1 !=
start
'Kill
stop

You could do the same using .memloc/.memval ofcourse...

And as always someone could just copy the exact same values and algorith that you're using.

If you're not going for cross species you could just add *.totalmyspecies to the equation to make sure people can't duplicate it.
If I'm completely missing the point here, then this could at the very least be usefull for short bots.
I can't think of a way to fool this method, unless someone can think of a way I'll probably use it if I decide to keep working on Pacifist.

I like it. I think it would last for many generations. That will make me rethink the Universal Language Translation protocols.