Difference between revisions of "XanderCat"
m (→Version 7.1: minor wording change) |
(→Series 7.x: Added version 7.2 notes) |
||
Line 414: | Line 414: | ||
This version was not tested against a large sample base before release, so it was unknown whether this version would yield a higher or lower score. However, my gut told me it was the right thing to do. | This version was not tested against a large sample base before release, so it was unknown whether this version would yield a higher or lower score. However, my gut told me it was the right thing to do. | ||
+ | |||
+ | === Version 7.2 === | ||
+ | |||
+ | Changes from the previous version: | ||
+ | * Version 7.1 resulted in a slightly lower score than version 7.0.4 after modifying the gun segmentation. I believe this is because it gave the gun more dimensions to process, making it a slower learning gun. A solution to this problem (if I am correct) is to implement neighboring segment bleed (a term I just came up with), which may be similar to using dynamic clustering (DC), but I've never looked closely enough into DC to know for sure. The idea is, for each logged hit, instead of just adding weight to the specific segment combination for the wave, also add lesser amounts of weight to "nearby" segment combinations. I previously tried this in the drive, so it will be easy to adapt to the gun. It didn't help the drive (for whatever reason), but I think it may work much better for a gun. |
Revision as of 14:25, 12 August 2011
XanderCat | |
Author(s) | Skotty |
Extends | AdvancedRobot |
Targeting | GF / Linear / Circular / Anti-Mirror |
Movement | WS(Hybrid) / Anti-Mirror / RamEscape / IdealPosition |
Released | 2011-5-20 (v 1.0) |
Best Rating | #42 (v 6.8) |
Current Version | 7.0 |
Code License | GCWCD |
Download |
Contents
Introduction
MegaBot based on my "Xander" robot framework with pluggable guns, radars, and drives. XanderCat is the flagship of my robot fleet. It is a multi-mode robot using multiple guns and drives, but it's main drive is a Go-To/True hybrid wave surfing drive I call the Evolution Drive, and it's main gun is a guess factor gun.
Versions up through 2.1 and from 3.1 onward are handcrafted without borrowing code 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.
Best against: Any robot that spends too much time standing still, going straight, going in circles, or doing basic mirroring.
Worst against: Nothing specific, but still need to improve against the middle pack.
Arch Nemisis: lazarecki.mega.PinkerStinker 0.7
Past Version Notes: For information on versions prior to the current series, see the XanderCat/History page.
Drive Tree:
Ram Escape Selector /-------------^-----------\ Ram Escape Drive Anti-Mirror Selector /-------------^-------------\ Anti-Mirror Drive Active Bullet Waves Selector /----------------^--------------\ Ideal Position Drive Head-On Detection Selector /-------^--------\ Head-On Avoidance Drive Linear Detection Selector /---------^------\ Linear Avoidance Drive Evolution Drive
Gun Tree:
Opponent Disabled Check /-----------^------------\ Head-On Gun Bullet Shield Protected Wrapper | Ram Escape Selector /--------^--------\ Linear Gun Anti-Mirror Selector /--------^----------\ Anti-Mirror Gun Virtual Hit Ratio Selector /-----------/----------^-----\--------------\ Linear Gun Circular Gun Stat Gun Advanced Stat Gun
Version Notes
Version Ranks
Note: Best Change and Worst Change are the change from previous version against the given opponent.
Note: Starting from version 6.4 onward in the table, I am ignoring nat.BlackHole 2.0gamma and nat.Samekh 0.4, as scores against them always fluctuate rather wildly.
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 |
3.3 | 115 / 806 | 14% | nat.Samekh 0.4 | 24.9 -> 64.9 | simonton.micro.GFMicro 1.0 | 62.2 -> 39.2 |
3.4 | 85 / 806 | 11% | dsx724.VSAB_EP3a 1.0 | 67.2 -> 93.4 | intruder.PrairieWolf 2.61 | 65.6 -> 48.4 |
3.5.1 | 94 / 805 | 12% | rsim.micro.uCatcher 0.1 | 21.3 -> 96.4 | nat.BlackHole 2.0gamma | 69.2 -> 42.5 |
3.8 | 81 / 805 | 10% | synapse.rsim.GeomancyBS 0.11 | 36.5 -> 49.8 | mn.Combat 1.0 | 80.1 -> 60.8 |
3.9 | 75 / 805 | 9.3% | pez.mini.ChironexFleckeri 0.5 | 42.2 -> 64.9 | rsim.mini.BulletCatcher 0.4 | 57.7 -> 7.0 |
4.0 | 92 / 805 | 11% | rsim.mini.BulletCatcher 0.4 | 7.0 -> 72.1 | nat.Samekh 0.4 | 73.3 -> 45.2 |
4.1 | 74 / 805 (73.66 APS) | 9.2% | nat.Samekh 0.4 | 45.2 -> 75.7 | staticline.whiskey.Whiskey 0.6 | 75.5 -> 57.5 |
4.2 | 74 / 805 (73.73 APS) | 9.2% | mladjo.iRobot 0.3 | 53.8 -> 69.9 | jcs.AutoBot 4.2.1 | 60.1 -> 35.1 |
4.3 | 74 / 805 (73.92 APS) | 9.2% | kc.mini.Vyper 0.311 | 33.0 -> 53.0 | positive.Portia 1.26e | 60.0 -> 36.2 |
4.4 | 71 / 805 (74.11 APS) | 8.8% | pez.frankie.Frankie 0.9.6.1 | 45.9 -> 62.8 | fromHell.CHCI3 0.1.4 | 74.4 -> 55.7 |
4.4.1 | 71 / 805 (74.11 APS) | 8.8% | brainfade.Fallen 0.63 | 45.7 -> 65.5 | jam.micro.RaikoMicro 1.44 | 64.0 -> 49.8 |
4.5.1 | 71 / 805 (74.25 APS) | 8.8% | spinnercat.CopyKat 1.2.3 | 51.6 -> 69.3 | synapse.rsim.GeomancyBS 0.11 | 54.4 -> 38.6 |
4.6 | 71 / 805 (74.35 APS) | 8.8% | deo.virtual.RainbowBot 1.0 | 54.8 -> 69.1 | jab.DiamondStealer 5 | 80.6 -> 61.7 |
4.8 | 57 / 803 (76.46 APS) | 7.1% | ar.QuantumChromodynamics 1.2.1 | 69.2 -> 90.5 | nat.BlackHole 2.0gamma | 60.8 -> 42.0 |
5.0 | 70 / 805 (74.37 APS) | 8.7% | deo.FlowerBot 1.0 | 53.4 -> 84.6 | kcn.unnamed.Unnamed 1.21 | 79.1 -> 58.0 |
5.1 | 49 / 815 (78.59 APS) | 6.0% | ary.SMG 1.01 | 35.5 -> 90.3 | nat.BlackHole 2.0gamma | 54.4 -> 33.0 |
5.1.1 | 49 / 815 (78.75 APS) | 6.0% | rz.Apollon 0.23 | 69.6 -> 94.0 | nat.Samekh 0.4 | 72.7 -> 53.6 |
6.1.8 | 59 / 806 (76.65 APS) | 7.3% | cx.Princess 1.0 | 47.8 -> 65.1 | toz.Gnome 1.1 | 88.4 -> 61.6 |
6.2 | 59 / 806 (76.84 APS) | 7.3% | nat.BlackHole 2.0gamma | 42.1 -> 67.0 | stelo.RamTrackSurfer 1.2 | 89.2 -> 72.9 |
6.3 | 56 / 806 (77.04 APS) | 6.9% | kid.Gladiator .7.2 | 47.7 -> 65.5 | nat.BlackHole 2.0gamma | 53.4 -> 33.3 |
6.4 | 51 / 806 (78.22 APS) | 6.3% | dmp.micro.Aurora 1.41 | 62.1 -> 79.1 | myl.micro.NekoNinja 1.30 | 77.3 -> 61.3 |
6.5 | 48 / 808 (78.70 APS) | 5.9% | ncj.MoxieBot 1.0 | 76.9 -> 92.6 | bayen.nut.Squirrel 1.621 | 89.3 -> 74.9 |
6.7 | 45 / 807 (79.17 APS) | 5.6% | apv.ScruchiPu 1.0 | 57.9 -> 79.5 | trab.nano.AinippeNano 1.3 | 91.4 -> 74.7 |
6.8 | 42 / 808 (79.69 APS) | 5.2% | trab.nano.AinippeNano 1.3 | 72.2 -> 89.5 | rampancy.Durandal 2.2d | 81.5 -> 69.4 |
Version CPU Usage
All values are averages in milliseconds with the exception of those listed as Peak values, which are the maximum time in milliseconds encountered during a typical 35 round battle.
Version | Gun | Gun Peak | Drive | Drive Peak | Drive Array Select | Drive Hit Logging | Drive Predictions | Drive Adjustments | Drive Rolling Avgs |
---|---|---|---|---|---|---|---|---|---|
6.5 | 1.01 | 13.41, 8.77, 8.41, 7.15, 6.94 | 0.21 | 7.70, 7.61, 6.93, 6.93, 6.49 | 1.19 (5.53 peak) | 0.02 (0.04 peak) | 0.88 (6.77 peak) | 0.09 (1.51 peak) | 0.07 (0.89 peak) |
Series 1.x
This series of robots was released while work on the Xander framework was still ongoing. Targeting and drive strategies were somewhat simple. No surfing or guess-factor targeting.
Series 2.x
This series introduced my earlist concept on guess factor targeting. Drive strategy was still simple.
Series 3.x
This series introduced wave surfing, and improvements to the guess factor gun. Version 3.0 used a modified version of the BasicGTSurfer wave surfing drive as a reference point, with all later versions in the line using a wave surfing drive of my own design. Towards the end of this line, I introduced virtual hit ratios, where all guns would provide aiming information for every shot to determine whether or not their aims would have hit the target or not.
Series 4.x
This series focused largely on drive improvements, including improvements to the wave surfing drive, dive protection, and a new Ram Escape drive. This series also improved how fire power is selected.
Series 5.x
This series focuses on using a new strategy for calculating factors in guess factor guns and wave surfing drives, surfing multiple waves simultaneously, paying more attention to robot width, improving wall avoidance, and improving segmentation selection and processing.
Series 6.x
XanderCat series 6 focuses on taking everything learned so far and evolving it into a new set of components, or at the very least, cleaning up old components or features that did not work out. Series 6 introduces the new Evolution Drive, an updated Wave Surfing drive, and new ways of handling factor arrays.
Series 7.x
XanderCat series 7 uses the first release-ready version of the Xander framework. With the knowledge gained over prior versions of XanderCat, the Xander framework has undergone a final refactoring and cleanup and is now considered ready for public use. The Xander framework can be considered as version 1.0. In addition to using the finished Xander framework, series 7 may see updates to the main drive and gun, as well as a first release into the melee competition.
Version 7.0
This version is mostly about using the refactored and cleaned up version of the Xander framework. There should not be much change in the Rumble rank with this version. If the rank drops significantly, it means some bugs slipped through and I will need to embark on a new round of debugging.
Changes from previous version:
- Xander framework refactoring and cleanup. XanderCat now uses the Xander framework version 1.0.
- Drive tree changed to use separate branches for head-on and linear targeting detection rather than having that functionality jammed into the main Evolution Drive.
- Number of Gun bins for the factor array based guns reduced from 121 to 91 (I don't think this will degrade performance, but it should help reduce turn time)
- Further increased bullet shielding detection threshold, as it was still occasionally getting false positives.
Version 7.0.1
- Linear and Head-On Avoidance Drives were accidentally set up without distancing. Applied same distancing to these drives as is used on the main drive.
- Fixed issue where NullPointerException could occur in the Linear Avoidance Drive.
- Fixed issue in Mirror Detector that was causing mirror detection to be inconsistent.
Version 7.0.2
- Reverted back to using targeting detectors within the main Evolution Drive.
- Adjusted various drive and gun selectors.
- Fixed bug where head-on gun wasn't getting used for disabled opponents.
Version 7.0.3
- Fixed bug where disabled robot gun was not getting properly initialized, resulting in NullPointerExceptions.
- Minor change to early-game factor array initialization to be more consistent with version 6.8 and 6.9.
Version 7.0.4
- Fix recurring exception due to how guns were set up in previous version. Not expecting this to change performance though.
- No longer using rolling history on main gun. There wasn't much value to it and code will run faster without it.
Version 7.1
Changes from the previous version:
- This version replaces the original main gun segmentation set with a segmentation set very similar to what the main drive uses. Specifically, the segmentation changes are:
- Defender speed segmenter reduced from 4 to 3 slices.
- Bullet travel time segmenter removed.
- Defender acceleration segmenter added.
- Defender time since last velocity change added, with time slices at 3, 6, and 9 ticks.
This version was not tested against a large sample base before release, so it was unknown whether this version would yield a higher or lower score. However, my gut told me it was the right thing to do.
Version 7.2
Changes from the previous version:
- Version 7.1 resulted in a slightly lower score than version 7.0.4 after modifying the gun segmentation. I believe this is because it gave the gun more dimensions to process, making it a slower learning gun. A solution to this problem (if I am correct) is to implement neighboring segment bleed (a term I just came up with), which may be similar to using dynamic clustering (DC), but I've never looked closely enough into DC to know for sure. The idea is, for each logged hit, instead of just adding weight to the specific segment combination for the wave, also add lesser amounts of weight to "nearby" segment combinations. I previously tried this in the drive, so it will be easy to adapt to the gun. It didn't help the drive (for whatever reason), but I think it may work much better for a gun.