Robo Home | Changes | Preferences | AllPages

A newbie attempt at creating a competitive Robocode robot. (I've earnt much experience since I started with Marshmallow so I'm not a newbie any more). -- PEZ

What's new?

What's special about it?

It's my first bot. And it tends to run like a yo-yo up and down the EternalRumble rankings. Has stabalized somewhat to belong in the top-10 lately.

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


How competitive is it?

Still a top-10 bot in ER! Saving data pays much more in ER than it does in RoboRumble@Home

How does it move?

It uses a lateral RandomMovement.

How does it fire?

Using 8 VirtualGuns, some of which are HeadOnTargeting, RandomTargeting, SymbolicPatternMatching, AveragedBearingOffsetTargeting, LaserTargeting, EscapeAreaTargeting and an AntiMirrorGun.

You could sometimes think it uses [Marshmallow Guns], but it's not. Promise. =)

How does it dodge bullets?

It tries to be as random as possible. Varies its velocity and lateral travel distances to create an unpredictable movement for PatternMatching and a Movement/FlatMovementProfile for StatisticalTargeting to have troubles with. It reacts on enemy fire in two ways:
  1. Chooses a new, random, velocity (though it often chooses max velocity, so you can't always see this reaction)
  2. Now and then enemy fire causes M to stop its current move and choose a new one
Additionally, the bullet power of the enemy is used for knowing what the min and max lateral angles are. This helps the flattening mechanism.

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

It doesn't have much Melee strategy.

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

Closest. Though it's Melee Radar scheme is broken so it only sees one enemy at a time.

What does it save between matches?

Where did you get the name?

When I started with Robocode I figured my bot would get toasted out there.

Can I use your code?

Some of it. It's spread all over the wiki.

What's next for your robot?

Does it have any WhiteWhales?

That would be SandboxDT.

What other robot(s) is it based on?

The code base is from MyFirstRobot. Then I have hamstered ideas shared by Albert, iiley, David Alves and others. I think of these David Alves have influenced Marshmallow the most.

This and that

/ThingsPEZRemembers - /WhatsInAName - /NotPerceptualAtAll - /MovementProfile - /DTGunTest - /CodeSnippets

Comments, questions, feedback:

PEZ, I am very flattered. I downloaded the latest version of M and see that Jekyl stats come pre-loaded. I think thats a first. I still can not beat M, but I am getting closer. If I ever figure out how to write a decent gun. jim

Remove that zip-file and you will see why I included Jekyl in Marshmallows training camp. =) Jekyl is getting stronger all the time. I can't write guns yet. But the power of VirtualGuns make several half-bad guns better. -- PEZ

Congratulations on the #2 ranking, PEZ! M 1.61 is on the loose! -- Kawigi

Congrats on passing the Cigarets in the rankings. I wonder what would happen if you had Albert's PM in your guns array... !! --Vic

Whohooohoh! I think i still must close the gap to DT when it comes to movement on various distances in order to make the guns really decide. Dts guns are too good for allowing flaws in the movement. Your PatternMatcherChallenge might help me develop a decent PM gun myself. But what I really lack in my gun array is one or two guess factor guns. -- PEZ

Great work PEZ,Congratulations on the #2 ranking. ;] -- iiley

Congrats on the #2 PEZ! Good Luck! -- Vuen

I wondered when you would get round to removing DynamicDistance - against good bots it is always better to retreat than to approach. Against poor bots there may be an advantage in staying at distance where the opponents movement is particularly bad - but you only have one bot you would realy like to beat :-). -- Paul Evans

Yes, that's about how I reasoned. Though I am only retreating when distance < 600. M's guns don't like the larger distances very much. You're entirely right about there being only one bot on my list of bots I try to beat. I'm pretty sure my work on beating SandboxDT is what has made M such a high ranked bot as it is. And now I have actually started to work some on the guns so maybe M 1.9 will start hitting its enemies at last. =) -- PEZ

If approaching is not as good, why does DT do it so much when it's close to a wall? I know plenty of bots that see you going almost directly toward/away from them in those situations. Just a thought. Not that the wall movement is all bad, I just choose to never smooth the walls if it requires going at more than about a 30 degree angle toward my opponent. And, of course, I'm an advocate of DynamicDistancing myself, because I believe that my bot should be able to leverage its strengths against any bot, and if that strength happens to be fighting 300 away from its opponent, it will certainly do that (which is why FloodMini does so well in the RO leagues relative to his survival score, whether that's a good or bad thing). -- Kawigi

I have a lower threshold of approching the enemy - the downside of not allowing an approch of the enemy against a wall is that it restricts (and therefore predicts) where you will be going - against poor bots it won't be a problem, against DT - bad news. The other effect is that alot of bots struggle to target if the predictive point is off the battlefield - I have often noticed that when DT is wall hugging and approching most bullets fall behind it. -- Paul Evans

M (and a few other of my bots) doesn't allow itself to approach the enemy more than a given factor of the current distance. It allows for a reasonable (I think) balance beteween unpredicability and distance management. -- PEZ

Chameleon is hard to test against because it takes 10 minutes or more to run 50 rounds against him on an industrial-class machine. Marshmallow is hard to test against because a new version comes out twice a week :-p A whole minor version, eh? Which release is slated to be the next one with different guns? Or with melee movement? -- Kawigi

Chameloen is also hard to test against since it can't handle 1000 round matches. Which means you have to run several looong 50 round matches. ... M only comes twice a week during the short bursts of coding I spend on it. And with 1.8 I did a slight mistake which I'll have to fix with a version 1.8.1. A whole minor version is because it's the first version of M that even has code for dealing with bullet fire below power 3. It makes quite a difference against DT. M still can't beat it, but it wins the bullet damage game with quite some margin now. Now and then during 100 round matches M actually wins the whole match since M has closed the gap to its white whale. I'm quite pleased with this release actually. =).

As for new guns. I think I promised that for version 1.9, but when you started to stress the sub power 3 weakness of M I had to postpone the gun development a while. M has done with the current guns for half a year anyways so a week or two more is not much. On the subject of guns, I have found that against the current top 20 of ER Marshmallow almost always chooses the same gun in six of its nine segments, while the other guns are only used in the three remaining segments. No Melee coding on the drawing board yet. I want my 1v1 #2 ranking back first. -- PEZ

Well, you'll probably have to rip it out of FloodHT's or Chameleon's cold, dead hands, then. But realistically, maybe it's about time to do another merge bot. Last time, I was trying to come up with a revolutionary movement and you stuck a gun onto it (or rather, I put my movement onto your gun). You got to the top 30 or 40 bots with a set of guns and then tuned your movement up into the top 5. I got to the top 30 or 40 bots with head-on aim (maybe FloodMicro will get back up there again someday...) and then tuned the gun into the top 5. I suspect we've gotten ourselves into different roles now - you have a class movement, and I have a power-house gun. It's actually ironic that FloodHT has an 'HT' appended to his name still, because I think his aim is just as good as his movement now. In fact, the dev version doesn't look clearly underneath SandboxDT head-to-head in either category - he basically does what you say Marshmallow does. It gets way more bullet damage than DT (I like how 'higher survival' is a feature with Paul), and doesn't lag too far behind in survival, ending in a winning score a good amount of the time. I'm curious what a robot with your movement and HT's gun would do to DT (if it would be about the same, or if it would be a real DT-killer). -- Kawigi

I don't think it would take us that much further. FloodHT movement is still better than Marshmallows'. It would be interesting to test how good your guns are compared to DTs'. How about a TargetingChallenge? A stationary challenger shooting at non-shooting DT, Marshmallow, Cigaret, FloodHT and maybe GlowBlowAPM and some other bot whose author can supply a non-shooting version of. (One at the time of course). Since the challenger is stationary the test wouldn't be real-world translatable, but about the closest we can get. It could be two challenges, one where the challenger has no a-priori knowledge of the targets and one where it is allowed to use saved data. It would probably make me start working with Ms guns sooner. =) How about it? -- PEZ

Is Marshmallow dodging/reacting to enemy fire power in some fashion? I am trying to get a gauge on how many of the top 10 bots do dodging in some fashion or another. No need to give away any hidden secrets. Simple yes or no is enough. I am looking for next steps as I near Jekyl's next release. -- jim

Yes. (I actually gave away a few secrets. Look under the dodging heading above.) -- PEZ

Hmmm... I wonder why Jim didn't ask this on any of my bots' pages. I suppose no one wonders if my bots react to bullet fire, so he probably won't unless he's trying to get me to spill some beans, too. -- Kawigi

Well, looking at some profiles on your top bots it looks like you are sometimes dodging. Are you? How does it work? I agree with you that dodging is better than some people give it credit for. It's not inherently wrong to do it anyway. Meny earlier versions of M were pure dodgers. Though I have moved to making it less pronounced lately. -- PEZ

The way to really tell my top bots dodge (using dodging to mean "reacting to bullet fire", not "pretending to know where the bullet is and not being hit by it") is to get their profile using a real release of FloodMini, and then altering FloodMini to fire a wave only when he fires. If the resulting curves are blatently different, there is obviously some dodging going on. Of course, that's easy for me to say... I should upload the grapher for FloodMini 1.3 (which will probably still be compatible with 1.4 when I'm done with it) sometime. But anyways, all of the bots in the kawigi.sbf package would pretty much either stand still or orbit at a constant speed bouncing off walls if their opponents never fired (at least in OneOnOne). That means FloodNano, FloodMicro, FloodMini, FloodHT, Teancum and Barracuda. And FunkyChicken dodges bullets in an Inspector Gadget kind of way, completely ignorant that he's doing it. FloodHT is unique among all those robots, because it reacts to firing, but not always exactly when you fire. The next version of FloodMini might do the same (if it does, you'll finally see how. Only one other person that I know of in the Robocode community knows how FloodHT's second dodging technique works). -- Kawigi

Thanks for your answer PEZ. I was pretty certain you were but in conversing with Kawigi he put a doubt in my mind as to wether you were or not. So far I have not made any effort at all to dodge. It seems as if most of the top bots do some dodging and since immitation is the sincerest form of flattery Jekyl may soon have too. Kawigi I did not have to ask you since I know all of your bots do some form of dodging. Curiously speaking though, am I the one who knows your mysterious 2nd dodging technique? -- jim

No, you're not the one. You named it, though ;-) But nano actually got me to spill the beans on what it is exactly. -- Kawigi

Errr, it seems to be my week for pointing to apparent problems in people's guns :-) but you might want to know this; I just ran 200+ rounds of M vs a Musashi-tricked Raiko and Marshmallow is still using head-on targeting. Is it possible that wherever you have the logic saying to choose the best virtual gun, you're actually choosing the worst? Something is quite wrong, anyhow. - Jamougha

Yes, that quite possible. The code got extremely complicated in this bot and I might have destroyed the VirtualGuns array somewhere towards the end. Funny that you are testing against Marshmallow! I didn't think anyone cared about it any longer. -- PEZ

It has this annoying habit of beating the last two versions of Raiko, so I was trying to pin down the problem. Of course if you're not going to update it again then I'll just remove M's data file and let Raiko do the MusashiTrick against it. Otherwise it's more tweaking. - Jamougha

There are no guarantees. =) If it beats Raiko I just might try to fix its guns. But, then again, probably not. -- PEZ

Cool, I didn't think I'd see a new version of Marshmallow :-) But if I were you I'd really be working on it's guns, rather than tweaking it's movement... :p -- Jamougha

I know, I just wanted to see if the movement could be improved with some Raiko theory applied. =) I'll hook it with a new gun in the next release. -- PEZ

can i get the source? - bob.

I think it is included in the bot jar. Let me know if I'm wrong. -- PEZ

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 17, 2004 15:13 EST by PEZ (diff)