Darwinbots Forum

Bots and Simulations => Bestiary => Interesting behaviour bots => Topic started by: Gambit on April 27, 2008, 07:37:24 PM

Title: Communitus_Friendlius
Post by: Gambit on April 27, 2008, 07:37:24 PM
'If there is no food then look for some randomly.
cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 314 rnd .aimdx store
 10 .up store
stop

'peripheral vision left
cond
 *.eye1 0 >
start
 52 .aimsx store
 *.refeye *.myeye !=
stop

peripheral vision right
cond
 *.eye1 9 >
 *.refeye *.myeye !=
start
 52 .aimdx store
stop

'if you find something chase it
cond
 *.eye5 0 >
 *.refnrg 3000 >
 *.refeye *.myeye !=
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop

'Attack the food if its strong enough but dont kill it. Let it live so you can feed on it later. Though bigger bots may accidentally kill prey.
cond
 *.eye5 50 >
 *.refnrg 3000 >
 *.refeye *.myeye !=
start
 16 .shootval store
 -1 .shoot store
 *.refvelup .up store
stop

'poop
cond
*.waste 200 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop

'if you find something that isnt food (a relative) heal it if it needs
cond
*.eye5 50 >
*.refeye *.myeye =
*.refnrg 5000 <
*.nrg 5000 >
start
-2 .shoot store
stop

'if you get huge reproduce
cond
*.body 20000 >
start
40 .repro store
stop

'if you find a strong relative kill it (to control population)
cond
*.eye5 50 >
*.refeye *.myeye =
*.refnrg 10000 >
start
-1 .shoot store
stop

end


this bot is built around helping its species as a whole. it preserves food, heals the weak, kills the rich. its really kind of a communist actually...

it has peripheral vision to make it an effective hunter. but it lacks shells poisons venom or ties or any of that advanced stuff. it does very well against any packaged bots from previous versions and is the best bot I've made so far.

its biggest problem is it has a high tendancy to get this nasty mutational disease. it takes out the breeding condition causing it to breed itself to death and all the offspring breed. it locks up the program very quickly. if you turn off mutations you'll be amazed as its effectiveness though.
Title: Communitus_Friendlius
Post by: bacillus on April 27, 2008, 07:55:24 PM
A very good bot, although you may need some body control in there.Try this:
*.nrg 3 div *.body sub dup .strbody store - .fdbody store
this makes sure body:nrg is always in a 1:3 ratio.
Title: Communitus_Friendlius
Post by: Gambit on April 27, 2008, 08:25:12 PM
but I like em big.
and they only reproduce at 20000 body. thier body cuts in almost half after breeding


any idea how to make them less suseptable to that mutation I mentioned? they mutate changing the > symbol to a <

then the babies have babies and so on and it just goes nuts like 10k bots in a little cluster and it locks up.

Title: Communitus_Friendlius
Post by: bacillus on April 27, 2008, 08:44:50 PM
One way would be to note down the DNA length, then use the condition *.dnalen number != to self-destruct any bot that mutated lengthwise. Another option would be to self-destruct when something happens that shouldn't happen
Having only big bots reproduce in such a social bot might seem like a bad idea because a.) There wouldn't be much to share nrg with and b.)Body only builds up automatically when nrg level is 32000, so if a bot comes along and starts eating yours, it'll never reproduce. It happens often that a huge bot will pop because it runs out of nrg, even though so much is stored in body mass.
Title: Communitus_Friendlius
Post by: Gambit on April 27, 2008, 08:47:27 PM
OOOH!
whats the self destruct command!?!?....erm...please... lol

I wanted something like that originally. so that they produce 1 big offspring and die. I kinda wanted them to be single celled humans... sorta


and I'm okay with them popping. they limit thier own population that way. its designed to prolong the race. not much care for individuals.
Title: Communitus_Friendlius
Post by: bacillus on April 27, 2008, 09:03:02 PM
There's lots of ways, you have to mess around a bit to see which works best. Some methods include shooting with shootval set to 32000, or making huge amounts of slime/shell/poison/venom.
Remember, one huge bot popping is a tremendous waste of nrg for the species; it should be sutaining a minimum amount of nrg so it has enough time to transfer its body mass on to others. Consider using -6 .shoot instead of -1 .shoot so you can directly feed of body mass. It's also about 10 times faster (I think).
Title: Communitus_Friendlius
Post by: gymsum on April 27, 2008, 09:47:31 PM
The only way to ensure the mutation does not affect the bots long term, is to produce many bots by the original copy. The more copies made of your original, the better its chances for genetic survival. I am not sure how destroying itself will produce a real evolutionary result many programmers seek in their design. Change your reproductive requirements using numties or something besides body, say robage; bodies take way longer to rebuild over time, so reproduction is slower, yielding possibly 3-5 offspring a generation. No matter what, if you allow mutations there will be mistakes, but you need to use either harsher environment settings, or something along the lines of population control. I have cancerous problems with every bot I ever test, but the environment usually kills the bot from costs and over production without finding more energy to harvest.

As programmers we must utilize everything at our advantage, and that is DB. Mutations are meant to improve and specify your species to see how worthy the genetic code actually is, there will be many failures, so run with large populations, like 80 for large bots, and say 30 for smaller bots (dna len, not mass or radius). There's no need to cause a bot to become sucidal, this prevents many specific cospicuous relations, such as legumes.
Title: Communitus_Friendlius
Post by: Numsgil on April 28, 2008, 04:12:50 AM
legumes?
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 06:56:08 AM
well they are supposed to self limit thier population

but I see what your saying about how they cant evolve.

but the mutation locks up my computer after only 20 cycles.

I'll try using the environment...


though I did find one use after saving the mutations DNA and patching some holes....     nighty night bascilla

ROFL
Title: Communitus_Friendlius
Post by: Peksa on April 28, 2008, 08:02:35 AM
Often the conditionlessly reproducing bots kill themselves pretty quickly, you just have to wait a while. Other option is that it's simply more advantageous to be very small and have a large number of offspring and the bots with "nasty mutational disease" will take over the sim.

After seeing the latter happen in so many sims, in my more recent sims I've used bots that has no conditions for reproing in the first place. I'm hoping that if the enviroment calls for it some conditions will evolve on their on. Also it allows nice big stable populations to avoid problems with mutations in asexual populations (muller's rachet).

But actually conditionless reproing isn't conditionless. A bot with under 2 body can't reproduce, so bot's can't actually reproduce to death, it's the costs that get the small ones.
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 08:06:33 AM
okay what kinda computer are all of you running?

it did help like EricL suggested to make the room larger but only for a bit. it locked up after 1000 offspring and about 4 seconds...

theres no time to see if its "more advantagous" because it just freezes.
Title: Communitus_Friendlius
Post by: Peksa on April 28, 2008, 08:24:17 AM
Quote from: Gambit
okay what kinda computer are all of you running?

it did help like EricL suggested to make the room larger but only for a bit. it locked up after 1000 offspring and about 4 seconds...

theres no time to see if its "more advantagous" because it just freezes.

I'm running with 2,4 GHz dual core. The sim's got 400-700 bots most of the time with quite evem spread on size 12 sim and some veggies too. It run's at 8-16 cycles per sec, depending on bot and veggie density and sometimes drops to 1 c/s when veggies start to reproduce conditionlessly.

The conditionlessly reproducing veggies die out pretty fast though. The sim is set so that veggies get no body at all for free. As the veggies are fed by the kilobodypoint, small veggies get so little energy that they don't live long enough to trigger the body creating genes and never get to reproduce.
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 09:49:15 AM
my processor is only like 1.7 ghz and only 512 mb ram...

so its my computer...
Title: Communitus_Friendlius
Post by: Peksa on April 28, 2008, 10:25:49 AM
Yeah. It's quite possible to run sims with smaller populations though. It just takes a while longer to get over the conditionless reproducing bits with slower computer.
Title: Communitus_Friendlius
Post by: EricL on April 28, 2008, 10:45:25 AM
The memory more than anything.  Where there are tradeoffs to make, I use memory to improve perf.  This makes the working set of DB larger than you might expect.  If you start paging out your working set, than the drive starts to be in the loop on memory access operations and the program might as well really be frozen.

If you are running unecessary stuff like Word on the machine, even if it's minimized, try closing it.  Might help a little by freeing up a few meg and get you over the hump until the cancerous bots die...
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 01:41:32 PM
you know... I do normally have the darwin bots folder open and notepad and word and sometimes IE because I work and test at the same time...
Title: Communitus_Friendlius
Post by: bacillus on April 28, 2008, 05:43:51 PM
I must say that mine's a bit more cluttered. On the laptop screen I have DB open for testing bots, about 5 different bots, only one of which will ever stay, and the web browser. On my external monitor I have everything I need to run and record League results.
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 08:31:38 PM
I'm not posting the DNA until someone spots it in action... I want to it be a surprise and I dont want counter measures made before it makes its move

but be on the look out for

Communitus_NotSoFriendlius

rofl like the name?
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 08:46:37 PM
p.s. it is NOT the conditionless breeder one. its a whole new concept
Title: Communitus_Friendlius
Post by: bacillus on April 28, 2008, 08:47:31 PM
Check out my new Ant Bot; it's not great, so don't run it in with others, but it's got very good behaviour.
 Btw. I can tell you have something against me by the way you keep sending me possibly the worst bots I ever made or some random swarmer to spoil my sim, which is highly unsucessful. I have nothing against that, just as long as it does actually lead to you making better bots.
 
Quote
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 09:04:10 PM
nothing against you.

I like to pick high targets. and yeah it is leading to better bots. friendly competition through simulatedly violent means.

here he is. CFs big nasty brother

I removed a few things and replaced with #'s. cant have you making an anti viral. and if you decide to use the delgene I already have a way around that.

'Communitus_NotSoFriendlius
'Community Bully
'Communitus_Friendlius's mean older brother
'I took some suggestions from some very helpful master bot makers
'And added a self destruct virus for use on hostile heterotrophs
'May hit plants but isnt meant to
'They look out for each other and will heal weaker ones in the group

'virus nonactivator
cond
 *.robage 0 =
start
 # ### store
stop

'make the virus
cond
 *.vitmer 0 =
start
 3 .mkvirus store
stop

'a virus for enemies
cond
 # *### !=
*.vel 0 !=
start
*.thisgene .mkvirus store
200 .vshoot store
-2 .shoot store
1 .shootval store
stop

'If there is no food then look for some randomly.
cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 314 rnd .aimdx store
 10 .up store
stop

'peripheral vision left
cond
 *.eye1 0 >
 *.refeye *.myeye !=
start
 52 .aimsx store
stop

peripheral vision right
cond
 *.eye1 9 >
 *.refeye *.myeye !=
start
 52 .aimdx store
stop

'if you find something chase it
cond
 *.eye5 0 >
 *.refeye *.myeye !=
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop

KILL!! lol
cond
 *.eye5 50 >
 *.refeye *.myeye !=
start
 16 .shootval store
 -6 .shoot store
 *.refvelup .up store
stop

'poop
cond
*.waste 200 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop

'if you find something that isnt food (a relative) heal it if it needs
cond
*.eye5 50 >
*.refeye *.myeye =
*.refnrg 5000 <
*.nrg 5000 >
start
-2 .shoot store
stop

'eat some of your body fat
cond
*.nrg 5 div
*.body sub dup
start
.strbody store - .fdbody store
stop

'reproduce
cond
*.nrg 10000 >
start
40 .repro store
stop

'if you only have a bit of energy and are attacked shoot a little virus
cond
 *.eye5 0 >
 *.refeye *.myeye !=
 *.pain 1 >
 *.nrg 6000 <
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
 25 .vshoot store
stop

'if you have over 6k energt and are attacked go all out on the virus
cond
 *.eye5 0 >
 *.refeye *.myeye !=
 *.pain 1 >
 *.nrg 6000 >
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
 900 .vshoot store
stop
Title: Communitus_Friendlius
Post by: bacillus on April 28, 2008, 09:09:26 PM
Not bad.
I suggest making the virus depend on your energy so you don't die when firing it eg.
*.nrg 2 div .vshoot store
This way big bots can also shoot further.
The problem with replicating inside your host is that they can target out the virus with *.mkvirus .delgene store. You may want to del their genes first eg.
*.thisgene 1 rnd 2 mult -- add .delgene store
This will randomly alternate between deleting the previous gene and the next gene.
If you really want the virus to kill, put 32000 into vshoot and cut out the unnecessary stuff eg. the shoot bit. You do know the 1 .shootval store only dampens the shot? (Not sure on this one, but I think the default is 100).
The 3 .mkvirus store is also a bit dodgy, because a virus is randomly inserted, and the virus may move from gene #3 to gene #4 or something like that. Make a temporary variable called vgene and in the gene before the virus put *.thisgene ++ .vgene store and then replace 3 with *.vgene.
Yet another problem is that if the virus inserts itself before the safety gene and the bot reproduces...
You should be able to figure that one out by yourself.
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 09:20:16 PM
the -2 shoot is to slowly bleed them while they make more viruses. 32000 is an instant kill and it doesnt have time to charge the virus timer.

also can venom be used to store a number in delgene? nullifying it.
Title: Communitus_Friendlius
Post by: bacillus on April 28, 2008, 09:22:46 PM
<sigh> I tried it dozens of times, It doesn't work.
I found the ultimate conspec system that also kills mutants at the same time. Interested?
Title: Communitus_Friendlius
Post by: Gambit on April 28, 2008, 09:24:27 PM
Quote from: bacillus
<sigh> I tried it dozens of times, It doesn't work.
I found the ultimate conspec system that also kills mutants at the same time. Interested?

hmmmm YES

lol

so you cant nullify delgene... maybe with poison? set it to didly. memory shot?


Quote from: bacillus
<sigh> I tried it dozens of times, It doesn't work.
I found the ultimate conspec system that also kills mutants at the same time. Interested?

hmmmm YES

lol

so you cant nullify delgene... maybe with poison? set it to didly. memory shot?
Title: Communitus_Friendlius
Post by: bacillus on April 28, 2008, 09:30:29 PM
I think the only way to manipulate .delgene is from within.
Here's the conspec:

'put this in init gene
.dnalen .memloc store

cond
 *.dnalen *.memval !=
 'Other conditions here
start
 'Your code here....
stop

this checks the bots' DNA lengths. You may want to combine this with good ole I/O channel conspecs.
Title: Communitus_Friendlius
Post by: Gambit on April 29, 2008, 08:44:15 AM
hmmmm I dont recognize any of those variables so I'm lost... is there a complete list?

oh wait... I get it now. anything with the same length of dna is good. otherwise its now. that also means similar mutations will get along... BUT most of the most problematic mutations (for me anyway) involve changing ">" to "<" which doesnt alter the length.

also is there anything that drains slime?

and there is 3 Communitus species now... none of them are really that much greater than the others. they all preform different functions. so should I make them work togethor or at least get along? I think I'd have to use out and in for that...

are there any other cases of entirely different species recognizing each other that I could use as an example?
Title: Communitus_Friendlius
Post by: Gambit on April 29, 2008, 09:28:31 AM
OH! I found the big list of sys vars... THERES SEXUAL REPRODUCTION!!!

and Communitus Friendlius can use the .totalmyspecies to limit its population! it just wont breed anymore after theres a certain number!


rofl when I found that link it was like christmas...          


now I just gotta get all my school work done... (cyber schooled)
Title: Communitus_Friendlius
Post by: Gambit on April 29, 2008, 10:02:32 AM
okay would this gene work to keep the ratio of Communitus_Friendlius to all other bots at 1:5? I'm still working on mastering syntax...

cond
*.totalbots .totalmyspecies div 5 <
*.nrg 15000 >
start
40 .repro store
stop
Title: Communitus_Friendlius
Post by: Gambit on April 29, 2008, 10:39:54 AM
okay that doesnt work. so I need help there (please). I want the number of Communitus Friendliuses to grow and shrink based on the total amount of robots.

and I have

Communitus_Friendlius

Communitus_NotSoFriendlius

and Communitus_Meanus

all recognizing each other with a 2 part conspec system.
Title: Communitus_Friendlius
Post by: Moonfisher on April 29, 2008, 12:48:19 PM
You forgot a pointer and reversed a couple of values and I think you reversed the whole thing in general
I think this is what you want :

cond
*.totalbots *.totalmyspecies 5 div >
*.nrg 15000 >
start
40 .repro store
stop

This will cause it to reproduce whenever it's species is below 1/5 of the total population and it has 15000 energy...

Also if you want a very steady conspec, I was thinking it would be possible to have only inline conditions for the offensive genes and include part of the conspec in each hostile gene. This could be an out value in each if you're not using them, or you could add some values together that form the right conspec.... either way the idea is to make sure that if the condition to your action changes, so will the conspec value...
Haven't thought about an exact way of doing it, but it should be possible without too much trouble I think...
Title: Communitus_Friendlius
Post by: Gambit on April 29, 2008, 12:55:34 PM
since this is now about multiple bots and no longer just a single species I'm goona move all discussion on this to the bot tavern.

I'll try that gene.
Title: Communitus_Friendlius
Post by: Moonfisher on April 30, 2008, 03:28:54 PM
Ha ha yeah I see why that didn't work...

cond
*.totalbots *.totalmyspecies 5 mult >
*.nrg 15000 >
start
40 .repro store
stop

would work...
but the one Eric posted in the other topic is better since it represents the actual percentage and you could replace the 10 with a constant, making it easy to tweek it.

def popPercent 10

cond
*.totalmyspecies 100 mult *.totalbots div .popPercent >
*.nrg 15000 >
start
40 .repro store
stop