Robo Home | Changes | Preferences | AllPages

Nibbler is Crippas new bot. I have been working on CBot but it never really worked that well so i threw out about 80% of the code and started over with just a PatternMatching gun and a very simple driver that uses RandomMovement. Nibbler is only meant for OneOnOne at the moment.

/NibblerPMC is a version of Nibbler for the PatternMatcherChallenge.


What's special about it?

Don't realy know but instead of keeping all code that isn't bad (CBot style), now i don't hesitate to trash everything that don't realy improve the performance!

Less code (readable code!), less bugs!

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


How competitive is it?

Current ranking in EternalRumble is 15

How does it move?

Nibbler uses RandomMovement that started out quite simple. But in my atempts to flatten my movement profile it evolved into something quite complex. I'm currently trying to make a SandboxFlattener movement but that's quite hard and it's making my code unreadeble! That's probably a mistake in the long run.

How does it fire?

PatternMatching! CBot, that Nibbler is based on, had about ten different guns and used VirtualBullets but i trashed all that code when started over with Nibbler. Less code, less that can go wrong!

Im currently experimenting with a Moebius style pattern matcher but this new version still don't beat my old one.

How does it dodge bullets?

It doesn't. RandomMovement

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

Only OneOnOne at the moment.

How does it select a target to attack/avoid in melee?

Only OneOnOne at the moment.

What does it save between rounds and matches?

Info that the gun uses. ;)

Where did you get the name?

Nibbler is a character in the TV-series [Futurama].

Can I use your code?

Not at the moment.

What's next for your robot?

Refactor! Maybe UnitTest?, a nother gun and improvement off current functionality!

Does it have any WhiteWhales?

It used to be PrairieWolf but now it's probably SandboxDT.

What other robot(s) is it based on?


Comments, questions, feedback:

I'll make your WhiteWhale become Marshmallow. You say you don't know how competetive. Well, I know and you know that it's a strong bot. But as long as you refuse to upload it to the repository you won't get a ranking. That pattern matching gun of yours is awesome. Show it to the world man! -- PEZ

Always Marshmallow! Any day now! ;) -- Crippa

You needn't go complex with the flattening code I think. Mako's? move() function is only 15 lines. -- PEZ

Gah! Yet another Java 1.4 only bot... Actually since it's a mega bot you can afford doing something like pattern.toString().indexOf() so that it works on Java 1.3 as well. -- PEZ

Is the pattern-matcher symbolic in Nibbler? -- Kawigi

Yes, it's symbolic! My first attempt to create a pattern matcher wasn't but that was just to slow! I'll make it Java 1.3 compatible to next relese. -- Crippa

Does it follow the pattern-matching concept of most other current symbolic pattern matchers? (pattern-matching lateral velocity). By the way, I think that FunkyChicken's pattern-matcher is a little more accurate than Moebius's. -- Kawigi

I made some test with a lateral velocity pattern matcher but i didn't get as good results as with my current one that uses heading and velocity. With lateral velocity the code becomes quite beauteful so i might make another try some day. ;) -- Crippa

I think that most robots move relative to their opponents (at least in 1-on-1), so in theory, a pattern matcher that looks for and projects patterns relative to yourself should be better than one that matches actual movement. In practice, though, no one has really gotten it to work better. Teancum does it, but is far from perfect, and actually misses sometimes because his assumption that the enemy is moving relative to him is correct - and he aims as if he's standing still the whole time, which he isn't. I'm working on a new version of Teancum that will hopefully take relative pattern-matching to the next level by projecting at least a part of his own movement as well as his opponent's movement, to find his bearing. Once this is done, I think it should at least be able to beat FloodMini 1.1 (if not 1.2). -- Kawigi

I think it doesn't matter much what you match on. Though heading and velocity is maybe best because it removes your own movement entirely. -- PEZ

My point, though, is that fundamentally, my opponent's real movement pattern doesn't remove my own movement entirely. -- Kawigi

Well, not the part where your opponent responds to your movement. But good luck taking that into account in a reliable way. =) I think that might it might be a vaste of time trying. But I'd be happy to be proven wrong. -- PEZ

LoL?, thanks... I guess. I'm not saying, though, that my opponent responds to my movement, but rather that they respond to my position, which changes (thus, my movement). Teancum's targeting foundation is measuring the opponent's movement (or actually his velocity, which is his movement each tick) relative to himself. The way he projects future movement in the current version is really simple, but only mathematically sound if Teancum is standing still. -- Kawigi

I know I've commented on this somewhere in NanoLauLectrik's page, but here it is again. Good idea, slow learning. Your learning time is going to be a function of learning time for your movement and learning time for your opponent's movement. It seems that the function should be a product, but I might be wrong. -- Kuuran

I would agree if I intended to match on a bunch of parameters that included my own movement. But what I intend to do may actually see real patterns more readily than a velocity/direction change pattern matcher. In Teancum's (and NanoLauLectrik's) current guns, by using lateral (and sometimes advancing) velocity, you factor your movement out of your opponent's movement in getting the pattern. My intention is simply to factor it back in when I project their future movement. -- Kawigi

Hmmm, that sounde doable. But I'll let you explore it. If it seems to be effective I'll incorporate it. If it isn't you have wasted the time, and not I. =) -- PEZ

I'm usal not patient enought to do the nesessary tests. I run a couple och houndred rounds and if i don't see a performance increase i just trash it. -- Crippa

Tsss. We both know you only run 30 rounds and then hit the Stop button and mangle your code again. =) -- PEZ

Good job on getting your bot into the EternalRumble #16 ranking in 1v1! -- PEZ

Good job! -- Vuen

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 6, 2006 23:36 EST by Kev (diff)