[Home]HawkOnFire

Robo Home | Changes | Preferences | AllPages

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

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
--Starrynte/Melee Evaluater

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

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited February 18, 2008 20:54 EST by Starrynte (diff)
Search: