Robo Home | Changes | Preferences | AllPages


Nemo is here! Released under package usa since we're both from the USA and it just might end up competing in the robocode olympics. :-)


Version History


nano and David Alves

What's special about it?

Nemo is the first bot to fit GuessFactor targeting into a nanobot. Codesize is 249 bytes without colors!

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


How competitive is it?

Not very. You have to sacrifice a lot to get a GF gun inside a nanobot. Nemo is a proof of concept bot, not a serious contender.

How does it move?

Nanoized orbital mirror movement

How does it fire?

GuessFactorTargeting! Woohoo!

How does it dodge bullets?

The same way that its opponent does!

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

It has no melee strategy.

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

It doesn't know about multiple enemies. You're going to have one very confused fish on your hands if you stick it in a melee battle.

What does it save between rounds and matches?

Between rounds, the GuessFactor stats. Between matches, nothing.

Where did you get the name?

Finding Nemo.

Can I use your code?

Sure! Follow this license

What's next for your robot?

Nemo needs to learn right from left.

nano says: Nemo now takes into account the enemy direction! But now Nemo can't fire at negative guess factors. You win some, you lose some.

Does it have any WhiteWhales?

Every competitive nano out there. Every competitive non-nano too. :-P

What other robot(s) is it based on?

The movement is from FunkyChicken 1.0. As for the gun, Nemo is one of a kind!

Comments, questions, feedback:

Hey David, when you get a chance could you upload this code to the Repository? Thanks. Oh, and later maybe we can make a joint account for future updates. ;) -- nano

Finally something to be proud of!

 1st: usa.nano.Nemo 1.2                 8425	2400	480	4931	613	0	0	49	51	0
 2nd: kawigi.nano.FunkyChicken 1.1      7926	2550	510	4285	580	0	0	56	48	0

-- nano

The winds of change... Nemo 2.0 is coming, and it may change nanos forever. Watch this space. -- nano

I love pre-bot hype! What will 2.0 have? New gun, new movement? -- Alcatraz

Hehehe, don't we all! Notice I said it "may" change nanos forever. That's only if I can succeed in making it competitive. :P I'm calling in David to look at my current development version. Nemo 2.0 contains a new and much smaller gun, and thus, new movement. I just have to figure out what movement to use, and whether or not to segment on distance (i.e. whether distance segmentation is more byte-effective than better movement). -- nano

So, Nemo 2.0 wasn't as much of a breakthrough as I thought it'd be. Kawigi even thought of my new idea on his own and released ThnikkaBot based on it before I finished this release. Oh well! The major difference between our two bots is that ThnikkaBot fires waves every tick and has no segments, whereas Nemo fires waves every enemyDistance / BULLET_SPEED ticks (and only tracks one wave at a time), and has two segments. Nemo should learn much MUCH more slowly. I have a feeling ThnikkaBot will win out here thanks to better design. However, the dream is that our combined efforts will produce a better nano gun than the proliferate nano pattern matcher! -- nano

To my experience using only two segments should allow pretty good learning speed even if you fire waves only to follow real bullets. If you can fit it I think you should test trade segmenting on distance for segmenting on "speed from last scan" (Aristocles-style). It could prove to pay more. -- PEZ

This is even worse than only firing waves with real bullets though. I can only track a single wave at a time, and thus even if I have 3 or 4 bullets in the air, I have only one wave. Depending on the distance, it can be a few times slower than wave-per-bullet GF guns. I'll look into Aristocles and see what I can learn. :) My first instinct though is that distance is the most important segment. I've graphed too many bots to think otherwise. -- nano

By the way, after looking at Aristocles, is there any reason you use velocity instead of LateralVelocity? It seems you may have problems with bots that don't do orbital movement, like SpinBot, or Walls (since LateralVelocity helps against Walls). I'm sure you have your reasons though. -- nano

Well, the reason is I figured absolute velocity be smaller. I'm not sure that is true though. The other reason is that lateral velocity changes with distance and I'm unsure how to compensate for this and still get distinct stat indexes. -- PEZ

Changes with distance? I'm not sure what you mean. LateralVelocity is just velocity, scaled down based on the approach angle. It still ranges from -8 to 8. Also, I am pretty positive from looking at your code that you can segment on lateral velocity without any overhead. -- nano

Oh, I might have confused things... I'll try it. -- PEZ

*Angular* velocity changes with distance, perhaps that's what you meant? Anyway... watch out for doing setAhead(direction * X) like that... If X is too high then the bot will slowly back away from the enemy and eventually back itself into a corner. I was experimenting with that earlier and couldn't understand why I suddenly started losing until I actually watched 20 rounds and saw what was going on. :-P Looks like you already thought of that though, 4 probably a good multiplier. Great work on 2.0! :-D --David Alves

4 came from my experimentation actually, basically Nemo and ThnikkaBot have the exact same movement now. -- Kawigi

Well, I once asked what the max lateral velocity was and got the answer it varies with distance. It was on the LateralVelocity page. Please sort the issue out there. I'm confused. -- PEZ

It's interesting how much Nemo 2.0 resembles my dev Muffin (which I haven't touched in a week or so due to real life) in gun (segmentation being the exception, though even with that and it's movement it probably has room for another gun :p). I guess there must be something here. Of course Muffin is much buggier than Nemo by the looks of it, so I don't know if it'll ever get released at this pace of development. :p Nice bot. :) -- Kuuran

Thank you! Nice to hear a compliment. He does only take 10th in nanos though, you know that, right? :) It's hard to find any way to improve it when there's absolutely no space left, but it's amazing that if I sit down in front of the code for a few hours, I always find something. My next stab is going to be at less segmentation and faster learning, since there really isn't any way I can improve it with more segmentation. Here's hoping. -- nano

Have you considered VertiLeach style mirroring? That way you can benefit from ReducedDimensionalSegmentation. Then again, it might be difficult to fit in a nano! The movement that is. Once you have it the segmentation costs about nothing and you'll get near-wall segmentation for free. -- PEZ

Trying to control the distance may cost less than distance segmentation...I'll look into it. -- nano

Exactly. What can be a problem is evasion. Lots of those rammers in nano division... -- PEZ

Also, if you choose to fight close, like VertiLeach likes, you can maybe a choose a distance of 300 away from your opponent and then get stats on every bullet. (Since it takes 16 ticks before reload after a power 3 bullet and it travels 315 distance units in that time.) -- PEZ

I would have to disagree there. :) A power 3 bullet travels 176 distance in 16 ticks (16 * 11). This is a very important property of power 3 bullets, and so I have memorized this value. :) I may be able to gather data for every other bullet though. -- nano

Yeah, I don't know what I was on getting it to 315. Maybe you can fire power 0.1 bullets. =) -- PEZ

Sorry PEZ, even a power .1 bullet won't go that far. (19.7 units / tick) * (11 ticks / firing cycle) means each bullet has traveled 216.7 units by the time you're ready to fire the next one. The best you can do would be to fire at power .5 for 222.5 distance --David Alves

It's probably better to stay at 176 distance and fire power 3. -- PEZ

Okay, that was an interesting test, but it seems to be better to just segment on distance. Segmenting on distance only takes 15 bytes, and controlling distance takes around the same amount. In addition, it seems that advancing makes me easier to hit in practice as well as theory. Finally, Nemo seems to do better at long distances than at short, among nanos, as his gun is superior at those distances. So I guess I'll try something else now. :/ -- nano

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 11, 2006 21:47 EST by Corbos (diff)