From Robowiki
Jump to navigation Jump to search

From old wiki

Ok, i'[m gonna cut straight to the with more than one gun, you fire virtual bullets and see which gun works best. With different movements is there a better than trying to count how many bullets teh enemy fired, how many hit and seeing which movement come out with the lowest hit percentage. In my tests this method takes quite a while to pick the best one. I just wanted something faster learning for the roborumble... --Brainfade

There's no fast way to rate movements I think. But you can do it rather accurately by using something like Vuen's CalculatingScore code. Swiffer does this. Take a look at Swiffer's code if you want to see how it does it. -- PEZ

I have been toying with the idea of using Vuen's CalculatingScore code, but decided i wanted to try and avoid it if possible. By using overall score, i was concerned that a change in gun may mislead the move manager into continuing to use a bad movement or vice versa. I'd have to do some testing to confirm this, but i just wanted to canvas opinion first... --Brainfade

I'm currently working on something similar...but having a lot of trouble with it.

Hmm, how much is this used any more. I started off making a fully pluggable interface with event listeners, and still use that since it is really easy to develop bots this way, but it seems that most bots now just keep it as concise as possible (probably due to MiniBot and other codesize work). I havent even seen an enemy class in the sources ive looked at. In some ways this is very good, because it means that our movement and targetings are much more multipurpose and addaptible on their own, but does anyone have a multimode system in place in their robots? -- Jokester

UnderDark3 makes use of a Learning Finite-State Machine, which is a multi-mode system that adapts to its current foe --UnderDark

In fact, most multi-mode multi-guns and multi-movement ideas have failed. That's because it's easier to develop one good general movement than two specialist ones and a system that would wisely choose between them. The last realy successful attempt at movement was MusashiTrick, yet it was an easy one. Also Krabb and GrubbmGait keep trying at this. But comparing their effort with the outcoming rankings, I would say that the multi-mode idea failed them too. --lRem

You make a good point. From how I see it, we have two systems of targeting and movement, both of which play off the alternative opposite section. For targeting there is PatternMatching and GuessFactorTargeting, while in movement we have RandomMovement and WaveSurfing. WaveSurfing pretty soundly beats all lesser targeting methods and some of the best GuessFactorTargeting guns, but is vulnerable to PatternMatchers. Truly RandomMovement defeats PatternMatchers but is vulnerable to GuessFactorTargeting. I feel that there is something out there more effective than RandomMovement against PatternMatchers, but that is currently one of the best systems. Where current Movement and Targeting is going is trying to combine the two methods into one, but a bot which can effectively use the 4 will be highly effective for the time being. With regards to which we will combine first, my money is currently on the targeting side. There has not been enough work with AntiPatternMatching strategies, while there are several targeting techniques that are starting to combine the two. In the beginning there was a fairly wide array of FastTargeting systems, designed to both work as LogTargeting systems (PatternMatching) and StatisticalTargeting systems. Movement strategies were still pattern oriented, and so the development of PatternMatchers became more widespread. RandomMovement came about to defeat that, and so the StatisticalTargeting came to the front. While WaveSurfing is quite effective against StatisticalTargeting, where it really comes to the front is its ability to defeat lesser targeting methods and get those scores up. -- Jokester

It seems that multi-movement only has sortof a future in melee, although a good movement should be capable of handling both Melee and OneOnOne. The Stop'nGo movement is quite satisfying against simple targetters, but lacks the simplicity of the MusashiTrick, and again, a good movement should be capable of avoiding the simple targetters aswell. For multi-guns I only see a purpose as starting-gun, until the heavy PM or GF gun kicks in. -- GrubbmGait

I second lRem's statement on why more great bots aren't using seriously MultiMode concepts - aside from obvious things like using different techniques in melee and one-on-one, it just hasn't proven to be more effective. It's really quite hard to make one good movement as it is, but making several useful different movements is harder than almost anything except choosing between them. I'd also add, however, that I believe (as I have said elsewhere on the wiki) that MiniBot development was part of the reason we started to realize that MultiMode wasn't the answer to all our problems.

Also, I think it may be more a myth that WaveSurfing is weak against PatternMatching. Sure, it may be particularly good against GuessFactorTargeting, and there could be better movements against PatternMatching, but flat movement doesn't have to be easy against PatternMatching (on the contrary, it makes it less likely to just get lucky). -- Kawigi

IMO, multimode is perfectly viable, but WaveSurfing is better. If you can't fit WaveSurfing (eg. in a Mini, Micro or Nano) the MultiMode is the only effective solution. The MusashiTrick effectively handles HOT, but StopAndGo is effective agains HOT, LT and CT so would be preferable. This switching to RandomMovement seems to be the current movement of choice. -- Skilgannon

  • StopAndGo is effective against HOT? *hurries and makes a few changes to Evader's and Lasers's code for the StopAndGo =)* But back to the topic, IMHO multimode would be better with like melee than 1v1. (especially if you save data in 1v1!). Unless in 1v1 you're facing a multimode...--Starrynte

I know this is an old conversation, but in time I hope to prove that a good multi-mode implementation can work well in 1v1. I still have a lot of work to do on my guess factor gun and wave surfing drive before XanderCat will be considered a top robot, but I think it has already proved a value to mult-mode in 1v1 for it's anti-mirror drive and anti-mirror gun. There aren't really that many mirroring robots in the competition, but my anti-mirror drive and gun provide a good score boost against mirrors, and my rather simple mirror detector rarely ever incorrectly identifies a mirror as not-mirroring or a non-mirror as mirroring, and I know it could be improved even further (it's just been working so well already, I have been focusing on other problems). -- Skotty 20:58, 7 September 2011 (UTC)


Thread titleRepliesLast modified
Multi-Mode Formula314:39, 9 September 2017
Multi-Mode Success322:04, 21 February 2013

Multi-Mode Formula

I was working for a micro bot and I found a new type of multi-mode movement system.(I think)
Simply it is:
  • Complexity starts from 0.
  • Every time the bot dies, it increases the complexity.
  • Every time the enemy fires call setAhead(getDir(complexity)).
    public double getDir(int complexity) {
        double extraMove; 
        double moveDir = extraMove = 1.0 / complexity;
        for(int i = 1; i < complexity; i++) {
            moveDir += Math.sin(getTime() / i / (10.0 / (complexity + 1)));
        return Math.signum(moveDir) * ((extraMove + 18) * (complexity + 1));
Just with this code these happen:
  • First round: Musashi trick.
  • Second round: Stop'n go.
  • Third round: Random(not actually random) stop'n go.
  • Fourth round: Musashi trick + stop'n go + not random.
  • Fifth round: Oscillator movement.

Any thoughts?

Dsekercioglu (talk)11:22, 8 September 2017

Sorry for double post. Also like this it is possible to make Musashi Trick + Stop And Go + Random Movement

    public double getDir(int complexity) {
        double move = 1.0 / complexity;
        return move * 36 + (Math.signum(--complexity) * (Math.random() * 256 - 128));
Dsekercioglu (talk)11:57, 8 September 2017

I would say simply stop'n go then random.

Xor (talk)01:41, 9 September 2017

It can easily be done by starting with a complexity of 1.

Dsekercioglu (talk)14:39, 9 September 2017

Multi-Mode Success

Now that I've successfully tempted Skilgannon to add bullet shielding to DrussGT, it could be argued that DrussGT is now multi-mode to an extent. And of course, XanderCat is most definitely multi-mode; I specifically designed my framework to support it, and XanderCat now has anywhere from 5 to 8 modes, depending on what behaviors you count. I think I have finally succeeded at demonstrating that multi-mode can be a successful strategy, and now consider the matter closed. :P

Skotty20:32, 21 February 2013

I've always thought that there was merit to the idea, but what still grates me is the hard switches between the two modes: I'd rather work the logic of what makes them work into a single, overarching movement technique. Hence my idea of using the anti-mirror targeting attribute: it isn't as good as a pure anti-mirror movement against mirror bots, but it adds a little bit of score against all bots that have some sort of distancing and orbiting movement. Unfortunately, sometimes those solutions are just so complicated that in order to spare our brains and CPUs we go with the easy, hard-coded version =)

Skilgannon20:48, 21 February 2013

Note that among MicroBots, multi-mode was already king (Stop And Go before falling back to Random Movement). And I also consider a flattener to be multi-mode, though flattener surfing and normal surfing are obviously a lot more similar than bullet shielding to wave surfing.

But you certainly deserve the credit for bringing the bullet shielding bug, and "real" multi-mode, to the top of the rumble! I'm not sure the advantages of this type of bullet shielding could be brought into any continuous mode.

It's going to be hard for me to resist cracking open Diamond to add it, but I'm pretty heads down on BerryBots right now. :-)

Voidious21:48, 21 February 2013

Splitting the gun into a crush-the-weak GuessFactor gun and a crush-the-king Anti-Surfer gun is Multi-Mode too.

Splitting the movement into a crush-the-weak Wave Surfing and a crush-the-king Flat Movement is also Multi-Mode.

In the past, Musashi Trick/Flat Movement combination was considered state-of-the-art Multi-Mode movement.

Competitive Multi-Mode exists since the early days of robocoding. Only the most successful combinations are changing over time.

MN22:04, 21 February 2013