Author Topic: A_Packus_Toxus  (Read 2910 times)

Offline triclops200

  • Bot Neophyte
  • *
  • Posts: 32
    • View Profile
A_Packus_Toxus
« on: September 08, 2009, 01:34:27 PM »
this is an interesting one.
it forms packs, is poisonous so no one can shoot at it, and it inject's venom which makes it's prey shoot energy.
partially based on a_minimalis. has one downside, commonly mutates to kill its own breed, kills I flamma 30 to 5. also requires lots of energy but is very efficiant.
Code: [Select]
'Animal_Packus
'By: Triclops200
'Hunts in packs
'has toxin to stop
'enemy shots
'easliy mutates into a
'thing shoots their own breed.

cond
 *.eye5 0 >
 *.refeye *.myeye !=
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop
cond
 *.robage 0 =
start
 .shoot .vloc store
 -2 .venval store
stop
cond
 *.eye5 0 >
 *.refeye *.myeye =
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop
cond
 *.eye5 50 >
 *.refeye *.myeye =
start
 *.refvelup .up store
stop
cond
 *.venomcounter 19 >
start
 50 .shootval store
 -3 .shoot store
 0 .venomcounter store
stop
cond
 *.eye5 50 >
 *.refeye *.myeye !=
start
 .venomcounter inc
-1 .shoot store
 *.refvelup .up store
stop

cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 314 rnd .aimdx store
stop
cond
 *.poison 500 <
start
 50 .strpoison store
stop
cond
 *.robage 0 =
start
 .shoot .ploc store
stop


cond
 *.nrg 20000 >
start
 10 .repro store
stop
cond
 *.venom 500 <
start
 50 .strvenom store
stop
end
« Last Edit: September 08, 2009, 01:35:18 PM by triclops200 »
I divided by zero and, guess what? The only thing I found out from it is that dividing by zero doesn't work... You are sitting there 9 hours older and thourougly depressed by the amount of work you had to do to finally convince yourself of that.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
A_Packus_Toxus
« Reply #1 on: September 13, 2009, 01:59:27 PM »
You forgot to define a memmory location for venomcounter... (ex: #define venomcounter 110)
But you could also use something like :

*.timer 20 mod 0 =
-3 .shoot store

Ofcourse then you won't be sure that the first shot is a venom shot, but then again the first shot rarely hits it's target... generaly I'd recommend using less venom at the time and fire venom more often.


Also I would have some nrg requirements for poison and shell and such : (Just to make sure a bot doesn't kill itself.)

cond
*.nrg 50 >
start
*.shell 500 <
50 .mkshell store

*.poison 500 <
50 .poison store

*.venom 500 <
50 .strvenom store
stop


And shootval is not reset, so you need to reset it manualy after firing venom unless you want to spend nrg on boosting your regular shots.

And I'd also recomend turning while reproducing, so you don't give birth in the midle of a spray of shots.

Also your first and 3rd genes could just be one gene without the *.refeye condition... unless you're planning to have different behaviors in a later version.

I think what you need most is to adjust your body size, when you reproduce you cut your body in half, but you never build any body and you don't use -6 shots, so you only eat a litle body from the -1 shots. Basicaly you keep shrinking, which is why you're waiting till you have 20000 nrg to reproduce, when what you realy need is a condition to make sure your body is large enough (And require a LOT less energy) and genes for building or eating body.
For your bot something like this would probably work ok :

'reproduction
cond
*.nrg 2000 >
*.body 1000 >
*.eye5 0 =
*.refeye *.myeye = or
start
10 .repro store
140 rnd 140 add .aimsx store
stop

'body growth
cond
*.nrg 2 div *.body >
start
*.nrg 2 div *.body sub .strbody store
stop

'body shrink
cond
*.nrg 2 div *.body <
start
*.body *.nrg 2 div sub .fdbody store
stop


Anyway, it qualifies for the F2 league, but doesn't manage to enter top 30. It can get to Beholder in the F3 league, but it doesn't qualify for that league since it uses shell, poison and venom.
But if you want to run it in the leagues I'd work on getting it to go further in the F3 league and then see if you can make it strong enough to enter F2 (Or F1 if you plan on introducing viruses, or tiefeeding, or raping)
You could start by getting it to beat Beholder or the tutorial bots (The bots with simple names and no author) in the F3 league.

Offline triclops200

  • Bot Neophyte
  • *
  • Posts: 32
    • View Profile
A_Packus_Toxus
« Reply #2 on: September 13, 2009, 02:04:15 PM »
I have a better version called a_packus_ultimas... it is pretty good since I started playing darwin last week.
Code: [Select]
'Animal_Packus_ultimas
'By: Triclops200
'Hunts in packs
'has toxin to stop
'enemy shots
'tie feeds and it is tie resistant
'beat Devincio_Eversor in all rounds

cond
*.nrg 10000<

start
3 .up store
stop

cond
 *.eye5 0 >
 *.refeye *.myeye !=
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop
cond
 *.robage 0 =
start
 .shoot .vloc store
 -2 .venval store
14 56 store
stop

cond
 *.eye5 0 >
 *.refeye *.myeye =
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop
cond
 *.eye5 50 >
 *.refeye *.myeye =
start
 *.refvelup .up store
stop
' Gene 2 Eat Food
cond
 *.venomcounter 19 >
start
 50 .shootval store
 -3 .shoot store
 0 .venomcounter store
stop
cond
 *.eye5 50 >
 *.refeye *.myeye !=
start
 .venomcounter inc
-1 .shoot store
100 .tie store
*55 .readtie store
 *.refvelup .up store
stop

cond
 *.poison 500 <
start
 50 .strpoison store
stop
cond
 *.robage 0 =
start
 .shoot .ploc store
stop
cond
*.numties 0 >
start
-1 .tieloc store
-1000 .tieval store
*.tiepres .tienum store
stop
' Gene 4 Reproduce
' Gene 3 Avoiding Family
cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 314 rnd .aimdx store
stop
cond
 *.venom 500 <
start
 50 .strvenom store
stop
cond
 *.nrg 20000 >
*.eye5 30 <
start
 10 .repro store
140 rnd 140 add .aimsx store
stop
cond
*.slime 90 <
start
100 .mkslime store
stop
Cond
*.trefeye *56 =
start
*55 .deltie store
stop
end
« Last Edit: September 13, 2009, 02:06:13 PM by triclops200 »
I divided by zero and, guess what? The only thing I found out from it is that dividing by zero doesn't work... You are sitting there 9 hours older and thourougly depressed by the amount of work you had to do to finally convince yourself of that.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
A_Packus_Toxus
« Reply #3 on: September 13, 2009, 05:35:37 PM »
Yes it's a very nice first bot. It's also a good idea to take it one step at the time to make sure you realy understand what works and why.
The new one is definately a lot stronger, the tie feeding helps a lot, especialy when the bots get too small and shots no longer do any damage.
I'd still recommend some controll of body size. Not saying a small size is bad, especialy not if you're planning on using tie feeding (I find keeping a body size 1 can actualy work rea, but you should controll the size of your bots to some extend or you will have bots that get too small and have a hard time gathering enough energy, or bots that get realy big but then die from lack of energy when they could be eating their own body.

Generaly most of the things mentioned in the previous post still goes for the new version :
- Body is not managed, causing a fair amount of suicides.
- You never fire venom because you haven't defined venomcounter.
- You reproduce only at 20000 nrg, which is a very large amount of energy to have laying around (You start at 3000 nrg, it takes a while to get to 20000).
- You don't check if you have any energy before producing shell/poison/venom, which can cause a few suicides.
- You never reset shootval after firing venom causing you to spend a lot of energy on boosting your -1 shots. Boosting shots can be a big advantage, but you need to make sure you have the energy for it (And if you want to spend that much energy on boosting shots you also want to be fairly big, or it will be a waste.) (This is not actualy a problem yet, since you never fire any venom ;P, but it could become a problem once you fix venom)

These are definately the issues I would work on first. (You should take a look at my last post for more details)


Overall it puts up a pretty even fight with Purple Flamma, but with the tie feeding it's now an F1 bot, so it no longer qualifies for F2.
I'm not sure I'm running the newest F1 league, but it doesn't beat Martian Tank 3... (This is also an F2 bot, but it also manages to stay in F1)
It still looses to BEholder in the F3 league.


Also one more thing :
*.refxpos *.refypos angle .setaim store
will cause you to aim directly at what you're looking at. (This would help with tracking oponents, and generaly aiming.)
« Last Edit: September 13, 2009, 05:44:25 PM by Moonfisher »

Offline triclops200

  • Bot Neophyte
  • *
  • Posts: 32
    • View Profile
A_Packus_Toxus
« Reply #4 on: September 14, 2009, 12:37:54 AM »
Thank you very much.
I divided by zero and, guess what? The only thing I found out from it is that dividing by zero doesn't work... You are sitting there 9 hours older and thourougly depressed by the amount of work you had to do to finally convince yourself of that.

Offline Ta-183

  • Bot Destroyer
  • ***
  • Posts: 105
    • View Profile
A_Packus_Toxus
« Reply #5 on: September 21, 2009, 11:53:57 AM »
Good to see new bot developers these days. One thing you might find helpful; when I created my first bot, the body regulation gene was completely busted. It didn't work at all and I really never noticed, so I spent weeks trying to fix everything else I could find. Once I found the body gene wasn't working, everything ran like a charm. The moral of the story; a well made body regulation gene can make the difference between a fighter and a flop.

Offline triclops200

  • Bot Neophyte
  • *
  • Posts: 32
    • View Profile
A_Packus_Toxus
« Reply #6 on: September 21, 2009, 11:57:00 AM »
Quote from: Ta-183
Good to see new bot developers these days. One thing you might find helpful; when I created my first bot, the body regulation gene was completely busted. It didn't work at all and I really never noticed, so I spent weeks trying to fix everything else I could find. Once I found the body gene wasn't working, everything ran like a charm. The moral of the story; a well made body regulation gene can make the difference between a fighter and a flop.
I fixed the gene now it is better... I'm trying to  work on virus to make the target not move or shoot and to spit out more virus.... also it checks to make sure it isn't a A_Packus_Ultimas.
I divided by zero and, guess what? The only thing I found out from it is that dividing by zero doesn't work... You are sitting there 9 hours older and thourougly depressed by the amount of work you had to do to finally convince yourself of that.

Offline triclops200

  • Bot Neophyte
  • *
  • Posts: 32
    • View Profile
A_Packus_Toxus
« Reply #7 on: October 21, 2009, 03:23:42 PM »
does this fix it?
Code: [Select]
'Animal_Packus_ultimas
'By: Triclops200
'Hunts in packs
'has toxin to stop
'enemy shots
'tie feeds and it is tie resistant
'beat Devincio_Eversor in all rounds

cond
*.nrg 10000<

start
3 .up store
stop

cond
 *.eye5 0 >
 *.refeye *.myeye !=
start
*.refxpos *.refypos angle .setaim store
*.refveldx .dx store
 *.refvelup 30 add .up store
stop
cond
 *.robage 0 =
start
 .shoot .vloc store
 -2 .venval store
14 56 store
stop

cond
 *.eye5 0 >
 *.refeye *.myeye =
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop
cond
 *.eye5 50 >
 *.refeye *.myeye =
start
 *.refvelup .up store
stop
' Gene 2 Eat Food
cond
 *.venomcounter 19 >
start
 50 .shootval store
 -3 .shoot store
 0 .venomcounter store
1 .shootval store
stop
cond
 *.eye5 50 >
 *.refeye *.myeye !=
start
 .venomcounter inc
-1 .shoot store
100 .tie store
*55 .readtie store
 *.refvelup .up store
stop

cond
*.nrg 50 >
start

*.shell 500 <
50 .mkshell store

*.poison 500 <
50 .poison store

*.venom 500 <
50 .strvenom store
stop
cond
 *.robage 0 =
start
 .shoot .ploc store
stop
cond
*.numties 0 >
start
-1 .tieloc store
-1000 .tieval store
*.tiepres .tienum store
stop
' Gene 4 Reproduce
' Gene 3 Avoiding Family
cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 314 rnd .aimdx store
stop
cond
 *.venom 500 <
start
 50 .strvenom store
stop
'reproduction
cond
*.nrg 2000 >
*.body 1000 >
*.eye5 0 =
*.refeye *.myeye = or
start
10 .repro store
140 rnd 140 add .aimsx store
stop

'body growth
cond
*.nrg 2 div *.body >
start
*.nrg 2 div *.body sub .strbody store
stop

'body shrink
cond
*.nrg 2 div *.body <
start
*.body *.nrg 2 div sub .fdbody store
stop
cond
*.slime 90 <
start
100 .mkslime store
stop
Cond
*.trefeye *56 =
start
*55 .deltie store
stop
end
« Last Edit: October 22, 2009, 12:23:47 AM by triclops200 »
I divided by zero and, guess what? The only thing I found out from it is that dividing by zero doesn't work... You are sitting there 9 hours older and thourougly depressed by the amount of work you had to do to finally convince yourself of that.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
A_Packus_Toxus
« Reply #8 on: November 11, 2009, 03:55:15 PM »
A most excellent bot. If I had any more time spare, I'd have a proper look at it, but it seems the only improvement I can suggest is to make a cell that has seen food 'send' a signal that makes the rest of the group follow it. A on/off value in one of the I/O ports should fix that easily. They should also move around a bit instead of staying in the same place when there's no food about.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline triclops200

  • Bot Neophyte
  • *
  • Posts: 32
    • View Profile
A_Packus_Toxus
« Reply #9 on: November 12, 2009, 10:28:41 AM »
Quote from: bacillus
A most excellent bot. If I had any more time spare, I'd have a proper look at it, but it seems the only improvement I can suggest is to make a cell that has seen food 'send' a signal that makes the rest of the group follow it. A on/off value in one of the I/O ports should fix that easily. They should also move around a bit instead of staying in the same place when there's no food about.
lol, I'm trying to make an algae that groups and uses signals when predators are nearby. I can't get I/O to work.
I divided by zero and, guess what? The only thing I found out from it is that dividing by zero doesn't work... You are sitting there 9 hours older and thourougly depressed by the amount of work you had to do to finally convince yourself of that.

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
A_Packus_Toxus
« Reply #10 on: November 14, 2009, 11:42:26 AM »
It does a lot better in F3, but you still have some of the previous issues. Like venom never getting triggered because venomcounter hasn't been declared.
Add this line below the introduction text (Not in a gene) :

def venomcounter 110

This simply means that when you write *.venomcounter it's the same as writing *110 (And .venomcounter is the same as 110)
So you refer to the memmory location 110 (Which is default 0 and isn't used as a sysvar, I think the range 75 to 150 should be safe locations to use)
Anyway, this should get your venom going. I'd immagine it would have a big impact on it's performance.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
A_Packus_Toxus
« Reply #11 on: January 02, 2010, 08:32:44 PM »
Quote from: triclops200
lol, I'm trying to make an algae that groups and uses signals when predators are nearby. I can't get I/O to work.

Basically you just put any value into one of the IO ports, for example 60 .out1 store. Then any bot which has this bot in its focus eye can read the value through its input, eg. it will read the .out1 value through *.in1. I suggest using at least one I/O port for conspec, as the bot can also read its own out values. This also tends to fool doppelgangers:

42 .out1 store (arbitrary conspec number)
-32000 32000 rnd .out2 store ('identity' number)

cond
 *.in1 *.out1 = (checking conspec)
 *.in2 *.out2 != (checking that bot is ont a doppelganger)
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan