[Home]GrubbmGrb

Robo Home | Changes | Preferences | AllPages

GrubbmGrb
by GrubbmGait

/History - /RRGC

Description

GrubbmGrb is my only competitive Mega OneOnOne bot.
It has combined the best things of my testbots GrubbmOne, GrubbmTwo etc.
Basically it is just a collection of tweaked old-fashioned and simple targetting and movement, but for some reason they complement and strenghten eachother. Alas no real progress is expected anymore as no 'modern' techniques (WaveSurfing, GuessFactorTargeting, PatternMatching) will be used.

What's special about it?

It does not guess factors and does not surf waves, yet it is ranked just in the top-50 of the RoboRumble.

Great, I want to try it. Where can I download it?

GrubbmGrb: https://www.robocoderepository.com/BotDetail.jsp?id=2380
or at https://home.versatel.nl/gheijenk/robocode/jarfiles/gh.GrubbmGrb_1.2.4.jar

How competitive is it?

It is in the subtop with a rating around 1830.

How does it move?

Movement array with StopAndGo and Oscillator movement, depending on targeting skill of opponent. The original spinning movement has been abandoned from v1.0.7.
The StopAndGo movement starts as a fullspeed orbital movement until hit by one non-HOT bullet (checked by virtual enemybullet). After that it reacts on enemyfire by alternately going fullspeed and fullstop. The oscillator movement uses a double oscillator (sin(x)*cos(y)) as described on Oscillators/Period. Both (actually three) movements use a distance dependent dive-in protection with different maximum angles for each movement. The movements are rated as (bulletpower hit) / (bulletpower fired and reached distance).

How does it fire?

Using 5 VirtualGuns: CircularTargeting, HeadOnTargeting, OrbitalTargeting?, averaged velocity CircularTargeting and RandomTargeting.

As both CT-guns adapt the bulletpower if a bullet would end up in the wall, the VG-array uses VirtualBullets and not Waves. The vgun statistics (not the guns) are segmented on distance(4) and nearwall(2), but I don't think that gets me more than one full point.

How does it dodge bullets?

The StopAndGo movement successfully dodges HOT bullets and linear/circular targeting bullets (see WSC2K6). The oscillator unsuccessfully tries to dodge the rest.

How does the melee strategy differ from one-on-one strategy?

This is a OneOnOne bot.

What does it save between rounds and matches?

Between rounds vgun-statistics (hitrate), and movement-performance (hitrate of enemy).
Between matches nothing will ever be saved.

Where did you get the name?

Taken from my nickname, it means something like 'dry ditch near a farm'.

Can I use your code?

It's included in the jar, under the RWPCL.

What's next for your robot?

What other robot(s) is it based on?

On the testbots GrubbmOne, GrubbmTwo etc and all kinds of info from this wiki
The Waves are inspired by PEZ, although I use it as VirtualBullets.
Inspiration for statistics came from Vuen's CalculatingScore.
The Orbital gun is based upon 2 lines of code from Iiley's Smog 2.5
The ini-file handling is copied from Loki's Freya

I must thank Krabb for providing the drive to change instead of tweak, by racing for the top-100.

Goal

Pass Locke (and maybe RaikoMicro) on the rankinglist.
Accomplished to pass Locke, due to quite a lot of fresh meat new bots with relative simple targeting, the kind I like to dodge ;-)
Alas, this accomplishment was due to some weird battleresults of a pulled robocode version. I still need a fistfull of points . . .

History

Look here

Comments, questions, feedback:

Surprisingly nice. With just circular/linear/head on targeting this beats my both PatternMatching and GuessFactor targeting bots. If only I had a little time... --lRem

Thanks. Considering the time I've spent on my bot(s) and you on yours, there is plenty room for improvements on your side. For GrubbmGrb I am busy with the Musashi-trick and an equivalent trick for linear/circular targetters and then I REALLY need a PM-gun or GF-gun. --GrubbmGait

I disagree, they're on a dead end. They both have flawed design. A nice bot with nice gun and sound movement is bound to come, but even the start of the work is being endlessly delayed. I just hope to do something this summer... --lRem


This morning i was shocked about your ranking :) But i am impressed about your score vs Krabby :D I have to hurry to be the first of us, who is in the top 100!! --Krabb

I had good hopes too after 100 battles, but alas the rankings are not stable yet before approx 1000 battles. My Specialization Index shoots from 70 to 160, I think that says it all. Crush the weak, get crushed by anything else, victory or death, no truce anymore. My movementselection is almost perfect :-p -- GrubbmGait

@Krabb: You don't have to hurry any more, as I won :D --lRem

Can we agree that 1000 battles have to be fought? Then the ranking should be stable enough. Both of you are really really near to victory as I am dangling just around 102 place :-( -- GrubbmGait

OK, 1000 battles are OK! Is ther a possibility to setup the roborumble client to fight only Krabby´s Battles? :D --Krabb

Alas not, but I have set mine up to give priority to every bot with less than 999 battles. How to do that is to put the lines below at the end of roborumble.txt.

#Number of battles a bot has to fight when it is uploaded. It has priority againts others until it reaches such number
BATTLESPERBOT = 999
-- GrubbmGait

I'm nowhere near victory. Today I'll release the last hack, and I'm off for a week. And after return I'll move to melee, which I always prefered. --lRem

Thanks for the info GrubbmGait! When Krabby is in the top 100 i´ll move to team Battles :) --Krabb

Both of you won't get rid of me, because I participate in every rumble present here ;-) As for melee, I prefer that too, but I want at least have one bot in the top-100 one-on-one. As for teams, there is really need for some more competition as long as I can stay in the top-10 :-p -- GrubbmGait

Although the ranking is not stable yet, there is no change falling out of the top-100 anymore !
74gh.GrubbmGrb 1.0.51740.97detailsgraph3972-6-2005:9:13
-- GrubbmGait

Yes, you have won the race :) congratulation!! And it´s a good rank. --Krabb

Arg, I have no chance beating you without the spinning movement ;( But i have a new movent too! Up to now it´s bad, but it looks good! And i have holidays...

EDIT: You wrote, that GrubbmGrb has no WaveSurfing, but i bet you have some kind of waves?!--Krabb

I do have two kinds of waves, one for my VirtualGuns (although it is handled more like VirtualBullets) and also an 'EnemyWave', which only purpose (yet) is to check if I am hit with not-HOT. If so, I switch from full-speed orbital to Stop'nGo orbital. The MusashiTrick could do the same in a much simpler way (and maybe even better), but I though I would need those EnemyWaves in the future anyway.

Thanks by the way for chasing me to rating 1700. I needed that to stop fiddling with details and do some serious changes. --GrubbmGait

Intresting, so you have no direct reaction on EnemyWaves! By the way I´ll chase you to Place 1 :D --Krabb

The Stop'nGo movement only reacts on enemyfire without any further intelligence, except what I explained above. A previous version of Krabby also did that if I remember correctly. I still have some movement-tweaks and a FastTargeting trick in my sleeve, so I am ready for you ;-) --GrubbmGait

I have some Ideas too... I think Krabby has enemy waves since V. 1.1, but realy buggy ones :) --Krabb

Stupid me, ofcourse I am using the EnemyWaves also for the rating of my movement. Counting the bulletpower that passed me (the ones that hit me I get from onHitByBullet?), so I can calculate a bulletpower-hitpercentage. See the debug-window for all sorts of (un)interesting statistics. --GrubbmGait

You commented to Voidious about your ranking and the importance of beating weaker opponents soundly, and I observe that while Ugluk only loses to GrubbmGrb by a small margin, Grubbm has a ranking 100 points higher (1807 vs. 1707). It testifies to the saying that you have to do well against the great bots and even better against the not so great. I've been focusing on Ugluk's problem bots (at least the really nasty ones) without worrying about really pummeling the easier prey. If I need an ego boost I'll have to pick on some little guys. -- Martin

Since a few weeks, when the TargetingChallenge2K6 and MovementChallenge2K6 came up, I realize I do not have LinearTargeting in my VirtualGuns array. CircularTargeting does hit Walls as good, so I think there is no need for it anyway. -- GrubbmGait

gh.GrubbmGrb 1.1.3: Exception: java.lang.NullPointerException
java.lang.NullPointerException
    at gh.GrubbmGrb.onScannedRobot(GrubbmGrb.java:873)
Noticed the above while bug hunting for Ugluk with RobocodeSG at 1 tick per second. Normally GrubbmGrb likes to avoid being shot. -- Martin

I am not sure it is a bug in GrubbmGrb, I am suspecting Robocode. I have seen before (especially in melee) that at extreme slow speeds a sort of 'restart' of Robocode happened. All bots then got back their initial energy, but most of them were disabled by an Exception. It seems to get triggered if the battle takes very long (in seconds, not in ticks). Maybe someone with more indepth knowledge of the Robocode-code (Kawigi, Fnl) knows this symptom. -- GrubbmGait

Nice update, i have to tweak Krabby2 so that he beats GrubbmGrb again :D And thx for your debugging grafics, i noticed a bug in my Wave System :) But it would be nice if they are disabled next time... my own grafics are enought to hide every thing. --Krabb

Sorry, had not thought of those graphics. Next release I will make a flag for it. Just look at it as a small gift from me to help you line-up your waves ;-) -- GrubbmGait

I'm curious if your 'orbital targeting' requires you to predict your own future position several ticks out so that you can anticipate your opponent's relative position. In watching (very closely) battles in RobocodeSG, it is clear that your successful firing mechanism has to be one of the latter three, since I am not anticipating them. I have a targeting technique that uses average velocity for circular prediction, but it also averages rate of heading change. It is also probably broken (and was kind of abstract to begin with, though my most effective against some). I am also wondering what 'modern' guns you are interested in exploring, and if it will be a new bot. - Martin edit: my debug graphics are tied to my 'production killswitch' and are disabled (along with console / file debug) automatically when I release (assuming I remember the switch).

Congratulations on 1.2.0! You've passed some real heavy-hitters in Musashi and Cigaret. I look forward to GrubbmGrb breaking the 1900 barrier without WaveSurfing or StatisticalTargeting. Keep up the good work! --Corbos Edit: I realize there are very statistical elements in GrubbmGrb's movement and guns. Still, there's a purity in its implementation I love.

It's a bit late to observe it, but you mentioned above that you weren't feeling the lack of linear targeting. I've noticed that linear targeting can outperform circular against many bots, notably a few of Loki's. Then again it may come down to implementation, since I do stuff like check if the anticipated intercept point is even inside the arena, so my circular may not hit as well but will fire more often. (Wether or not that's an advantage I'll leave to you.) It becomes evident when testing my new random-plus-dodging movement and I'm not dodging shots I would not have taken, but the wave surfing challenge bot fired anyway. It's as though I need to create a simpler targeting to aim at myself, though it's unlikely I'd use it on an enemy. -- Martin

My (averaged) circular targeting puts the intercept point back into the field, and adapts the bulletpower to intercept at the time of the supposed wallhit, so even wallsmoothers are likely to be hit with a lower power bullet. It is worth a test if linear targeting can help me a bit, but I am afraid it's eventual positive effects will be negated because there is more chance of selecting the wrong gun. -- GrubbmGait

Great work with GrubbmGrb. You are almost at the level of Locke (which uses Raiko's movement, if i remember correctly). Do you think you can squeeze 20 more points in the ranking out of GrubbmGrb? Anyway, it shows that i must turn my attention again at 1-vs-1 as you now are really way ahead of any of my bots in this type of battle... --Loki

I have the feeling it is possible to outrank Locke with some more movementtweaks, but that would also be the End of Development for GrubbmGrb. To get it any higher than this it needs WaveSurfing and/or a GF/ST gun, but I rather leave it as it is: a well-working collection of simple things. And ofcourse I have to tweak Griezel, as you pushed it out of the top-10. -- GrubbmGait

Only 8 points difference with Locke, but now I have to find something to improve. I hope you don't mind, but I copied the ini-file handling of Freya, so I do not have to change the source when I want to test my movement or gunnery anymore. -- GrubbmGait

Version 1.2.3 has its secondary (oscillator) movement replaced by Raiko's (RRGC) movement, while the StopAndGo is still active. This is just a test to see if some simple movement changes could get me where I want. -- GrubbmGait

The repository is up, but it doesn't look like the file for 1.2.3 can be found via the link there. -- Voidious

I have also put it on my own webspace now, and changed the participants-link. The repository seems down again. -- GrubbmGait


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited December 9, 2006 9:22 EST by GrubbmGait (diff)
Search: