Difference between revisions of "XanderCat"

From Robowiki
Jump to navigation Jump to search
m (added notes on version 3.3)
m (started adding detail on version 3.4)
Line 109: Line 109:
 
*  StatGun now does a better job of predicting how far an opponent can get, and only looks within that range when deciding where to fire.
 
*  StatGun now does a better job of predicting how far an opponent can get, and only looks within that range when deciding where to fire.
 
*  Some other minor StatGun tweaks.
 
*  Some other minor StatGun tweaks.
 +
 +
=== Version 3.4 ===
 +
 +
Version 3.3 didn't show the improvement I was hoping for.  My next step was to do some bug hunting.  This has revealed a few things which have resulted in the following changes:
 +
*  StatDrive previously would decide on where to go for a bullet wave repeatedly.  While this might would seem good in that it makes it arguably more adaptable to unexpected events, that potential advantage appears to be outweighed by the "flip flopper" effect.  In some cases, XanderCat would keep changing it's mind on which direction to go for a wave, making it more likely to get it.  Amusing, but not what I'm going for.  To avoid this problem, I have changed it so the decision on where to go for a wave is made once, and XanderCat sticks to that decision until the next wave.
 +
*  StatDrive would previously go to the division of least danger.  I've found this to be too simple in practice.  I've now changed it so it seperately looks clockwise and counter-clockwise, finding the division of least danger in each direction, and deciding on which of those two is more attractive.  If the two danger levels are close to equal, it then looks at the average danger level is each direction.  If the average danger levels are close to equal, it then randomly decides.
  
 
=== Other Versions ===
 
=== Other Versions ===
  
 
I may release various other minor versions that are just tweaks and bug fixes.  There are a number of configurable parameters I could play with.  At the same time, I don't want to pollute the rankings with a zillion versions of my robot.  So...we'll see...
 
I may release various other minor versions that are just tweaks and bug fixes.  There are a number of configurable parameters I could play with.  At the same time, I don't want to pollute the rankings with a zillion versions of my robot.  So...we'll see...

Revision as of 21:04, 8 June 2011

MegaBot based on my "Xander" robot framework with pluggable guns, radars, and drives. Currently using BasicRadar, IdealPositionDrive, AntiMirrorDrive, StatDrive, StatGun, AntiMirrorGun, LinearGun and CircularGun.

Versions up through 2.1 are handcrafted without borrowing code or ideas from other robots. Version 3.0 uses a variation on the Wave Surfing drive from BasicGFSurfer, but a wave surfing drive of my own design is used in version 3.1 and beyond. XanderCat could be made smaller by removing unused Xander components and taking advantage of some of the newer classes like Rules, but it's so far above the next smaller weight class that it doesn't really matter.

Current Version: 3.3

Best against: Any robot that spends too much time standing still, going straight, or going in circles.

Worst against: We will see...

Version Notes

Version Ranks

Note: Best Change and Worst Change are the change from previous version against the given opponent.

Version 1-on-1 Rank Top Best Change % Score Change Worst Change % Score Change
1.0 ~475 / 805 59% N/A N/A N/A N/A
2.0 386 / 806 48% mld.Wisdom 1.0 4.18 -> 76.13 SuperSample.SuperCrazy 1.0 61.97 -> 37.00
2.1 320 / 805 40% dz.MostlyHarmlessNano 2.1 20.90 -> 63.01 jf.Dodger 1.1 78.98 -> 41.10
3.0 148 / 805 18% gg.Wolverine 2.0 41.08 -> 94.57 xiongan.Xiongan 1.1 100.0 -> 74.39
3.1 145 / 804 18% zyx.nano.RedBull 1.0 53.4 -> 85.3 pulsar.PulsarNano 0.2.4 89.3 -> 64.2
3.2 116 / 806 14% ags.polished.PolishedRuby 1 28.5 -> 83.5 rsim.micro.uCatcher 0.1 91.7 -> 31.8

Version 1.0

Based on a not-quite-complete Xander framework. Uses BasicRadar, OrbitalDrive, and a CompoundGun combining a CircularGun and a LinearGun.

Version 2.0

This version adds a StatGun to the CompoundGun (in order, the CompoundGun will consist of a StatGun, CircularGun, and LinearGun). The StatGun is a "Guess Factor" gun of my own design. I don't call it "Guess Factor" because, frankly, I hate that term. The stat gun supports variable configuration, with interchangable Segmenter modules. Version 2.0 uses a CompoundSegmenter, which combines a BulletTravelTimeSegmenter and a RelativeDirectionSegmenter. This segmenter combination categorizes the statistics based on approximate time it takes bullet to reach opponent and opponent heading relative to self.

Version 2.1

Version 2.1 adds better gun selection, tweaked parameters for firing, driving, and stat gun segmenting. For the driving, it drops the "inverse gravity bullet dodging", as it assumes opponents are using head-on or linear targeting, which likely causes worse performance against opponents using guess factor guns. Instead, it just randomizes movement a little more.

Version 3.0

This version drops the Orbital Drive, and instead uses a Wave Surfing drive based on the drive used by the BasicGFSurfer. This means I cannot credit myself entirely for this version, as I am using a modified version of a previously existing Wave Surfing drive. This version will serve as a reference point for my next version, which will use a Wave Surfing drive of my own design.

Version 3.1

Switched to using my StatDrive for driving, a form of wave surfing drive of my own design. This drive has not been tweaked yet, but seems to be doing it's job well so far. Will be interesting to see how it compares to version 3.0 in the rumble. This version also takes advantage of the ability to paint on the battlefield (very cool!), though it is disabled in the packaged form. It also benefits form a few minor tweaks to the Xander framework, for things like firing at enemies who are low on energy or disabled.

Version 3.2

This version has the following modification from version 3.1:

  • Flattening turned off in StatDrive
  • Now tries to better position itself on round start using IdealPositionDrive (before bullets start flying)
  • StatDrive now attempts to back away from the enemy/enemy waves if it deems itself too close
  • Anti-Mirror components added (a drive, gun, and a few other odds and ends). Bye bye PolishedRuby 1; I was tired of you wiping the floor with me. :-)

Version 3.3

This version has the following modifications from version 3.2:

  • StatDrive Flattening now auto-enables after a particular point in time if the opponent's hit ratio is over a certain threshold.
  • StatGun segmentation changed a bit; fewer relative direction and bullet travel time segments, but added a drive speed segmenter.
  • StatGun now does a better job of predicting how far an opponent can get, and only looks within that range when deciding where to fire.
  • Some other minor StatGun tweaks.

Version 3.4

Version 3.3 didn't show the improvement I was hoping for. My next step was to do some bug hunting. This has revealed a few things which have resulted in the following changes:

  • StatDrive previously would decide on where to go for a bullet wave repeatedly. While this might would seem good in that it makes it arguably more adaptable to unexpected events, that potential advantage appears to be outweighed by the "flip flopper" effect. In some cases, XanderCat would keep changing it's mind on which direction to go for a wave, making it more likely to get it. Amusing, but not what I'm going for. To avoid this problem, I have changed it so the decision on where to go for a wave is made once, and XanderCat sticks to that decision until the next wave.
  • StatDrive would previously go to the division of least danger. I've found this to be too simple in practice. I've now changed it so it seperately looks clockwise and counter-clockwise, finding the division of least danger in each direction, and deciding on which of those two is more attractive. If the two danger levels are close to equal, it then looks at the average danger level is each direction. If the average danger levels are close to equal, it then randomly decides.

Other Versions

I may release various other minor versions that are just tweaks and bug fixes. There are a number of configurable parameters I could play with. At the same time, I don't want to pollute the rankings with a zillion versions of my robot. So...we'll see...