[Home]HawkOnFire

Robo Home | Changes | Preferences | AllPages

Showing revision 44
this is a micro-melee bot, with a pretty good ER-melee rating for it's size.

02-18-2004: released the source code. I commented some things and tried to make it readable.


I can't believe there is so little written about a bot this good. In my opinion the best all-round microbot:

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:

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

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());
--Starrynte

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


Robo Home | Changes | Preferences | AllPages
Edit revision 44 of this page | View other revisions | View current revision
Edited February 16, 2008 4:25 EST by Starrynte (diff)
Search: