Author Topic: Slam Funk 1.0  (Read 11344 times)

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Slam Funk 1.0
« Reply #30 on: April 03, 2009, 06:46:50 PM »
Heh for fast reproduction you can look at fruitflies  Or quickdraw, which actualy has soem conditionless reproduction genes and deletes one each cycle, in order to reproduce faster during the first few cycles (Giving it a head start to increase it's odds of raping the alge before it's oponent (Although Saber and Lovebot are the only other 2 rape bots I've seen)).

Other than that spinner is good at producing offspring while feeding on an alge (Could be better though).
And excalibur also has a good simple way of reproducing effectively. Generaly excalibur is a very good bot to look at, it's an F2 bot capable of competing in F1 and it's been in the leagues for a long time. Swarm is also a good bot to look at, it qualifies for F3 but holds a good position in F2 aswell (And it's also a very old bot).

And my first bot was also a big messy ball of stolen code fragments, put together to see how things worked, along with a mean virus that I made myself along with a system for feeding off the alge infected by the virus, which barely worked at all  But once you start to understand how things work theres far more to be gained by trimming your bot than by adding to it. Simpler behaviors are usualy more stable than complex ones, atleast in the leagues with no fluid resistance and a very small field.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Slam Funk 1.0
« Reply #31 on: April 04, 2009, 02:55:39 PM »
Heh I tried taking out the reproduction and body gene from fruitflies to see what it could do on it's own.
It actualy beats Gimmick 2.0, but it can't beat blind bots like Shoot.
It's just fun to see how a bot that never feeds or attacks can beat a strong league bot just by wearing them out.
Could be a good base for a virus or something.

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']cond
*.nrg 80 >
*.body 1 != or
start
.deltie inc

*.body 4 >
*.maxvel .dn store
50 .repro store

*.nrg 80 >
50 *.body 10 mult sub 0 floor .strbody store
not
*.body 1 > and
*.body 10 mult 10 sub 0 floor .fdbody store
stop
« Last Edit: April 04, 2009, 02:57:24 PM by Moonfisher »

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
Slam Funk 1.0
« Reply #32 on: April 06, 2009, 05:19:14 PM »
Funny you should mention 'virus base'..... I have been working in my head around an idea for a supervirus. One that can override movement and targeting, in/out, conspec, eyes, repro, and other functions. One  of the main features I am trying to work out is the ability to, with multiple insertions of the virus, determine the location of an antiviral gene if one so exists, and once the antiviral system is dealt with, delete the rest of the pre-existing DNA until one copy of the virus remains. Basically, the virus bot's entire genome. This goes without saying that it would have to be a single-gene bot. But once the bot has been reduced to a single gene, all I'd have to add is the virus controls and systems themselves. Basically it would be near impossible to combat without HUGE antiviral systems. But that's a bit off. I still have to perfect inline conditions. I'll probably do that by modifying SF2's genes to use inline conditions as a way to make sure it's more complicated bits work (as well to solve a few existing problems, right now I have to write an entirely separate shooting gene for eating veggies).

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
Slam Funk 1.0
« Reply #33 on: April 07, 2009, 03:23:13 AM »
A few good tips for making a virus :
Anti viral genes are always at the end, since they have no effect on genes that land at a later position. So if can delete the last gene you probably removed your worst problem.
But some anti viral genes are clever. One thing you might see is :
*.delgene 0 !=
0 .delgene store
Preventing you from ever deleting genes, this may be one of the simplest defence but IMO it's also the most anoying one.
If a bot does this there's also a chance it uses this at a later position :
*.mkvirus 0 !=
*.mkvirus .delgene store
This is to delete viruses that try to spread themselves, but it opens up weakness fixed by the first defence. Now you can write :
*.genes 1 !=
*.thisgene 1 add .mkvirus store
And you will cause the bot to delete the genes itself.

Now this is just the tip of the iceberg, obviously since you can manipulate anything you want.
Some use *.genes to detect viruses, some counter it by having .genes dec in the virus. Then again if you want to delete genes you'll have decrement .genes with one more for each cycle.
This is the assimilation part of the bot bellow :
*.genes 1 !=
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store

If you want it to spread the virus aswell you should never start channeling the virus before you're at 1 gene and you know for sure the viral defences are gone.

And for a good example, this is the viral version of Fruitflies that was put into FlyFruit and it does what you where describing. Except it doesn't spread itself, it's spread by an alge.
The full version of Flyfruit is kind of big with about 50 viruses in it and all that, but is has what I like to think is a perfect virus defence allowing it to assimilate new viruses and use them as a weapon against others. The trick is simply that alge have plenty of energy to spare, so storing 0 in all the dangerous memmory locations in the last genes simply overides anything done by viruses earlier on. Only way for a virus to kill it, is by landing as the last gene.

This is mostly well suited for internet mode though... since an alge will have plenty of time to charge this virus, and if it hits something an manages to take over then fruitflies finish the job.
For a league virus the rule of thumb is usuay the shorter you can make it the better it will be. I know Pacifist uses a virus much shorter than this to take over the alge and cause them to feed it. But it can get much shorter than that.
Occura amplificis (Or something like that) holds a very good position in F1 and is probably the shortest bot in F1 (Shorter than fruitflies).
It's also not actualy a bot, but a virus... not a bot spreading a virus, it's a virus in itself from what I can tell. (I personaly find that kind of cool, no base bot just pure virus)

Anyway here's the virus version of fruitflies (This one was made to work together with an alge, so the conspec part may at times be a litle confusing, if you find something odd you can always look at the original Fruitflies 0.21 (Should be in the starting gate, but probably easier to get it by downloading the F1 league)
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
cond
*.key .lock !=
start
.fixpos dec

'-- Birth
300 .eye5width store
.dnalen .memloc store
.dnalen .tmemloc store
31999 rnd .out10 store
31999 rnd .tout10 store

*.memval *.dnalen !=
*.in9 .alge !=
*.in10 .out10 = or and
1 .conspec store

not
2 .conspec store

*.eye5 0 =
0 .conspec store

*.tmemval *.dnalen !=
*.tin9 .alge !=
*.tin10 .tout10 = or and
*.robage 1 > and
1 .tconspec store

not
2 .tconspec store

*.numties 0 =
0 .tconspec store

*.robage 0 =
5 rnd .rand store

*.rand 4 < and
*.rand .type store

*.type 0 =
*.type 3 >= or
3 rnd .type store


'-- Reproduction
*.body 5 >
*.nrg 80 > and
*.maxvel .dn store
50 .repro store

'*.totalmyspecies .maxpop <
*.nrg 200 > 'and
60 *.body 10 mult sub .strbody store


'-- Shrinking
not
*.body 1 > and
*.body 10 mult 10 sub 0 floor .fdbody store


'-- Tie feeding
*.tconspec 2 =
*.numties 1 > or
*.numties .deltie store

*.tconspec 1 =
*.tiepres .tienum store
40 .stifftie store
99 .sharenrg store
10 .fixlen store

dupbool
*.type 1 = and
.tieval .tieloc store
1000 .tieval store

dropbool
dupbool
*.type 2 = and
.tieloc .tieloc store
-1 .tieval store

dropbool
*.type 2 > and
.shootval .tieloc store
-31999 .tieval store

'-- Hunting
*.numties 0 =
*.body 1 = and
dupbool
*.eye5 0 =
*.conspec 2 = or and
350 .aimright store

dropbool
*.conspec 1 = and
*.refxpos *.refypos angle .setaim store
.tie inc

clearbool
*.genes 1 !=
.genes dec
*.thisgene *.genes sgn add .mkvirus store
*.genes 777 *777 1 sub -1 mult sqr dup div mult store
*777 .genes store
*.thisgene 1 sub *.thisgene 1 sub sgn mult *.thisgene 1 add *.thisgene 1 sub sgn 1 sub -1 mult mult add .delgene store
stop

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
Slam Funk 1.0
« Reply #34 on: April 15, 2009, 05:34:23 PM »
Since my access to computers is now next to nothing, the release of SF1.1 and SF2 has been delayed indefinitely. Still on the to-do list is optimizing the values (1.1), add a purpose-built eating gene to replace fighting gene for feeding off of veggies (2.0), and fixing any other behavioral issues that remain (2.0). I have noticed also (if I remember correctly) that the latest rendition of SF2 would still turn too often. I am also debating whether or not to extend eye1 and eye9 to provide full rear-quarter detection, but I am unsure whether this would simply cause it to turn TOO much (SF2 can only utilize it's IFFF in the focuseye, may chop the code up to use eye5 for everything that has to do with straight ahead stuff and spin the focuseye around to check other eyes. Although this could hurt it's ability to spot an enemy if it is in a group).

Offline Botsareus

  • Society makes it all backwards - there is a good reason for that
  • Moderator
  • Bot God
  • *****
  • Posts: 4483
    • View Profile
Re: Slam Funk 1.0
« Reply #35 on: April 30, 2014, 02:20:50 PM »
I have no idea what league this belongs in. Moving to untagged.