Darwinbots Forum
Welcome To Darwinbots => Newbie => Topic started by: Esrever on April 04, 2005, 12:08:06 PM
-
I found this program about a week ago, and I became interested in the league competition. I read some of the tutorials and I decided to make a short-bot. I'm posting the DNA here.
'Malificus Minimus
' Gene 1 Catch
cond
*.eye5 0 >
*.refeye *.myeye !=
start
*.refveldx .dx store
*.refvelup 40 add .up store
stop
' Gene 2 Eat Vegs
cond
*eye5 40 >
*refeye 0 =
start
-1 .shoot store
*.refvelup 5 add .up store
' Gene 3 Infect Enemies
*.eye5 40 >
*.refeye 0 >
*.refeye *.myeye !=
start
0 .nrg store
*.thisgene .mkvirus store
40 .vshoot store
stop
' Gene 4 Avoid/Search
cond
*.eye5 0 =
*.refeye *.myeye =
start
471 rnd .aimdx store
stop
' Gene 5 Reproduce
cond
*nrg 8000 >
start
50 .repro store
stop
end
The Catch and Avoid/Search genes and part of the Eat Vegs gene were taken from Animalis Minimis. My main question is about the virus. I haven't had the time to test it, but it should work. If it does, can I use it in competition? It seems like a pretty unfair attack, and the only way I can see to defend against it would make the bot almost immortal. Any other advice would be greatly appreciated.
-
Hi Esrever and welcome to DarwinBots.
Well done for making a bot so soon. Is it V2.36 compatible? or fully developed in 2.35?
Could you please post your new bot in the Beastiary and upload the text file also.
If you are having difficulty then just let me know and I will take care of it for you.
It would also be greatly appreciated if you could make an entry into the poll question about how you found DB (http://s9.invisionfree.com/DarwinBots_Forum/index.php?showtopic=226)
-
Hey, it looks like you're missing a stop statement in gene 2. That could be giving you some weird problems :wacko:
The virus won't work for a couple of reasons.
1. *.thisgene .mkvirus store means that you will make the current gene into a virus. Your current gene has three conditions, all of which must activate for the infected bot to run the viral code.
2. 0 .nrg store won't hurt a bot. It will just make the bot think that it has no energy left for the rest of the cycle. It's actual nrg levels will remain intact.
Also, in my experience, a virus that kills instantly doesn't have a chance to spread itself, making it a weapon of limited use.
3. Viruses take quite a while to actually build. Once you .mkvirus you need to wait for *.vtimer to count down.
Viruses are confusing, I know. PY wrote up a quick tutorial on them here (http://s9.invisionfree.com/DarwinBots_Forum/index.php?showtopic=68&view=findpost&p=99882).
And welcome to Darwnbots!
-
It works now! :D But only some of the time! :(
I was able to create a working virus. I thought about what you said about setting .nrg to zero, and realized that I could trick robots into reproducing. The effect the virus has is very cool looking, and nearly crashed my computer once.
The problem is that the virus doesn't always work. Most of the time nothing happens except the infected robot just shoots off viruses. Also, it once created a super I Venia. I tried the robot out in F1 challenge, and beat Flamma and Perservans. I won one match against Venia, and the second round came down to a single Venia. The robots kept ganging up on the Venia, but kept getting destroyed. After about 30 minutes and still no end. I checked the Venia's health and saw that it now had 30000+ life and 213 genes. For some reason the 0.5 in the virus had switched to 0, so the Venia kept gathering life without any way for me to kill it.
Anyway, thank you for the help. I attached my new robot
-
Closer, but still no cigar.
For repro, as with all memory, you must store whole numbers. So if I understand what you're trying to do, you need to do 50 .repro store
As far as the virus itself, it's not bad but you might want to consider a stronger vshoot command. Spanish Conquistador uses a virus that has a life of its own, spreading far and wide on its own to cause massive damage.
So this is what I would do:
cond
*.myeye 4 !=
start
50 .repro store
10000 .nrg store
*.thisgene .mkvirus store
1000 .vshoot store
stop
This will make the virus much stronger, flying across more of the screen and so being more likely to find a host.
-
Nice bot Esrever, and welcome to Darwinbots! :)
I will add this bot to the shortbotleague with the next update (hopefully before 10th april; currently very busy with school...)
Henk
-
Ok, I tested Igni out with the new DNA in the F1 League, and it got destroyed by tie-feeders. I decided I'm going to make Igni a tie feeder too. I attached the new DNA to my post. I typed this up during break at school, so some periods and stops might be missing. Again, any help sorting out the DNA and advice is greatly appreciated.
I was looking through the tips and hints forum and saw the "using ties cheaply" post. Does the number reset to zero when the tie is broken or does it keep going up. Also, I know there's a way to transfer info and genes to other bots through ties, but I don't know the method. Can someone explain to me how to do that?
-
nice bot, you should add some body managment to it though, because each time the robot reproduces it loses some of its body to its offspring and as body is linked to the amount of energy it can get from prey it is important to build this up. After a few generations your bots just become quite puny. To build body up use a gene like this
cond
*.nrg 1000 >
start
100 .strbody store
stop
this will take a 100 points of energy and convert it into 10 body points, then when energy gets low and you need to get some of it back from body use
cond
*.nrg 800 <
*.body 20 >
start
10 .fdbody store
stop
Too stop other bots tieing to your bot you can use slime, to stop them draining your energy there are some good leach genes out there take a look at some of the top bots there are a treasure trove of ideas there
Does the number reset to zero when the tie is broken or does it keep going up.
inc increases the number by one each time, its not reset unless you specifically tell it to
to transfer info to the other bot, you use .tieloc to specify the memory location of the other bot that you want to store information too
address .tieloc store
to specify the value to store in that location, use
yourvalue .tieval store
so for example you could use
.repro .tieloc store
20 .tieval store
this stores 20 in the other bots repro and he will spit out a baby
as for transfering genes, Im not sure if that is possible, and you could also add some shooting and targeting to your bot, the more methods of getting energy the better, hope that helps
In DB if you go to help in the toolbar and go to DNA help or use ctrl D, that will give you information on most of the DNA commands, what they do and how to use them
-
Don't forget to address the tie also.
When you create a tie by storing a number into .tie, that tie retains this value as an address. This is often called the "tie phase"
To address a tie use...
tieaddress .tienum store.
-
Ok, I'm uploading the (probably) final version of Igni. I added body, slime, and poison at robage 1 and it refreshes when the bot chases. Unless there are any major bugs or problems, this is going to be the version I'm entering into the Shortbots League.
-
Esrever, your bot contained two bugs/typo's.
I've corrected those and will be adding the fixed version to the SB-league.
running a sim with it now... cool bot!
Hmmm... Since I'm still not able to add attachments to boards other then the SB board, I can't post the fixed version of Asterus_Igni. Ah well, just do it the old fashioned way...
'Asterus Igni
'By Esrever
'~~~~~~~~~~~~
'Bot Designed for SB League
'Two minor bugs fixed by Henk
' Gene 1 Catch and
' Fight Prep
cond
*.eye5 0 >
*.refeye *.myeye !=
*.numties 0 =
start
*.refveldx .dx store
*.refvelup 20 add .up store
200 *.poison sub .strpoison store
75 *.slime sub .mkslime store
10 *.body sub 10 mult .strbody store
stop
' Gene 2 Tie Up
cond
' *,numties 0 = and (this as the original condition with a bug)
*.numties 0 = and ' fixed
*.eye5 40 > and
*.refeye *.myeye != and
*.eye5 77 != and
*.robage 0 = or
start
1 .tie store
1 .readtie store
stop
' Gene 3 Eat Enemies
cond
*.trefeye *.myeye !=
start
1 .tienum store
-1000 .tieval store
-1 .tieloc store
stop
' Gene 4 Anti-Cannibalism
' and Birth Setup
cond
*.trefeye *.myeye =
*.robage 1 = or
start
1 .deltie store
200 *.poison sub .strpoison store
75 *.slime sub .mkslime store
10 *.body sub 10 mult .strbody store
stop
' Gene 5 Avoid/Search
cond
*.eye5 0 =
*.refeye *.myeye = or
start
471 rnd .aimdx store
stop
' Gene 6 Reproduce
cond
*.nrg 4000 >
start
60 .repro store
stop
' added an end command
end