Harvasting bot collective canibals

From WikiManual
Revision as of 14:12, 8 November 2008 by Peter (talk | contribs) (Copy pasted the bot.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

'The bot in the end became a bit more advanced then i had planned. 'Its a result of playing with all the inner valleus 'I still dont understand it all, but hey this bot allready defeats lots of other bots. 'Its not that smart i thnk but reproduces with not that much energy 'As a canibal its stable alone for quite a while, but as a group of pirhana's its also a feeder. 'Touhgh in such a group it not realy kills it prey fast so its a long lunch... 'And so it has time to create groupspring, as sexual reproduction from a group. ' 'SENSORS and variables '=========================================================================================

' A basic sensor is an eye ' to get info from an eyse you need to read it out. ' this is done by command: ' *.eye5 ' Its reads from fronteye (number 5 is front) ' Its the same as reading from memory location *505 (dough thats harder to understand). ' Its value 'll be greater then 0 if it sees something ' ' *.up my own up speed. ' note to add 30 up to my own speed use: *.up 30 add .up store ' ' ' ' ' Often remote sensed bots start with ref, and local sensors with my like: ' ' *.refeye *.myeye (counts number of eyes often used for species comparison) ' *.refvelup (relative bots speed from your eyevector) ' ' ' 'CONDITONAL COMPARISON '==========================================================================================

' = equals ' %= almost equal, whitin 10% ' != notequal ' > greather then ' < smaller then ' ' ' ' What in basic languaga would be: ' IF EYE = 10 THEN.. ' ... ' END IF ' ' ' Is in darwin bots genetics ' cond ' *eye5 10 = (note type of comaprison comes last). ' ' ' Other type of sensors ' *.refeye *.myeye != ( count other bots number of eyes, and compare it to my number of eyes) if not equal.. ' ' ' MOVEMENT '=============================================================================================

' *.refveldx .dx store (move at otherbots, sidewaymotion speed ) ' *.refvelup 30 add .up store (compared to my bot's eyte direction the other bots speed + 30) ' '


' So lets move forward with our little cel. ' And lets do it when there is nothing big nearby ' the valeu of an eye seams to get higher when its more nearby ' so 100 is your eye bumps into something and 10 is something far away. ' Wel i dont want to go to fast if something gets nearby. ' so i check for a cond (condition) in which the eye hasnt anithing nearby as close as 40 ' Then i start what i want to do in this condition ' That is go forward 8 by storing 8 in the upwards engine ' Thats the end of comands for this gene so this gene comands then stop ' GENE 1

cond

  • .eye5 40 <

start 8 .up store stop


'GENE 2 ' Gene 2 Food Finder and eater ' is food nearby? ' But altough its a killer cell it wouldnt eat young childs younger then 300 cycli ' Such child could be his own children, also his enemy or young plankton. ' Dough plankton childs or enemy childs will not be eaten. ' anyway when it does meet the criteria it will shoot it, shooting = eating. ' this is done by storing a negative value in .shoot memory ' The next 2 lines align us better with our target ' refveldx (targets orientation, store it in local orientation ' And now for our engine store there a relative speed 10 higher as our targets speed


cond

*.eye5 40 >
*.refage 300 >

start

-1 .shoot store
*.refveldx .dx store
*.refvelup 10 add .up store

stop



'GENE 3 ' If i remember one thing of bioligy lessons in fact my only lesson ' That it had all to do with reproction, DarwinBots can reproduce too ' The question is when should we do this, and how does it work. ' Wel most cell in darwinbots devide asexual, only based on their energy reserve ' Energie level can be retrieved trough sensor *.nrg ' most of the times i saw *.nrg 5000 > ' but i will use a lower value 2500 in this one just for fun...(life is like go and multiply) ' Also the question is how much energy would you like to give to your child mostly I see ' 50 .repro store ' will result in a child with 50% of the energy stored it is commonly used. ' But just for the fun of it, the parents will only give 30% (childs are weaker then parents) ' After givin birth the parent runs fast away, yup that can happen in nature.

cond

  • .nrg 1500 >

start 30 .repro store '10 .up store 100 .dn store stop


'GENE 4 ' if it doesnt see anything every hunderst turn ' then perform a command .aimdx (clockwise turn) ' for the other counter-directipon use aimsx ' A total turn in DarwinBots = 1256 units ' so 1256 = 360 degrees or 2pi ' 628 = 180 pi ' 314 = 90 pi/2 ' lets add a random valeu of such degrees to the current direction. cond

  • .eye5 0 =
  • .robage 100 mod 0 =

start 628 rnd *.aimdx add .aimdx store stop


'GENE 5 ' This gene realy is programing evolution at work.. :) ' What i tried to do first was remove a child's birth tye, if also he had clear runaway path. ' Dough i didnt clearly understood how that worked. ' For some reason a tie kept alive ' So i started up mixing code from the website, and then it turned into something else ' I left this killer bot keep his tye's, till it has more then 1500 energy (adulthood) ' Now my first tought was to run away forward ' Hmm.. but if runned backward and not to fast ' Then it would probaply gonna eat from something it had catched before. ' I still regulary see some of them break free, like a spore thats nice. ' Dough since also a single bot could could activate this gene but should not runaway from its food.. ' so lets dont walk that fast backwards just say 5 or so.

cond ' *.robage 1

 *.eye5 60 <
 *.nrg 1000 >

start

.tie inc

'*.tiepres .deltie store 5 .dn store stop


'GENE 6 ' i actualy found from the website ' it eats the others bot energy (plankton here we go...) ' but also dumps waste in the other bot. ' it took 99 % of energy, but hey lets be a little bit fair here and take 16% ' that sounds small, but keep in mind we dont break the tye.. ' ' note when not using any conditionar and changing this valeu to 5 10 15 25 etc ' gives nice side efects in ofspringg creatures ' soms might be able to live together with 1 plankton a quationing of balancing this valeu. ' ' However i took a different aprouch i wont eat others energy all the time. ' So there will be differences in a group (to let others be able to get energy offspring). ' The way it is balanced a cingle plankton and a single canibal will also grow slowly.


cond

  • .robage 20 mod 0 =

start 50 .sharenrg *.multi mult store .sharewaste *.multi mult inc stop



' So that was the whole genome, it ends with the word end, ' But wait there is much more then this writing above here. ' A lot of other function vars and commands can be found here at this site: ' http://www.darwinbots.com/WikiManual/index.php?title=Sysvars