VertiLeach, by
PEZ.
What's new?
- June 1 2004 - Version 0.4.1s released
- Now WaveSurfing (well, tries to)
- Lower resolution in the gun segmentation to make it learn quicker.
- January 10 2004 - Version 0.4.0 released
- A DesperateUpdate? (tm)
- Added a shrinked version of RandomMovementBot movement.
- Added the MusashiTrick
- To fit these I had to remove the smoothing when updating guess factor visit counts. But I don't think it really makes a very big difference. And even if it makes a difference I'm not sure in which direction that difference goes. =)
- I also had to remove the decay functionality, which is probably a bad idea now when AdaptiveMovement bots are becoming legio.
- Learning the lesson taught by FloodMini Verti now fire waves every scan. This should more than compensate the loss in learning speed from removing smoothing.
- December 19 2003 - Finally I think I have a new version of this bot that I dare release - 0.3.3
- With some help from Jim and Kawigi I managed to focus on the right things I think. New in this version is:
- Increased the number of guess factors and now does some smoothing when updating the VisitCountStats (I think this is something Frakir thought up). This should mean faster learning.
- Defaults to 2.8 in fire power. Should make Verti hit its enemy a little more often.
- Mirroring the vertical position segment. This means higher granularity with less segment buckets. Yeay! Less buckets means faster learning.
- An attempt to make Verti's near wall movement less predictable. Though from what I can observe it doesn't seem to work. All ideas around this problem are greatly welcome.
- Code cleanup and shrinking. (Living with zip-files without the ".zip" extention saved me 38 bytes!
- November 9 2003 - Failed to take the 6th win in a row in RobocodeLittleLeague mini 1-v1. https://robocode.yajags.com/20031108/mini-1v1.html
- Though it must represent yet another quite funny rating since Verti won all of it's battles and scored highest. Griffon who won this round (yay!!) also won all its battles. But GlowBlowAPM which came second actually lost 2 or 3 battles.
- I'm still quite pleased since Verti is undefeated. =)
- November 1 2003 - Version 0.3.1 released
- Now it should better evade when it is pushed back against a wall. Seems to make a big difference in it's performance.
- October 29 2003 - Version 0.3 released
- Shoots power 3 bullets all the time.
- Doesn't use different movement modes. Just one, a bit randomized. I'm not sure it's better (RoboRumble will tell), but it's cleaner.
- Code size is now 1386 - and that's with VisitCountStats/LimitFileSize added.
- October 26 2003 - Victory number 5 (out of 5 tries) and a new division high score in RobocodeLittleLeague: https://robocode.yajags.com/20031025/mini-1v1.html
- Much to my (and probably everyone elses) surprise VL also came out best overall minibot this season. =)
- October 25 2003 - VertiLeach goes OpenSource - /Code
- October 18 2003 - Yet another solid victory in RobocodeLittleLeague: https://robocode.yajags.com/20031018/mini-1v1.html
- October 12 2003 - A 9 point lead in the RoboRumble@Home mini game: https://robowiki.dyndns.org/?RoboRumble/Rankings_minirumble_20031012
- October 11 2003 - Yet another highscore by VertiLeach in the RobocodeLittleLeague mini 1-v-1 division: https://robocode.yajags.com/20031011/mini-1v1.html
- October 4 2003 - Wins RobocodeLittleLeague 1v1 mini division again! And sets a ranking high score at that. =)
- October 4 2003 - Version 0.2.2 released
- Some changes in survival and gun power strategies in order to score a bit higher against the ProblemBots.
- September 30 2003 - Version 0.2.1 released
- September 27 2003 - Wins RobocodeLittleLeague 1v1 mini division!
- September 26 2003 - Version 0.2 realeased.
- HUGE targeting bug fixed. Now the gun is more up to my expectations.
- Now uses two movement modes. To deal with mirroring bots.
- September 21 2003 - First test version (0.1) released.
What's special about it?
- It's the first bot with this kind of movement I think. And if not, I think it's first with using the movement characteristics to simplify and specilize its targeting. If not, well, then nothing's special about it. =) If you don't count that it has a wrongly spelt "Leech" in it's name ...
Great, I want to try it. Where can I download it?
https://www.robocoderepository.com/BotDetail.jsp?id=1744
How competitive is it?
Top-10 material I would say.
Whhhhhoooooooooooooohooo!!!! Verti won the RobocodeLittleLeague mini 1v1 division 20030927: https://robocode.yajags.com/20030927/mini-1v1.html
Currently #45 #4 #3 #11 #10 #4 in RoboRumble@Home:
- General competition
- [October 12 2003] - [Current ranking] - [Details]
Currently #1 in MiniRumble?@Home
- Minibots
- [October 12 2003] - [Current ranking] - [Details]
How does it move?
Verti-movement:
It tries to stay at a fix, close, distance along the X axis from its enemy. And for the Y coordinate it copies the enemy's Y coordinate, and then applies WaveSurfing along the Y axis.
How does it fire?
A
ReducedDimensionalSegmentation GuessFactorTargeting gun.
WaveSurfing.
How does the melee strategy differ from one-on-one strategy?
This bot doesn't know about
Melee battles.
What does it save between rounds and matches?
Nothing between battles. All sorts of stats between rounds.
Where did you get the name?
It just reflects its behaviour I think. With some bad spelling added.
Can I use your code?
Indeed, it's released under the
RWPCL. Included in the jar file. Ugly though.
What's next for your robot?
- Dunno. This is not really a bot under development. Just added WaveSurfing for the fun of it.
What other robot(s) is it based on?
Tityus,
Pugilist
Comments, questions, feedback:
Quite impressive! It brings also some fresh air into Robocode, currently dominated by "long range-low fire power" bots, by mantaining a valiant close combat always at less than 300 from the enemy. --
Albert
Thanks! And with "high-power bullets" =). Something for the PointBlankCompetition, in'it? -- PEZ
Cool done,PEZ,Creative movement,cool way to did movement and the movement is cool for gun to save datas,and its color is nice.~;] it beat BlestPain in 300 rounds in my testing~;[. -- iiley
Its looks like two dancers when it fighting FloodMini,haha~~~ nice dancing. -- iiley
=) FloodMini never objects to a close dance either. -- PEZ
Wow. After watching VertiLeach fight, I am extremely impressed with its movement. The way it moves is brilliant. ...I had more to say on it, but it's 4am and I forget now what I was thinking about. In any case, I like the way it assaults the enemy. I have been brooding over various firepower algorithms lately, and basically have decided that I like shooting high power, and I'm very tempted to make Fractal be more aggressive(sp?) in future versions. I'm wondering whether or not I should make it always passive, or always aggressive, or to have both and be able to learn which to use on whom; the problem is, I can never seem to write a powerful gun. No bot I have ever written is powerful on offense. But I like how VertiLeach assaults the enemy, and with Fractal's design I think I could make it house a more powerful gun and be able to do well in an offensive mode. Maybe I should have written this in Fractal's discussion area instead of here. Ah well. Great bot PEZ =). You've given inspiration that it is possible for an offensive bot to succeed in the RR@H. (side note, the current development version of Fractal can pretty consistantly tie the latest VertiLeach, while Fractal 0.3 gets thrashed by it (it being VertiLeach). =) A new version will come soon...) -- Vuen
I'm very curious about those other things you had to say about the movement. =) But you bring up two intersting subjects here;
- Agressiveness vs passiveness, and the full spectra of behaviours in between.
- The first time I made Marshmallow beat PrairieWolf was by making M super agressive. It didn't hold tight since PW has so many modes and soon found the right strategy to counter. It's quite interesting to see that PW beats Verti quite easily. Maybe Verti will force forward a renaissance for the multimode bots? Ever since that ramming Marshmallow I have often tried to make a truly agressive bot (this is what Leach was about in its early development stages). But every time I thought I had created the ultimatily flat movement at close ranges I still always got trashed when moving in. (This is an effect of the great impact AdvancingVelocity has on your movement profile. And it is of course also important to have a trustworthy gun for the range of choice.) Then came Marcelo's DevilFISH, Kawigis FloodMini 1.4 and, to some extent, SandboxDT 2.11 and proved close combat can work.
- Fire power strategies.
- The choice of fire power strategy not only impacts your survival. It can also lead to increased or decreased segmentation. And the possibility to search for weak spots in your enemys movement, like BlestPain. Or, in it's simpler form like Tityus which uses a random (though high) fire power and segments its stats on this parameter. Or you can opt for fast learning and use a constant fire power, like VertiLeach. This is of course obvious, but nevertheless important. VertiLeach takes it a step further and tries to fixate the distance too. This makes it two segementation dimensions less than GloomyDark or Tityus have. Which makes the data files much smaller, the learning much faster and still leaves room for a new segmentation dimension. The Smorgasbord of fire power strategies is endless of course. I have always thought this is yet another area where DT excels.
Now Verti is down on #10 in the rankings BTW. I had hoped it should be able to stay in top-6 (not an arbitrary set). -- PEZ
I just realized "leech" is spellt "leech" and no other way. Gah! -- PEZ
I wonder if iiley has realized yet his bot should be called BlessedPain? :) -- FnH
Ahhh, I have actually wondered about that. Of course, phonetically it is the same. -- PEZ
"Blest" is a correct spelling of the word "blessed" in old english. I don't know if this was iiley's intention or not, but it is perfectly acceptable as a bot's name. Also, [leach] is most definitely a word, and it fits perfectly. -- nano
Blest and blessed are as good as each other in my book. I don't see how the definition you linked for leach fits, Nano, maybe a better explanation is in order. -- Kawigi
Maybe it leaches the competition (eh, like making it look pale or some such). =) -- PEZ
leach, v.tr. To empty; drain: “a world leached of pleasure, voided of meaning”
How about "a bot leached of energy, unable to move"? I know it's less poetic, but Robocode bots are definitely in the business of leaching one another. I mean, they even steal their opponents' energy just like a leech leaches its host's blood! -- nano
Just looked it up, [blest] is indeed a valid alternative for blessed (although a bit archaic to my taste) -- FnH
PEZ, while it pains me greatly to see Verti that much tougher to kill I still think I should report that you may have a bug in your ramming code. I was playing around with some new VertiLeach killer ideas I had and I have noticed that it tends to miss when it tries to ram. My bot ends up disabled and yours sits there, close to me but having never made contact, while we wat for the timer to expire. Seems like your calculation of my X,Y coordinates are off. I wonder if this may be the source of all your targeting bugs as well. Here's hoping it fixes your bot and degrades it's performance :) FYI: I was testing with Version 1.3.1 -- jim
Thanks! I'm sorry to say that it is not the targeting bug. I reset the Y offest Verti chooses only when the enemy fires. The ramming only works by the X coordinate which means that when the enemy has stopped firing and Verti decides to ram it might get stuck above or below the enemy instead. I wasn't aware of this. Should be easily fixed if I have the bytes for it. -- PEZ
Yeah, I had observed this quite a bit too in my testing, but I forgot to mention it. It happened surprisingly often against my less than intelligent bots. Hopefully you can find the room to fix it ; ) -- Vuen
The problem is that I have made quite a few changes in the development version of Verti. All of which seem to degrade its performance. So I won't release the ramming-fixed Verti any time soon. -- PEZ
Heh, I was wondering when you were going to get round to this. I think you can squeeze another 60-70 bytes by not reusing the Point2Ds, so possibly you can add some of that functionality back in? Worth a try. - Jamougha
Maybe. But I am not sure they give any edge though. Will have to run some heavy testing to find out. Thanks for the shrinking tips! -- PEZ