Archived talk:HawkOnFire 20090505
|
Old Wiki Talk
Rozu, the big question on my mind is whether the new and incredibly good GlowBlowMelee is the HawkOnFire movement with your pattern matching gun?? --Brainfade
An updated GlowBlowMelee? That's major melee news! HawkOnFire has, imo, the best melee movement ever made. I made some tests with Shadow with a HeadOnTargeting gun and it doesn't come close to HawkOnFire's score. Time to make some melee tests, cool. :) -- ABC
Wow, that is awesome ABC. I don't think this is the HawkOnFire movement and GlowBlow gun, however. Muffin has made me test against them quite alot, and I have to say the GlowBlow gun hits it more accurately than this gun, and HawkOnFire's movement is alot more difficult for Muffin's gun to tag. Of course, just plastering those two together would probably be more of a OneOnOne bot than melee bot, so I'm guessing he did something different here. Very impressive, though. -- Kuuran
"ver 1.4 changed movement, now more like the one from HawkOnFire" - from the description on the Repository -- Kawigi
What can I say. its some time ago when I implemented the movement into GlowBlowMelee. unfortunately this bot didn't work so well (I don't now why), but the good thing is that I had 200 bytes left because HawkOnFire's movement is pretty small. so I put in many new factors to make also a fairly flat movement, to be serious it isn't flat at all but a good melee bot should also be a good 1v1 bot (ask Shadow, Tron or DT). it now doesn't differ between 1v1 and melee as strict as before, if it would be open source the only conditional expressions with "getOthers()" you could read is "getOthers()>4" :-). this also because I thought that HawkOnFire's movement has some disadvantages when things are getting more controlled on the field.
The gun is still the same old (really old) pattern matcher with heading-change and velocity. the main problem is and has allways been that the radar is turning all the time. so it necessarily can't be as accurate as GlowBlow's gun, which is compared to other guns around today really weak. I have not done many tests so far... -- rozu
A getOthers()==1 check followed by some simple radar locking code might improve the 1v1 performance greatly if you have so much free space. -- Kuuran
I just finished a 5k rounds test. 1st: Shadow 2.33, 2nd: SandboxDT 2.41, 3rd: GlowBlowMelee 1.4, 4th: Tron 2.02, 5th: HawkOnFire 0.1. At least in a field full of strong melee bots, GlowBlowMelee is stronger than Tron, and HawkOnFire is still amazingly good considering the simplicity of it's gun. I'm pretty sure you have a shot at the melee crown, great work. -- ABC
the space is filled at the moment. sure I already tried it but the result wasn't remarkable. the problem is that the gun is a melee pattern matcher and it neads a scan all 7 to 9 ticks. so it would take many bytes to change and the result would just be GlowBlow's gun.
5k, wow, this would take hours on my computer. If you have a copy of the exact results could you post them here? hey man be serious, shadow is far in front. I should work on everithing to get any further... I mean especially the gun. but the next thing I want to do is to put the new code into GlowingHawks code to see what is possible there. -- rozu
It takes hours on mine too, I left it running during the night: http://robocode.aclsi.pt/melee5000.gif
As you can see, DT is still very close to Shadow, at least in very long battles, and GlowBlowMelee is way ahead of Tron. You have the hardest and most important part done, movement, the rest is details... ;) -- ABC
Nice, thank you. this is pretty much the restult I got in my tests. the bad thing for DT is that there are so many easy-to-hit-for-pm-gun-bots in the melee rumble =). BTW, Your gun is really incredible... I hope that I'll get some statistical elements into my gun, to improve the hitrate. -- rozu
You may want to consider removing HawkOnFire from the 1-v-1 RR@H... it's being clobbered by bots using the MusashiTrick. I already removed DuelistMicroMelee and DuelistMiniMelee for that reason. I hate seeing a bot of mine giving people numbers like expected score: 60% actual: 99.7% :-P --David Alves
- I really understand David's rage against MusashiTrick... I really hated to see my bots beeing overtaken by the most primitive gun type. That was the same reason that made me implement an AntiMirrorSystem (btw, i think that one of the first mirror bots was HumblePie, made to be Duelist namesis...). I also have to say that i'm very flattered(?) by the attention dispensed by such a greater robocoder (I really mean it!). -- Axe
Given that one of the bots benefiting is Aleph and that it's by far the best at taking advantage of head-on guns, I somehow doubt rozu sees it quite the same way. :p -- Jamougha
Thanks Axe. *blushes* :-D --David Alves
lol, HawkOnFire has to stay there. It still has a pretty good micro-rating... ;) -- rozu
In the line where you have if(getOthers()==1) setTurnRadarLeftRadians(getRadarTurnRemainingRadians());
, how about adding a melee radar lock:
if(getOthers()==1 || (getGunHeat()/getGunCoolingRate()<4 && target==en)) setTurnRadarLeftRadians(getRadarTurnRemainingRadians());
Why do you want a melee radar lock like that? HawkOnFire always fires HOT, so I could see maybe using < 4 or something, just to get the most recent position. But sticking to one portion of the field for 10 ticks seems excessive. -- Alcatraz
Ok, post changed from before --Starrynte
You also have to remember that HawkOnFire is a MicroBot, so the radar lock might be missing simply because there wasn't enough code space to have it in. I don't think it would be that necessary to have one for a HOT gun anyway because it doesn't really need up to date information on an enemy the way another targeting method would. -- Kev
when i use codesize.jar on HawkOnFire.class (compiled from HawkOnFireOS.java) it says the code size is 770. Is it because i have an older version? --Starrynte
I believe rozu made a few changes to it for clarity and that it would compile a few bytes more, but I thought it was like 756 or something. What compiler are you using? -- Kawigi
[Edit conflict] May also have to do with your compiler. Jikes usually generates smaller code than the internal java compiler, although 21 bytes is quite much. -- GrubbmGait
I got the compiler when I was starting Java, it was from the Java website, so...it probably is the compiler and the version.--Starrynte
If there's enough space...maybe linear targeting the trig way? --Starrynte
If I remember correctly one could shrink the size to about 700 without loosing functionality (mostly due to some tricks from Kawigi's melee bots) but I never really could use it to push its performance so that I would have considered to release another version... - rozu
Might I offer a suggestion for the team version? I assume that the HOFSwarm bots are almost exactly the same as the open source HawkOnFire functionally, and it seems like if the perpendicularity factor were removed for teammates, they might do noticeably better with very little codesize difference. -- Kawigi
That is definitely true. When I released it there haven't been a lot of teams around so I didn't test it a lot. Just today I made some experiments with a version I lastly worked on two years ago. Thats the last test:
1st: abc.Tron 2.02 440204 308200 27800 95420 8450 290 43 278 88 62 2nd: kawigi.mini.Coriantumr 1.1 401342 291600 11700 91808 5970 262 0 117 110 117 3rd: rz.micro.HawkOnFire3 401007 306450 9900 79626 4676 316 38 104 158 115 4th: rz.HawkOnFire 0.1 359363 266550 5600 81878 4493 772 69 62 117 99 5th: kawigi.micro.Shiz 1.1 359067 269000 7700 78418 3551 397 0 78 116 96 6th: pe.SandboxLump 1.52 349481 222900 9000 108751 8291 515 23 90 68 98 7th: DuelistMiniMelee 1.2 321419 237650 5200 74590 3403 574 0 52 75 76 8th: shinh.Entangled 0.3 321185 232400 6700 77171 4423 457 33 67 70 104 9th: myl.micro.Troodon 1.10 307779 226850 4400 73240 2952 337 0 46 76 76 10th: tzu.TheArtOfWar 1.2 288925 196700 5300 82078 4281 541 24 53 71 70 11th: ms.Ares 0.19 261601 189200 6200 62901 2716 485 97 62 46 88
Will there grow a melee version out of your MarioBros team? Sounds interesting... -- rozu
Not sure, although I'd be interested in what kind of result it would get against the fairly loaded group you have there :-) Think of it as what you would get if you combined Raiko's unhittableness, FloodMini's gun and DoctorBob's melee strategy. -- Kawigi
The thing that makes melee an adventure is seeing how much changing one bot shifts everyone else's standings, too:
1st: kawigi.twin.Mario [1.0] 455497 325750 21800 98499 8933 456 59 218 114 103 2nd: abc.Tron 2.02 422939 299600 20600 94280 8081 316 62 206 100 85 3rd: kawigi.mini.Coriantumr 1.1 408430 299800 10900 91005 6328 397 0 109 130 125 4th: kawigi.micro.Shiz 1.1 356234 267700 6400 78377 3193 508 56 64 115 116 5th: rz.HawkOnFire 0.1 336665 248850 4600 78248 4350 576 41 46 115 94 6th: pe.SandboxLump 1.52 331668 212050 7800 103782 7392 588 57 78 46 87 7th: shinh.Entangled 0.3 326363 238950 7800 74393 4391 767 62 78 78 108 8th: myl.micro.Troodon 1.10 313263 231550 4700 73550 3111 332 19 48 91 62 9th: DuelistMiniMelee 1.2 303247 225250 4100 70612 2780 498 8 42 73 67 10th: tzu.TheArtOfWar 1.2 291387 200500 4800 81068 4265 754 0 48 87 76 11th: ms.Ares 0.19 270913 197600 6400 63393 2822 653 45 64 50 77
So seems like the version of Mario in MarioBros 1.0 beats that field semi-convincingly, and my bots also do better with it (after the first 100 rounds, Shiz and Coriantumr were also ahead of Tron). The dev version seems to do somewhat worse (perhaps because it's more likely to be hit by head-on targeting). -- Kawigi
Just finished another battle with the dev version. Very close top three :-)
1st abc.Tron 2.02 421990 300500 20800 92286 8137 252 15 208 97 79 2nd kawigi.mini.Coriantumr 1.1 420714 308150 12700 93499 6229 136 0 127 121 130 3rd kawigi.twin.Mario 419605 309400 16100 87682 6237 186 0 161 116 112 4th kawigi.micro.Shiz 1.1 362708 268950 7900 81992 3608 258 0 79 114 92 5th rz.HawkOnFire 0.1 352053 261700 5700 79600 4357 589 107 58 141 97 6th pe.SandboxLump 1.52 342388 216500 9800 107206 8217 629 36 99 51 80 7th shinh.Entangled 0.3 321635 233550 8500 74241 4612 632 99 85 64 86 8th DuelistMiniMelee 1.2 315564 233900 5000 73119 3008 538 0 53 73 83 9th myl.micro.Troodon 1.10 310358 228650 2600 75595 3142 332 38 29 92 82 10th tzu.TheArtOfWar 1.2 288884 195800 5400 82130 4817 718 20 54 60 87 11th ms.Ares 0.19 261613 190400 5100 62819 2720 540 34 51 68 73
It's interesting to note that LuminariousDuo would not fair anywhere close to as well as Mario does in a melee, despite doing very well in the TwinDuel. It's a melee style movement, but it's very specialized to the 2v2 environment. In fact, BrokenSword is basically a melee bot derived from LuminariousDuo, and it clearly is decent but not great. -- Voidious
It should be noted perhaps that part of the reason the 1.0 version of Mario does better is because of a bug that happens to improve its performance against HOT bots (like HawkOnFire, Shiz and Troodon). -- Kawigi
Aleph has something in it like this too, when it is close enough to some bot it switches to a Raiko-like orbiting movement... There is always the question on what testbed to use. I thinks this one is reasonable for testing a mini or micro bot (it is also not as time consuming as it could be for a melee testbed). In some cases I also did some testing on a 400x400 field where Coriantumr was amazingly good ;). Did you ever thought about making a "flat" melee movement like that of SandboxDT (I tried but wasn't successful). I can remember Paul saying that there isn't MinimumRisk involved at all... -- rozu
Does HawkOnFire use the RPL (its source isn't included in the jar so i'm guessing either closed or no)? -- Chase-san
As far as I know, Rozu has put the source on the repository. Therefor it is free to use, but it would be nice if credits are given (and maybe there is a sortof RPL in the source) -- GrubbmGait
Mmm, nope, no rpl like license (or any at all). HoweverI always give credit where it is due. I only plan to study the code, not build from it or reincorporate it. --Chase-san
Ok I used HawkOnFire against some other bots and here were the results (1000 rounds)...
1st ms.Ares 0.19 599082 368750 54270 158074 16927 877 184 603 65 97 2nd rz.HawkOnFire 578062 359950 21510 176804 18218 1428 151 240 403 119 3rd stelo.AreaTargetingBot 462100 286800 6030 157698 9816 1579 177 67 209 243 4th nic.AntiGravityBot 1.0 361110 255350 2070 97650 5801 239 0 23 118 177 5th cslib.SnippetBot 308552 221100 1980 79680 5345 432 15 22 65 115 6th sample.Walls 278664 210200 2880 62390 1620 1558 17 32 46 86 7th sample.Crazy 230172 200500 450 26607 231 2369 14 6 33 73 8th sample.MyFirstRobot 180444 159800 720 19269 297 347 11 8 45 62 9th sample.Tracker 150033 104550 0 41744 3047 662 29 0 4 11 10th sample.TrackFire 145537 81850 0 60108 3579 0 0 0 11 19
note I say "used", this is because I was testing a "Melee Evaluater" that I recently finished:
Stage 1: Average energy gain: -4.01542851869929 Average hitrate: 0.49666154819198305 Average inflicted damage: 70.5918585096939 Average damage encountered: -12.901709285672858 Stage 2: Average energy gain: -14.308320647050909 Average hitrate: 0.37629811733251695 Average inflicted damage: 49.72084865626396 Average damage encountered: -15.42543738613059 Stage 3: Average energy gain: -10.756387799644193 Average hitrate: 0.25334049922972335 Average inflicted damage: 16.285328767587337 Average damage encountered: -2.995785573096796 Stage 4: Average energy gain: -15.270166282904292 Average hitrate: 0.18605444232537643 Average inflicted damage: 19.452879918777846 Average damage encountered: -2.694936324507394 Stage 5: Average energy gain: -53.81285063502592 Average hitrate: 0.027080020740656754 Average inflicted damage: 8.261417012802745 Average damage encountered: -7.078297165649152
(stage 1 is with 9-8 bots left, stage 2 is with 7-6, stage 3 is with 5-4, stage 2 is with 3-2, and stage 1 is with 1 bot left) using these "statistics", HawkOnFire seems to encounter the most damage during stage 2, lose the least energy during stage 1, which is probably since its hitrate (about 50%) is the best at stage 1. if you have any suggestions to "statistics" to add to the melee evaluater please tell me (I'm working on adding a "Average survival through the stage" right now) at Starrynte/MeleeEvaluater --Starrynte
- nvm, DO NOT TRUST THE ABOVE MELEE EVALUATE RESULTS. THEY ARE HEAVILY BIASED. I have some new results with a rewritten evaluater that I'll try to get up tomorrow --Starrynte
The new, real, and improved (not an ad) melee evaluater results for HawkOnFire (same bots, 1000 rounds too, one new stat added):
Stage 1: Average energy gain: -12.131224622297003 Average hitrate: 0.504984051036682 Average inflicted damage: 78.35403693530165 Average damage encountered: -22.310263868194387 Average survival through this stage: 0.974 Stage 2: Average energy gain: -14.02642856060337 Average hitrate: 0.3704742818971271 Average inflicted damage: 38.421232206659944 Average damage encountered: -12.910784186708048 Average survival through this stage: 0.917 Stage 3: Average energy gain: -14.889823480521384 Average hitrate: 0.2952402590026146 Average inflicted damage: 30.7818235848599 Average damage encountered: -9.322022391501218 Average survival through this stage: 0.847 Stage 4: Average energy gain: -20.476734132593386 Average hitrate: 0.22550706822372465 Average inflicted damage: 31.458286455266744 Average damage encountered: -8.015202935623632 Average survival through this stage: 0.692 Stage 5: Average energy gain: -28.367418376675978 Average hitrate: 0.08480396832967746 Average inflicted damage: 11.246752644705552 Average damage encountered: -6.214750387222596 Average survival through this stage: 0.228
- One more run, slightly different bots. will add info on this run tomorrow
Stage 1: Average energy gain: -8.119537102458112 Average hitrate: 0.4066820276497695 Average inflicted damage: 26.271705958678954 Average damage encountered: -8.659350438587884 Average survival up through this stage: 0.96 Average survival in this stage only: 0.9619238476953907 Stage 2: Average energy gain: -15.179637812006169 Average hitrate: 0.35732882061962945 Average inflicted damage: 38.260258635095965 Average damage encountered: -13.006511311107074 Average survival up through this stage: 0.906 Average survival in this stage only: 0.94375 Stage 3: Average energy gain: -15.166182249246441 Average hitrate: 0.3091958083127273 Average inflicted damage: 32.44781144350145 Average damage encountered: -10.471953705729677 Average survival up through this stage: 0.803 Average survival in this stage only: 0.8863134657836644 Stage 4: Average energy gain: -21.219745051782294 Average hitrate: 0.24241835147744928 Average inflicted damage: 35.567042696051914 Average damage encountered: -10.347065496119743 Average survival up through this stage: 0.659 Average survival in this stage only: 0.8206724782067247 Stage 5: Average energy gain: -31.275988472164762 Average hitrate: 0.1706536388140159 Average inflicted damage: 47.30849331273982 Average damage encountered: -15.770941651482959 Average survival up through this stage: 0.221 Average survival in this stage only: 0.3353566009104704
- --Starrynte
- Ok. The only confusing part is "Average survival up through this stage" and "Average survival in this stage only". The former is how often you survive from the start through the end of a stage. The latter is how often you survive one single stage. --Starrynte
- Erm... wouldn't it be a bug that the two differ for the first stage then? Shoudn't they be exactly the same, or am I just clueless (which is common :))? -- Rednaxela
- Hmm...that's true. Maybe it's just some double precision error, because:
- "Average survival up through this stage" is calculated by <some number> divided by <a variable>
- "Average survival in this stage only" is calculated by <same some number> divided by <a variable from an array>
- A quick check shows that <a variable> and <a variable from an array> are equal all the time.
- Therefore it should be a double precision error, since they differ by only 0.0019238476953907 anyways :) --Starrynte
- Ok. The only confusing part is "Average survival up through this stage" and "Average survival in this stage only". The former is how often you survive from the start through the end of a stage. The latter is how often you survive one single stage. --Starrynte
Bots That Should Be Open Source Talk
| |
Ok, HawkOnFire is open source now. I hope there will be more melee bots in future. -- rozu *Tango applauds* :-D - Kawigi It looks like the one you just uploaded still doesn't have source (?) -- Kawigi I uploaded it separately, it isn't in the package. There should be a button with "Download Source". -- rozu Ah, I see. I've hidden some source code in those links before, but usually found that others don't. I hope you're ready to race with Shiz for the top, à la Jamougha and PEZ. -- Kawigi *jaw drops* Wow, HawkOnFire OpenSource... it's like I won the lottery or something, I've just been bashing my head against the wall trying to understand what could make a movement this good in melee.. awesome.. Oh, and yes, ABC, I do consider source to be something of a spoiler, but sometimes I need to look up the solution to one puzzle on gamefaqs ;) -- Kuuran I have mixed feelings about that move Rozu :\, I really hope people try to improve it instead of just using it as an easy way into the top of the melee ranking... -- ABC Ok, ABC just to satisfy a curiosity i've had for ages is there any chance you could plug the HawkOnFire movement into either Shadow or Tron?? pretty please... -- Brainfade Ah, a killer Melee movement. I wonder what could be done with that... =) -- PEZ Well, ABC, I think that Rozu and I are more optimistic than you. I show that by having open sourced Coriantumr and Shiz, which, with HawkOnFire now, are the three most effective open-source melee bots. My hope is, as well, that we can work together (in friendly competition) to make an even more outstanding bot and push the state of the art. I faced something of a dilemma when I released Coriantumr - whether to include source in the jar or not (David as my witness, we talked about it for awhile), because I suspected it would be the most effective melee bot that ever released source. In the end, I decided I wanted others to follow my example and delve into melee (you haven't done robocode until you've tried to build a melee strategy that works). My hope is that people working on melee-capable bots will read the MinimumRiskMovement page (which could use some more helpful content), devise their own solution to the problem, and then take a look at implementations like mine and Rozu's and benefit from our observations and experience, while also letting us benefit from their new ideas. -- Kawigi Ok, here it is, abc.tron2.Hawk sports HawkOnFire's melee movement and Shadow's radar+gun+1on1 movement:
http://robocode.aclsi.pt/melee_hawk.gif I'd rather that DT and shadow stayed closed-source. I'd rather be in awe of them then dissect them and see exactly what makes them so good. Besides, if nobody can see the source, maybe people will come up with many different solutions to the same problem (e.g. melee movement) rather than stick to the ideas that are already proven to work. Just my two cents. :-) --David Alves I don't mind if some bots are closed sourced. But the problem is than the closed sourced bot has the advantage to update some ideas based on the open sourced bots, with out sharing any code or ideas, I find this unfair. -- SSO Here's another thought, if ABC feels like making another experiment - how would the movement in Shiz fare with a Shadow-like gun? I think that it may have some strengths over HawkOnFire in some areas, but may be overall more predictable than HawkOnFire, which is its failure. I say that because against all micros, Shiz is nearly even with HawkOnFire, but with the best bots, it's somewhat lagging. -- Kawigi |