Darwinbots Forum
General => Off Topic => Topic started by: Gambit on September 30, 2008, 01:05:48 PM
-
Okay so
1. school is back
all of my more time consuming hobbies are out of the question. im shifting back to my more casual hobbies
2. I got this new old computer
I got it working again, added some ram (for a whopping total of about 380mb ) and downloaded like 8 years of windows updates.
I dont use it much so its perfect for programs that I can setup and then let work for weeks on end
3. my real life selective breeding of pillbugs experiments havnt been going so good lately (spiders keep getting in :\)
so yeah darwinbots is lookin good again.
-
Did we ever met?
Wow, 380mb ram. Amazing.
Anyway welcome back.(Altrough you're not familair).
-
Did we ever met?
Wow, 380mb ram. Amazing.
Anyway welcome back.(Altrough you're not familair).
nope dont remember you. and yeah 380 isnt much but its sufficient.
I was working on a series of bots designed to recognize each other. they had one purpose, destroy bacillus! lol jk. but yeah they knew each other and they attacked everything except each other.
1 ate, got massive, never killed plants, healed anything in its "family" that was damaged
2 virus that affected anything except "family members" caused them to randomly spit out thier energy and more viruses. bred A LOT
3 venom and poison. it weakened the others not in the "family".
4 and then there was a special plant that only would poison non "family members" but allow the others to eat it.
I lost those files and I dont remember a bit of the DNA programming language but ill relearn.
-
1. never killing plants and 4. plant that kills everything exept you is a nice way of co-living.
Give me energie then I won't kill you. All it needs is protecting the plants it feeds on.
380MB could be enough. Depending what you're doing with it. And what OS you're running. I wouldn't advise vista with that amount of memory. Overall memory is often cheap, so if you've too less memory. You can buy more.
I had a computer that worked fine at 640kb. Instant boot, and it use to run everything smooth.
They don't make them that quick these days.
-
It is said: "What Andy giveth, Bill taketh away."
-
It is said: "What Andy giveth, Bill taketh away."
There is more truth to this than you know and it is more deliberate and coordinated than you might expect. I have attended meetings between MS and Intel execs where the strategic discussion was what "features" to add in future versions so as to use more cycles/memory/graphics so as to keep the upgrade cycle going. MS doesn't intentionally write slow code to my knowledge, but the squeaky wheel gets the oil and for new OS releases, they target the "common" machine of only so many years back. So if the perf or working set of something is good enough on the test machine mix, it gets no attention, and lacking attention, code gets bigger and slower over time even without new features..
Welcome back Gambit...
-
One only has to look at bloated Linux versions to understand that it's hardly a collusion on Microsoft's part. As you say, if it's good enough on the target machine, there's no reason to push it harder.
-
its windows ME with bare bones in features. if I turn off the virus protection it is amazingly fast for its low ram. it gets better internet speed and loads applications faster than my 512mb XP laptop. it just doesnt have sound... or any sort of 3D support...
I wish that whoever invented integrated graphics cards would be sentanced to 20 years in prison... when they fry theres no way of fixing them.
anyway... whats new?
-
anyway... whats new?
Some really cool new speciation features and graphs in recent version for evo-sim folks....
-
its windows ME with bare bones in features. if I turn off the virus protection it is amazingly fast for its low ram. it gets better internet speed and loads applications faster than my 512mb XP laptop. it just doesnt have sound... or any sort of 3D support...
Extra ram could be an option if you have to put stuff off.
I wish that whoever invented integrated graphics cards would be sentanced to 20 years in prison... when they fry theres no way of fixing them.
anyway... whats new?
Overall I think those intergrated cards are making computers overall cheaper. That's why they're good. Not everybody needs a super videocard. And current intergrated sound-cards are that good, it is becoming rare someone buys actual sound-cards.
Ehm new, leagues are too up again. That's also new.
Intel and MS really have that kind of meetings!
I think MS crossed a line with vista, there is a decent performance drop there. I hope they're going to make the next version some more efficient or atleast a way most features can be easily put of, and they do something about the standard security settings.
-
lol I meant integrated sound. :$
if the integrated graphics were shot then id really be screwed :\
-
lol I meant integrated sound. :$
if the integrated graphics were shot then id really be screwed :\
I wouldn't know I never had that. I know that computer-parts can have a lot sometimes through. I had a CPU that smelted burning. A bios where the sticker melted away. That electrical thing had once exploded, I had multiple harddisks that where making bizarre sounds. Exept for the explosion I can recall that all parts used to go well after ''the incident''.
-
well I jsut finished redownloading all the tutorials.
this is the second langauge ive had to relearn this year :\ too many languages not enough time to practice them all daily.
HTML
CSS
Javascript
C++
VB
WML
DBDNA
-
lol this was taken a few minutes ago. just seconds before it crapped out :\
http://i231.photobucket.com/albums/ee60/Ho...urdock/win2.jpg (http://i231.photobucket.com/albums/ee60/Howling_Mad_Murdock/win2.jpg)
this was on my laptop not the junker I plan to use once I relearn DB
-
Welcome back!
they had one purpose, destroy bacillus! lol
Go ahead, I won't mind; still, I'll be interested to see what you come up with...
-
Welcome back!
they had one purpose, destroy bacillus! lol
Go ahead, I won't mind; still, I'll be interested to see what you come up with...
Now, does he mean you or does he mean he wanted his bots to destroy bacillus (http://en.wikipedia.org/wiki/Bacillus)?
-
well im at the half comprehension stage. copy. paste. edit.
'make poison
cond
*.robage 0 =
start
*.up .ploc store
stop
'peripheral vision left
cond
*.eye1 0 >
*.eye5 0 =
*.refeye *.myeye !=
start
52 .aimsx store
stop
peripheral vision right
cond
*.eye9 0 >
*.eye5 0 =
*.refeye *.myeye !=
start
52 .aimdx store
stop
' Gene look around
cond
*.eye5 0 =
*.eye9 0 =
*.eye1 0 =
start
store
10 .aimsx store
75 .up store
stop
' Gene 1 Food Finder
cond
*.eye5 0 >
*.refeye *.myeye !=
start
*.refveldx .dx store
*.refvelup 200 add .up store
stop
'force the other bot to start spewing energy if its alive
cond
*.eye5 50 >
*.refeye *.myeye !=
*.refnrg 0 >
start
*.refvelup .up store
0 .aimdx store
0 .aimdx store
.shoot .shoot store
-2 .shootval store
stop
'eat corpses
cond
*.eye5 50 >
*.refeye *.myeye !=
*.refnrg 0 =
start
*.refvelup .up store
0 .aimdx store
0 .aimdx store
-6 .shoot store
stop
'poop
cond
*.waste 200 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop
cond
*.nrg 9000 >
start
60 .repro store
stop
'defenses
'store slime
cond
*.slime 300 <
*.nrg 2000 >
start
100 .mkslime store
stop
'store poison
cond
*.poison 500 <
start
50 .strpoison store
stop
'store shell
cond
*.shell 250 <
*.nrg 2000 >
start
100 .mkshell store
stop
'deletes ties
cond
*.numties 0 >
start
*.deltie store
stop
I improved my old left/right peripheril vision genes. I added defenses against viruses, body shots, regular shots, tie feeding, etc
it doesnt directly attack the enemy. it makes them vent thier energy... unless they're dead. then it just eats them.
they tend to be quite small and they hunt in packs. they're circular until they find something then they tend to go in 2 bot thick lines.
the only problem is I dunno what to challenge them with. what bots do you guys use to test your new ideas' mettle?
-
Moonfisher just put a new bot on top of F1 called fruitfly. It is the bot to beat.
-
WOW
I think im a ways away from that.... so much code o.O
1v1 with 3000nrg they both breed like crazy (I modified mine to be a bit more like what it would be fighting) and then mine dominate for a while. every sim ends the same way. they kill all the fruitflies except 2. those 2 then rip my hundreds of bots to shreds...
its even worse when I add a little bit of meet (15 5knrg T_Preservans) the fruit flies kill everything in just a few seconds.
this leads me to believe they're using thier energy much more efficiently than my bots. because the less energy in the tank the better mine do. the more energy the better the fruit flys do.
-
Sounds impressive, but the bot you posted got mashed by Tribolis, my new secret multibot that even has trouble fighting animal minimalis on a large-scale map. It may just be that the multibot is much more efficient at hunting; the head wraps around its prey, then the tail poisons in the same manner that your bot does.
-
Fruit Flies is an F1 bot, the one you have qualifies for F2, so you should start by running it against the F2 league and see how far it gets.
The F2 league just got updated and you can download the files you need to run it in the forum.
And Fruit Flies starts out with random attack types, then uses the epigenetic memmory locations to inherit the attack type of the parrent with a small chance of switching to a different one.
So you'll sometimes see it drop in numbers at the beginning of a fight.
Also you should know that if you want to compete for an F2 league spot you need to run your bot using the league files and it will lock the settings to default league settings. (5 vs 5, 3000 starting energy, minimum field size, no fluids, default F1 costs, asf...)
In DB 2.44 the leagues are broken, so I would recomend using 2.43.1L if you have it.
And one last thing, your poison gene sais *.up .ploc store, but the * means you fetch the value that .up is pointing at, you want the memmory location itself, so basicaly .up .ploc store
And when you use a memmory shot to force the enemy to shoot energy it will only last one cycle, but if you use venom you can make every X shots a venom shot and feed with the rest or use different mem shots.
So you would have this as your venom :
.shoot .vloc store
-2 .venval store
And to make every Xth shot a venom shot you can use the modulus operator (mod).
*.timer X mod 0 =
-3 .shoot store
And I should probably also mention that shell is not something you want to be cheap about... if you're good at replenishing shell some oponents will literaly kill themselves trying to get through it.
Without the shell your remaining 2000 energy will serve to feed an oponent, you would rather have your bot kill itself slowly letting the oponent fight long and hard for whatever scraps of energy are left if it wins...
-
If you want to aim high, then Spinner is on top of the ladder... Although I'm working on a bot to topple it off, still only got a 33% win rate...
Excalibur is very much a good bot to beat, very version resiliant.
One Man Bucket is also quite potent, it's stopped a fair few bots from going up further in the league. I think that Sea Snake could have got a lot further if One Man Bucket wasn't in the way...
-
Considering Excalibur is like 3.5 years old, the fact that it is still a contender is nothing short of amazing.
-
It is really funny to me that one man bucket is a showstopper for so many. It only has one store
This just goes to show how much shell counts in F2.
-
Yeah, I ran the example for an F3 bot I posted in the other topic against the F2 league (After changing the conspec, since half the bots in there had the same amount of shoot comands) and it made 8th place, got stopped by republican bee
And it was just an example, it doesn't do anything clever, it moves around in a fairly stupid way and shoots at stuff... it's only strength is not being cheap about shell production and boosting shots.
And I'm afraid the bot you posted couldn't beat the first oponent in the F2 league, and fixing the poison gene didn't help...
But it'll be a lot easyer to move forward now that you know what you're up against, just start off beating #30 and work your way up, and remember that changes you make to beat a bot further up the ladder may cause you to loose an earlyer fight, so run the whole league now and then to make sure you're still reaching the bot you're working on beating.
And the only rules of F2 are no viruses and no tie feeding. (You can still do a lot of harm with ties though)
And there will always be alge in the fights, so you need to eat those aswell as the corpses... you can reconize them in several ways... if you use .dnalen .memloc for your conspec then alge are 13 long or you can check to see there's no shell or poison (With refpoison and refshell, check the sysvars page on the Wiki it explains pretty much every comand there is), or sheck to make sure theres 0 shoot comands and 1 aimsx command and such. (The alge used I Alga Minimalis)
Also the thing below beats #30 in F2 and does nothing but retaliate shots and make shell (And reproduce and adjust body, but only moves when reproducing).
So it should give an idea of how important shell can be... but trying to eat alge with mem shots also represents a serious disadvantage, you should atleast make it face you then, so the shots actualy hit the bot. (Just use .setaim .shoot store; *.refxpos *.refypos angle 628 add .shootval store... or something like that... not sure 628 is 180 degrees... but something like that anyway.... Spinner actualy does this to alge, and small bots with weak shots will actualy have an easier time eating an alge by adding a litle venom and making the alge face it)
Either way the point here is that this bot only has the very basics for shell, body and reproduction, and uses *.shang to shoot back when hit... that alone can be enough to beat a lot of the smaller bots. But remember the point isn't nesesarily to have a lot of shell, the point is shell is cheap considering the advantage it gives you, and restocking shell is imporant even when running out of energy (You can setle for less, but never drop to 0 shell unless you plan on not getting hit, or dieing isn't a big issue)
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
start
*.shell 2000 <
*.nrg 4 div *.shell sub .mkshell store
*.shflav 0 !=
*.shang .aimshoot store
-6 .shoot store
0 .shflav store
*.nrg 500 <
*.body 100 > and
100 .fdbody store
*.nrg 2000 >
*.body *.nrg 2 div < and
*.body 10000 < and
100 .strbody store
*.eye5 0 =
*.memval *.dnalen = or
*.nrg 20000 > and
*.body 6000 > and
*.aim 250 add .setaim store
50 .repro store
*.robage 10 <
*.body 2000 > and
*.maxvel .dn store
stop
Oh and BTW, 33% wins against Spinner sounds dangerously close... I spent a lot of time on that thing. (Although it seems the cameleon conspec is no longer working as intended, I noticed the test alge from the conspec chalenge no longer works not that it makes a difference though there's several safe conspecs it can't fool and half the time the fight is over before it's done adjusting it's genes, it was mostly there so it could whipe Seasnake 1.0 on IM (It used a crude conspec))
It also seems the eyes arent working right... it's like it works for some of the eyes but not for others, wich is odd because they all do exactly the same...
Not sure the eyes ever did work right though... but can't figure out what's wrong with them either
And remember there's a v1.51 of spinner... it's just a minor change so it wouldn't get stuck at the bottom of F1, but may aswell test against the right one.
And don't forget to make sure it clears the other F2 bots before adding it, it's always a pain to run in to some brutal bot in the lower end of the league because a small change made it loose to a bot it should have beaten
-
Republican Bee... Mwahahahahahahaaaaa...
Watch out for Republican Bee v2, a few more tweaks and hopefully I'll up the win rate above 33%. Instakill Venom works quite nicely, but I'm thinking I should go with something adaptive, since Excaliburs adaptive armour and Fruitfly's pseudo-evolution work so well. I'd post up the current version, but then you'd make Spinner 1.6
It all comes down to shell and poison in F2. Instakill stuff is important for when you get into the top 5, but apart from that, a good idea and some clever engineering can go a long way. I'm still surprised how well some bots are doing. My personal favourites are ones that do something interesting. Spiral is awesome, and so is Fishy. Nevermind that neither are in the top 10, they are both unique, and worth remembering
-
Updated my bot, now has a 85%+ win percentage. And I renamed it since the kill method is rather different, so it's no longer called Republican Bee 2.
The big difference which really helped it beat spinner was the line "128 .badarea store". Beforehand it just wasn't spreading fast enough to infect all the spinners.
Astronomo (F2)(Commander Keen) 2-10-08 (http://www.darwinbots.com/Forum/index.php?showtopic=2921)
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']'Astronomo, by Commander Keen
' First Edition 2nd October 2008
def badarea 51
def enemy 55
cond
*.robage 0 =
start
140 .eye6width store
280 .eye7width store
280 .eye8width store
280 .eye9width store
-68 .eye1dir store
-68 .eye2dir store
-68 .eye3dir store
-68 .eye4dir store
-68 .eye5dir store
-140 .eye6dir store
317 .eye7dir store
634 .eye8dir store
970 .eye9dir store
-2 .focuseye store
.shoot .ploc store
.tie inc
.shootval .vloc store
-31999 .venval store
1991 .out5 store
32000 rnd .out4 store
128 .badarea store
stop
cond
1 1 =
start
50 *.venom sub 0 floor .strvenom store
50 *.poison sub 0 floor .strpoison store
50 *.slime sub 0 floor 10 ceil .mkslime store
50 *.shell sub 0 floor .mkshell store
*.nrg *.body 10 mult add 20 div *.body sub 1 floor .strbody store
*.body *.nrg *.body 10 mult add 20 div sub 0 floor 30000 *.nrg sub 10 div ceil .fdbody store
*.tiepres .deltie store
*.refshoot *.myshoot sub *.refaimdx *.myaimdx sub *.refaimsx *.myaimsx sub *.refeye *.myeye sub *.refup *.myup sub *.refdn *.mydn sub *.refsx *.mysx sub *.refdx *.mydx sub abs add abs add abs add abs add abs add abs add abs add abs .enemy store
*.tiepres .readtie store
.tieval .tmemloc store
32000 .tmemval store
*.enemy 1 =
0 .enemy store
clearbool
*.enemy *.out5 *.in5 sub abs add .enemy store
1 *.out4 *.in4 sub abs sgn sub *.enemy add .enemy store
stop
cond
*.eye1 *.eye2 *.eye3 *.eye4 *.eye5 *.eye6 *.eye7 *.eye8 *.eye9 add add add add add add add add 0 =
*.enemy 0 = or
*.badarea 16 >=
start
1 *.timer 8 mod sgn sub 10 mult .up store
1 *.timer 2 add 8 mod sgn sub 10 mult .dx store
1 *.timer 4 add 8 mod sgn sub 10 mult .dn store
1 *.timer 6 add 8 mod sgn sub 10 mult .sx store
stop
cond
*.eye1 *.eye2 *.eye3 *.eye4 *.eye5 add add add add 0 =
*.enemy 0 = or
start
157 .aimdx store
.badarea inc
stop
cond
*.eye3 0 =
*.eye4 0 !=
start
34 .aimdx store
stop
cond
*.eye3 0 =
*.eye2 0 !=
start
-34 .aimdx store
stop
cond
*.eye3 0 =
*.eye5 0 !=
start
68 .aimdx store
stop
cond
*.eye3 0 =
*.eye1 0 !=
start
-68 .aimdx store
stop
cond
*.eyef 0 !=
*.enemy 0 !=
start
'1 *.refshell sgn sub -5 mult 1 sub .shoot store
-6 5 *.refshell sgn mult add *.refshell *.refpoison mult sgn 5 mult sub .shoot store
16 .shootval store
*.velsx .dx store
128 *.eyef sub *.velup sub *.veldn 2 div floor *.refvelup add .up store
*.refxpos *.refypos angle .setaim store
0 .badarea store
clearbool
*.refshoot 0 !=
-3 .shoot store
*.venom .shootval store
clearbool
stop
cond
*.nrg *.body 10 mult add 2500 >
start
50 .repro store
stop
cond
*.badarea 32 >=
start
*.timer 4 add 8 mod 0 =
*.maxvel *.veldn sub .dn store
*.timer 8 mod 0 =
0 *.maxvel *.velup sub sub .dn store
clearbool
stop
-
LOL, first Wasp forces me to add tie defences in it, now you're forcing me to add venom defences...
Very clever use of venom BTW, just fill people up with it and they'll never be a threat again
Another example of how spending energy on weapons can we worth every penny.
So I'm sorry if this is a litle fast, but I'm still unemployed, won't start my new job till the midle of this month.... so I have too much time on my hands...
So you guessed it.... an update for spinner is just around the corner.
I fixed the venom issue.... but you should still be able to beat it with a similar strategy I think, not going to say how ofcourse.
Anyway I don't mean to be compeditive or anything, it's just I had to see the fight, and your bot tore Spinner a new one, so had to see what you where doing...
And then I kind of new how to prevent it so couldn't help myself...
It still doesn't manage a flawless victory though.
Also I'm not sure about this, but I think you found a way to eat alge realy fast with a small bot, without using tie feeding.... I haven't applyed it in spinned, I kind of think you should be the one the fully exploit it first, and your bots strategy is better suited for it... either way it seems that a poisoned alge will also boost energy shots that are caused by getting hit. So basicaly if you infect an alge with 32000 .shootval and then shoot at it regularly it should hand over all it's energy the first time you hit it... I think... haven't tryed it.
You could also just tie to the alge and boost shootval in that way... either way if it works it should make a big difference.
Anyway running the new version of spinner, so far the score is 40 to 1... but I'm sure you'll get back on top once you take a look at the venom defence in it... (It's the only thing I changed)
Calling it v1.52... if I fix the eyes and cameleon conspec at some point then I can call it 1.6... but I'm more in the mood to try and make a multibot... every time I start on one I end up making something else, both spinner and fruitflies started with an idea for a multibot
Anyway here's the new spinner v1.52 :
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']'Spinner v1.52 (F2) 02-10-08
'by Moonfisher
'Just added venom defences.
'------------------- vars
def seteyes 50
def seteyewidth 51
def seteyespace 52
def setoffset 53
def state 54
def repspin 55
def randm 56
def keyloc 57
def oponent 58
def toponent 59
def genekill 60
def birthstate 971
def birthx 972
def birthy 973
'-------------------- constants
def spineyewidth 0
def spineyespace 105
def spinoffset 140
def scaning 1
def torpedo 2
'0 is nothing
def friend 13
def enemy 14
def alge 15
def key1 543
def key2 1613
def key3 3306
def key4 4039
'(Key + 3200 must not exceed 8191)
def startkey 110
def startloc 120
def locs 5 '--- Must correcpond to the amount of different tie actions
'Set locs to 4 to disable instant kill using .shootval
'Set locs to 3 to disable .strbody killing aswell
'================================================
'----- Birth
cond
*.robage 0 =
start
'--- conspec
3 rnd .randm store
.startkey *.randm add .keyloc store
.memloc .memloc store
.tmemloc .tmemloc store
.key1 .startkey store
.key2 .startkey 1 add store
.key3 .startkey 2 add store
.key4 .startkey 3 add store
'-------Tie actions (5)
.eye5dir .startloc store
682 .startloc 1 add store
.vloc .startloc 2 add store
174 .startloc 3 add store
'.memloc .startloc 4 add store '-- Funny, but no point in both stealing keys and breaking conspecs
'173 .startloc 5 add store
.mrepro .startloc 4 add store '-- Also funny, but can mess up the stolen eye and shoot conspecs
65 .startloc 5 add store
.shootval .startloc 6 add store
32000 .startloc 7 add store
.strbody .startloc 8 add store
31999 .startloc 9 add store
'--------
.shoot .ploc store
stop
cond
*.robage 0 =
*.birthstate 0 =
start
.scaning .state store
stop
cond
*.robage 0 =
*.birthstate 0 !=
*.state 0 =
start
*.birthstate .state store
stop
cond
*.birthstate 0 !=
start
0 .birthstate store
stop
cond
*.robage 0 =
*.state .scaning =
start
1 .seteyes store
.spineyewidth .seteyewidth store
.spineyespace .seteyespace store
.spinoffset .setoffset store
.shoot .vloc store
-2 .venval store
.shoot .ploc store
stop
cond
*.robage 0 =
*.state .torpedo =
start
1 .seteyes store
.spineyewidth .seteyewidth store
.spineyespace .seteyespace store
.spinoffset .setoffset store
.shoot .vloc store
-2 .venval store
.shoot .ploc store
stop
cond
*.seteyes 1 =
start
*.setoffset .eye9dir store
*.setoffset *.seteyespace add .eye8dir store
*.setoffset *.seteyespace 2 mult add .eye7dir store
*.setoffset *.seteyespace 3 mult add .eye6dir store
*.setoffset *.seteyespace 4 mult add .eye5dir store
*.setoffset *.seteyespace 5 mult add .eye4dir store
*.setoffset *.seteyespace 6 mult add .eye3dir store
*.setoffset *.seteyespace 7 mult add .eye2dir store
*.setoffset *.seteyespace 8 mult add .eye1dir store
4 .focuseye store
0 .seteyes store
stop
'================================================
'================================================
'----- Conspec
start
*.keyloc .startkey sub 8192 mult *.robage 10 div add *.keyloc * add .out9 store
*.keyloc .startkey sub 8192 mult *.robage 10 div add *.keyloc * add .tout9 store
stop
cond
*.eyef 0 >
*.in9 24576 & 8192 div .startkey add * *.refage 10 div add *.in9 8191 & 1 sub >
*.in9 24576 & 8192 div .startkey add * *.refage 10 div add *.in9 8191 & 1 add <
start
.friend .oponent store
stop
cond
*.eyef 0 >
*.in9 24576 & 8192 div .startkey add * *.refage 10 div add *.in9 8191 & 1 sub <
*.in9 24576 & 8192 div .startkey add * *.refage 10 div add *.in9 8191 & 1 add > or
start
.enemy .oponent store
stop
cond
*.memval 0 =
*.refeye 0 =
*.refshoot 0 =
*.refshell 0 =
*.refpoison 0 =
*.refvenom 0 =
*.eyef 0 >
start
.alge .oponent store
stop
cond
*.eyef 0 =
*.robage 0 = or
start
0 .oponent store
stop
cond
*.numties 0 >
*.tin9 24576 & 8192 div .startkey add * *.trefage 10 div add *.tin9 8191 & 2 sub >
*.tin9 24576 & 8192 div .startkey add * *.trefage 10 div add *.tin9 8191 & 2 add < and
*.trefage 0 = or
start
.friend .toponent store
stop
cond
*.numties 0 >
*.tin9 24576 & 8192 div .startkey add * *.trefage 10 div add *.tin9 8191 & 2 sub <
*.tin9 24576 & 8192 div .startkey add * *.trefage 10 div add *.tin9 8191 & 2 add > or
*.trefage 0 >
start
.enemy .toponent store
stop
cond
*.tmemval 0 =
*.trefeye 0 =
*.trefshoot 0 =
*.trefshell 0 =
*.numties 0 >
start
'.alge .toponent store
stop
cond
*.numties 0 =
*.robage 0 = or
start
0 .toponent store
stop
'----- Poser conspecs
cond
*.memloc .memloc !=
*.memval 0 !=
start
*.memval *.memloc store
stop
cond
*.memloc .memloc !=
start
.memloc .memloc store
stop
cond
*.eyef 0 >
*.memloc .memloc =
*.memval 0 >
*.memval .memloc !=
start
*.memval .memloc store
stop
cond
*.tmemloc .tmemloc !=
*.tmemval 0 !=
start
*.tmemval *.tmemloc store
stop
cond
*.tmemloc .tmemloc !=
start
.tmemloc .tmemloc store
stop
cond
*.numties 0 >
*.tmemloc .tmemloc =
*.tmemval 0 >
*.tmemval .tmemloc !=
start
*.tmemval .tmemloc store
stop
cond
*.eyef 0 >
start
*.in1 .out1 store
*.in2 .out2 store
*.in3 .out3 store
*.in4 .out4 store
*.in5 .out5 store
*.in6 .out6 store
*.in7 .out7 store
*.in8 .out8 store
*.in10 .out10 store
stop
cond
*.numties 0 >
start
*.tin1 .tout1 store
*.tin2 .tout2 store
*.tin3 .tout3 store
*.tin4 .tout4 store
*.tin5 .tout5 store
*.tin6 .tout6 store
*.tin7 .tout7 store
*.tin8 .tout8 store
*.tin10 .tout10 store
stop
cond
*.genekill 0 !=
start
0 .genekill store
stop
'--- Steal shoot
cond
*.eyef 0 >
*.refshoot *.myshoot <
*.refshoot 0 >
start
*.thisgene 1 add .delgene store
*.myshoot *.refshoot sub 1 >
*.thisgene 3 add .delgene store
*.myshoot *.refshoot sub 4 >
*.thisgene 4 add .delgene store
*.myshoot *.refshoot sub 9 >
*.thisgene 5 add .delgene store
*.myshoot *.refshoot sub 19 >
*.thisgene 6 add .delgene store
*.myshoot *.refshoot sub 39 >
*.thisgene 7 add .delgene store
clearbool
*.delgene .genekill store
stop
cond
0 1 =
start
0 .shoot store
stop
cond
0 1 =
start
0 .shoot store
stop
cond
0 1 =
start
0 .shoot store
0 .shoot store
stop
cond
0 1 =
start
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
stop
cond
0 1 =
start
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
stop
cond
0 1 =
start
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
stop
cond
0 1 =
start
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
0 .shoot store
stop
'--- Steal eyes
cond
*.eyef 0 >
*.refeye *.myeye <
*.refeye 0 >
start
*.thisgene 1 add .delgene store
*.myeye *.refeye sub 1 >
*.thisgene 3 add .delgene store
*.myeye *.refeye sub 4 >
*.thisgene 4 add .delgene store
*.myeye *.refeye sub 9 >
*.thisgene 5 add .delgene store
*.myeye *.refeye sub 19 >
*.thisgene 6 add .delgene store
*.myeye *.refeye sub 39 >
*.thisgene 7 add .delgene store
clearbool
*.delgene .genekill store
stop
cond
0 1 =
start
*.eye9 0 >
stop
cond
0 1 =
start
*.eye9 0 >
stop
cond
0 1 =
start
*.eye9 0 >
*.eye9 0 >
stop
cond
0 1 =
start
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
stop
cond
0 1 =
start
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
stop
cond
0 1 =
start
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
stop
cond
0 1 =
start
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
*.eye9 0 >
stop
'================================================
cond
*.state .torpedo =
*.oponent .alge =
*.nrg 500 >
start
.scaning .state store
stop
'================================================
'----- Shooting
cond
*.numties 0 =
*.paralyzed 0 =
*.state .scaning =
*.eyef 0 >
*.oponent .enemy =
*.oponent .alge = or
start
*.refxpos *.refypos angle .setaim store
*.refxpos *.xpos sub abs *.refypos *.ypos sub abs pyth 5 div 30 sub 0 floor 100 ceil *.refvelup add .up store
*.refveldx .dx store
-6 6 1 add store
*.refxpos .out4 store
*.refypos .out5 store
stop
cond
*.numties 0 !=
*.paralyzed 0 != or
*.state .scaning =
*.eyef 0 >
*.oponent .enemy =
start
.shootval 6 1 add store
-31999 .shootval store
stop
cond
*.eyef 0 =
*.oponent .friend = or
*.out4 0 !=
*.out5 0 != or
start
0 .out4 store
0 .out5 store
stop
cond
*.state .scaning =
*.eyef 0 >
*.oponent .enemy =
*.robage 5 mod 0 =
*.venom 1 >
*.numties 0 =
*.paralyzed 0 =
start
-3 6 1 add store
0 .shootval store
stop
cond
*.state .scaning =
*.eyef 0 >
*.robage 10 mod 0 =
*.oponent .alge =
*.venom 1 >
*.numties 0 =
*.paralyzed 0 =
start
-3 6 1 add store
0 .shootval store
stop
cond
*.state .scaning =
*.eyef 0 >
*.robage 10 mod 1 =
*.oponent .alge =
*.venom 1 >
*.numties 0 =
*.paralyzed 0 =
start
.setaim 6 1 add store
*.refxpos *.refypos angle 682 add .shootval store
stop
cond
'*.poisoned 0 =
*.body 50 >
*.state .scaning =
*.eyef 55 >
*.oponent .enemy =
*.oponent .alge = or
start
*.nrg 30 div 20 ceil *.eyef 40 sub 0 floor sgn *.body 40 sub 0 floor sgn mult mult 1 floor .shootval store
stop
'================================================
'================================================
'----- Spread
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 mod 16 >=
*.robage 200 >= or
start
*.aim 35 add .setaim store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 mod 16 <
*.robage 200 <
start
20 .dx store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 !=
*.oponent .friend =
*.robage 20 mod 16 >=
*.robage 200 >= or
start
*.aim 35 add .setaim store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 !=
*.oponent .friend =
*.robage 20 mod 16 <
*.robage 200 <
start
20 .dx store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.robage 100 >=
*.robage 1000 <
*.eyef 0 =
*.robage 20 mod 10 >
start
20 .dx store
stop
'================================================
'================================================
'----- Aim
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye1 0 >
start
*.aim *.eye1dir add .setaim 500 1 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye2 0 >
start
*.aim *.eye2dir add .setaim 500 2 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye3 0 >
start
*.aim *.eye3dir add .setaim 500 3 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye4 0 >
start
*.aim *.eye4dir add .setaim 500 4 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye5 0 >
start
*.aim *.eye5dir add .setaim 500 5 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye6 0 >
start
*.aim *.eye6dir add .setaim 500 6 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye7 0 >
start
*.aim *.eye7dir add .setaim 500 7 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 =
*.robage 20 >
*.oponent .friend = and or
'*.eye8 0 >
start
*.aim *.eye8dir add .setaim 500 8 add * abs sgn mult store
stop
cond
*.state .scaning =
*.state .torpedo = or
*.eyef 0 >
*.oponent .friend =
*.in4 0 !=
*.in5 0 != or
*.in4 *.in5 dist 1000 <
start
*.in4 *.in5 angle .setaim store
20 .dx store
stop
'================================================
'================================================
'----- Reproduction
cond
*.state .scaning =
*.eyef 0 =
*.oponent .friend = or
*.nrg 3100 > or
*.nrg 300 >
*.body 100 > and
*.totalmyspecies 70 < and
*.nrg 500 >
*.body 100 > and
*.totalmyspecies 70 >= and or
*.repspin 0 =
start
*.robage 1 add .repspin store
stop
cond
*.robage 1 =
*.totalmyspecies 5 =
*.nrg 3000 %=
*.body 1000 =
start
*.robage 1 add .repspin store
stop
cond
*.state .scaning =
*.repspin 0 >
*.repspin 1 add *.robage =
start
*.aim 511 add .setaim store
0 .up store
0 .dx store
stop
cond
*.state .scaning =
*.repspin 0 >
*.repspin 2 add *.robage =
start
*.aim 341 add .setaim store
0 .up store
0 .dx store
stop
cond
*.state .scaning =
*.repspin 0 >
*.repspin 3 add *.robage =
start
*.aim 511 add .setaim store
0 .up store
0 .dx store
stop
cond
*.state .scaning =
*.repspin 15 add *.robage <
*.repspin 0 !=
start
0 .repspin store
stop
cond
*.state .scaning =
*.repspin 0 >
*.nrg 300 >
*.body 100 >
*.repspin 1 add *.robage =
*.repspin 2 add *.robage = or
*.totalmyspecies 70 <
*.eyef 0 =
*.oponent .friend = or
*.oponent .alge = or
start
32 .repro store
0 6 1 add store
stop
cond
*.state .scaning =
*.repspin 0 >
*.nrg 500 >
*.body 100 >
*.repspin 1 add *.robage =
*.repspin 2 add *.robage = or
*.totalmyspecies 70 >=
*.eyef 0 =
*.oponent .friend = or
*.oponent .alge = or
start
32 .repro store
0 6 1 add store
stop
cond
*.state .scaning =
*.repspin 0 >
*.oponent .enemy =
*.eyef 0 !=
*.nrg 300 >
*.body 100 >
*.repspin 1 add *.robage =
*.repspin 2 add *.robage = or
start
*.refxpos .birthx store
*.refypos .birthy store
.torpedo .birthstate store
5 .repro store
0 6 1 add store
stop
cond
*.paralyzed 25 >
*.body 50 >
*.nrg 100 >
start
30 .aimsx store
*.refxpos .birthx store
*.refypos .birthy store
.torpedo .birthstate store
5 .repro store
'0 6 1 add store
stop
cond
*.paralyzed 0 !=
*.shflav 0 !=
*.shflav -2 !=
start
*.shang .aimshoot store
.shootval 6 1 add store
-31999 .shootval store
stop
'================================================
'================================================
'----- Body and such + some defence stuff
cond
*.state .scaning =
*.nrg 200 >
*.body 500 <
*.totalmyspecies 70 > or
start
100 .strbody store
stop
cond
*.state .scaning =
*.nrg 100 <
*.body 20 >
start
100 .fdbody store
stop
cond
*.state .scaning =
*.shell 50 <
*.nrg 50 >
start
20 .mkshell store
stop
cond
*.state .scaning =
*.shell 200 <
*.nrg 180 >
*.body 120 >
start
200 *.shell sub .mkshell store
stop
cond
*.state .scaning =
*.venom 50 <
*.nrg 20 >
start
50 *.venom sub .strvenom store
stop
cond
*.state .scaning =
*.shell 300 <
*.nrg 200 >
*.body 100 >
*.eyef 0 >
*.oponent .enemy =
*.refvelscalar 20 > or
start
300 *.shell sub .mkshell store
stop
cond
*.state .scaning =
*.shflav 0 !=
*.shflav -2 !=
*.shflav -3 !=
*.nrg 80 >
*.venom 5 >
start
*.aim *.shang sub .setaim store
-3 6 1 add store
10 .shootval store
stop
cond
*.state .scaning =
*.shflav 0 !=
*.shflav -2 !=
*.shflav -3 !=
*.nrg 80 >
*.venom 5 <=
start
*.aim *.shang sub .setaim store
.setaim 6 1 add store
*.refaim 682 add .shootval store
stop
cond
*.fixpos 0 !=
start
0 .fixpos store
stop
cond
*.state .scaning =
*.pain 60 >
*.shflav 0 !=
*.shflav -2 !=
start
*.maxvel .dx store
stop
cond
*.shflav 0 !=
start
0 .shflav store
stop
start
.deltie inc
stop
cond
*.numties 0 >
*.robage 1 >
*.toponent .friend !=
start
*.tiepres .tienum store
.locs 1 sub rnd 2 mult .startloc add dup * .tieloc store
1 add * .tieval store
*.numties .deltie store
stop
'================================================
'================================================
'----- Torpedoes
cond
*.state .scaning =
*.oponent .enemy =
*.eyef 0 !=
*.eyef 10 <
*.body 500 >
*.totalmyspecies 50 <
*.refshell 0 >
*.refshell *.refbody add *.refnrg add *.shell *.body add *.nrg add > '-not great...
start
*.refxpos .birthx store
*.refypos .birthy store
.torpedo .birthstate store
5 .repro store
0 6 1 add store
stop
cond
*.robage 1 >
*.body *.nrg add 200 <
*.oponent .alge !=
*.eyef 0 = or
start
.torpedo .state store
stop
cond
*.robage 0 =
*.state .torpedo =
start
*.birthx *.birthy angle .setaim store
stop
cond
*.state .torpedo =
*.body 1 >
start
*.body 10 mult 10 sub 0 floor .fdbody store
stop
cond
*.state .torpedo =
*.oponent .enemy =
*.numties 0 =
*.eyef 0 !=
start
*.refxpos *.refypos angle .setaim store
*.refxpos *.xpos sub abs *.refypos *.ypos sub abs pyth 10 div 30 sub 0 floor 100 ceil *.refvelup add .up store
*.refveldx .dx store
*.refvelsx .sx store
1 .tie store
.eye5dir .tieloc store
.spinoffset .spineyespace 4 mult add .tieval store
stop
cond
*.state .torpedo =
*.oponent .alge =
*.eyef 0 >
start
0 .up store
0 .dx store
0 .sx store
0 .tie store
*.aim *.eye8dir add .setaim store
stop
cond
*.state .torpedo =
*.toponent .enemy =
*.numties 0 >
*.robage 1 >
start
*.tiepres .tienum store
.locs 1 sub rnd 2 mult .startloc add dup * .tieloc store
1 add * .tieval store
40 .stifftie store
200 .fixlen store
*.trefxpos *.trefypos angle .setaim store
*.trefvelup .up store
*.trefveldx .dx store
0 .deltie store
stop
cond
*.state .torpedo =
*.toponent .friend =
*.numties 0 >
start
*.tiepres .deltie store
stop
start
.fixpos dec
stop
'================================================
'================================================
'----- Viral and mem defence.
'Haven't realy gotten around to make a propper defence.
cond
*.keyloc .startkey *.randm add !=
*.venval -2 != or
*.vloc .shoot != or
start
.startkey *.randm add .keyloc store
-2 .venval store
.shoot .vloc store
stop
cond
*.vtimer 0 !=
start
0 .vshoot store
stop
cond
*.repro 0 !=
*.repro 32 !=
*.repro 5 !=
start
0 .repro store
stop
cond
*.delgene 0 !=
*.delgene *.genekill !=
start
0 .delgene store
stop
'================================================
end
-
There's a great feeling of accomplishment that comes when you see your multibot swimming through a field of veggies. Personally, I'd start with a worm, as they are extremely easy to coordinate (for a Multibot) and have a good fractal structure. Complex structures with more specific parts and branchings are quite tricky to coordinate as you can only read from one tie at a time
-
Also I'm not sure about this, but I think you found a way to eat alge realy fast with a small bot, without using tie feeding.... I haven't applyed it in spinned, I kind of think you should be the one the fully exploit it first, and your bots strategy is better suited for it... either way it seems that a poisoned alge will also boost energy shots that are caused by getting hit. So basicaly if you infect an alge with 32000 .shootval and then shoot at it regularly it should hand over all it's energy the first time you hit it... I think... haven't tryed it.
You could also just tie to the alge and boost shootval in that way... either way if it works it should make a big difference.
Yeah, I've been working on something kinda like that. I made a bot that uses an info shot to boost shootval, then another info shot to turn the veggie to face it and then some venom to make it fire nrg at it. It was very sucessful, even though half the time the nrg didn't hit my bot. Might be one of the ways I can go to beat Spinner 1.52. Then again, you'll just make 1.53...
It's far too easy to get sidetracked. Astronomo was going to be F1 with tiefeeding, but I'm not very good at doing stuff with ties, so I ended up using venom instead.
-
I've implemeted a similar method to what Moonfisher suggested in Astronomo v2. It feeds of veggies by causing them to suicide all their energy in one giant shot which is (hopefully) directed at my bot. Sadly it doesn't work extremely well, and the veggie's body is wasted entirely, but the code causes havoc with other bots trying to feed off veggies, and it looks pretty silly too. And it leaves enough room for improvement in version 2.1...
-
I'd consider this the best method:
1-Fix other bots to place by randomly firing a self-replicating fixing virus
2-If the bot is fixed, shoot venom at it
3-Using .memloc, find out if bot is .paralyzed. If it is, shoot at it to force devastating nrg shot
-
I want to keep it F2-legal, since F2 doesn't have the really nasty bots like Pacifist, Etch and Fruitflies....
Also viruses aren't exactly the fastest and most reliable way, since you can't aim viruses and it takes time and energy to spread them.
-
You can always use an info shot or something to the same effect.
By the way, does .shootval default to 0? I think that .shoot .shoot could be very funny.
-
I don't think shootval is reset...
.shoot .shoot is quite nasty
-
So, did the -2 instakill work?
-
Yes.
-
I got something better to work: the MB league; turns out the MB league defaults to the F2 league. Sadly, most MBots are either made by me or really old, so the standard of competition might allow Animal Multi to come very high.