Robo Home | Changes | Preferences | AllPages

/VersionHistory /MC2K7

Bot Name






What's special about it?

It uses my super-duper pattern matcher that I thought would never see a real bot (because I thought I had given up this obsession). I'm quite proud to see it in a micro! Though not in it's original tree form, it is functionally equivalent.

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


How competitive is it?

I'm quite pleased to say that it's battling Thorn as we speak for the #1 position in the MicroRumble?! But it hasn't fought enough battles to have a stable rating yet, so we'll see.

How does it move?


How does it fire?

It uses my super-duper pattern matcher :).

How does it dodge bullets?

Agility? I played around with the random movement in the CurveFlatteningChallenge2K6, which helped a lot.

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

No melee.

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

No melee.

What does it save between rounds and matches?

Between rounds it saves every string of moves the enemy made between every span of 1-30 ticks. Nothing between matches.

Where did you get the name?

Well, it hasn't been around for a whole week yet, so that's not it (yet). I made it on Saturday and have been tweaking it since then (it's now Tuesday ... er .. well, now it's Wednesday :) ). It really just fit with the name WeekendObsession, which is now this bot's little brother (it's a nano, this is a micro)

Can I use your code?

Not unless (until?) you thoroughly understand it and could re-construct it at an intuitive level :). That's the only way I could ever use other people's ideas. But I'm warning you, this is one memory-hungry beast!! Don't try to run it for more than 1 match without re-starting robocode, or just a few matches if you have a lot of memory. (Yes, the memory sticks around between matches. I'm not holding on to it, Java's String class is. It keeps a HashMap? of every string it has ever seen, and I make a LOT of them).

What's next for your robot?

Maybe a bigger brother? Maybe, WeeksOnEnd, I'm thinking.

Does it have any WhiteWhales?

Yes, those pesky random movers. I mean the ones that pick random points to go to, not the ones that pick a random orbit direction. That's one thing GF guns have on me for sure. The pattern matcher never knows which direction they're going to go!

What other robot(s) is it based on?

Well, it's really mostly based on a test robot I spent TONS of time on back in the summer/fall. The new style of pattern matching is entirely my own. But I must tip my hat to Kev again for showing the value of StopNGo movement. I don't think he came up with the idea, but I gleaned it from Splinter in the NanoRumble?.

Comments, questions, feedback:

Why you didn't place the link to this bot in Participants List? Give us the link!!!... in Participants List -- DemetriX

Because I'm running it on a modified client. Calm down, I'm not padding my score :). My bot generates TONS of strings to perform its duties, and Java's String class keeps a HashMap? of every unique String it has ever seen. So, after a couple matches, Java's HashMap? becomes so large it runs the JVM out of memory. My client re-starts after every time it runs a match with WeeklongObsession in its name, so that there is a fresh JVM with a fresh, small HashMap?. -- Simonton

By the way, great job with WeeklongObsession, you really rocketed to the top of the MicroBot and MiniBot tables with this little guy. =) -- Voidious

Thank you, sir :). -- Simonton

There is another disadvantage in running your bots exclusive in your client: If your client is not running, new (versions of) bots will not fight yours, so the PL-ranking is not complete for those and your bots. -- GrubbmGait

Yes, you are right. The plug got pulled on my client at work, and I only have dial-up at home. That's why it hasn't been running. I can try to fire it up again at home running offline - it should battle the new bots eventually. This is really turning into a pain. When is that bugfix for robocode going to make it into people's clients again? ... -- Simonton

I know an 'official' version is in the pipeline, so I am not complaining about that. It is just for information that the PL-ranking is not complete. And I hate that I am still not better than the best mini . . . -- GrubbmGait

Very strange.... WeeklongObsession is in the MicroRumble? but not in the RoboRumble....maybe that tweaked client of yours is up to no good? -- Skilgannon

Since I can't download WeeklongObsession to see this new movement of yours, do you mind sharing? It seemed to push your score up a few points. -- Skilgannon

Those memory errors are odd, very odd. I'm not sure you are correct in saying the JVM keeps track of all strings it has seen, it wouldn't make since, but it easily tested ... let me check real quick *codes up a test program concat'ing Math.random(), sets heap size to 1meg* ... yeah, its not, didn't think so, that or my test program is borked, which is possible. But I think its some other issue. I might check into it. -- Ntroutman 2007-08-28

You could probably shed those bytes by taking the getGunTurn?(<lots of args here>) and inlining it. And WeeklongObsession is seriously slow! Have you considered dividing the matchlength by 2 every time instead of subtracting 1? You could probably take out the match-only-when-gun-is-cold then, which would save you those bytes. -- Skilgannon

Now that you're releasing into the general rumble, maybe you could mod your client to also upload results to all the other rumbles? I'll be getting priority battles for WeeklongObsession even after it has 2000 battles in the MicroRumble?, because your client isn't uploading them to all the other rumbles. Thanks. -- Skilgannon

I just thought up a reason that using latvel/advvel in your gun isn't as good as using 'absolute' matching: by using latVel you are assuming that you were staying still last time, when you took the recordings, because you are reconstructing a GF, which should assume that the wave center stays still. But because the center of the 'wave' you are recording from moves, you get inaccurate results. My explanation is kind of lacking, but basically it all boils down to latvel/advvel not being as accurate for reconstructing enemy movements. But only if you are moving, which is why the PMResearch didn't show any problems with it =) -- Skilgannon

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited November 28, 2007 0:46 EST by Simonton (diff)