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. :-)
nano and David Alves
Nemo is the first bot to fit GuessFactor targeting into a nanobot. Codesize is 249 bytes without colors!
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.
Nanoized orbital mirror movement
The same way that its opponent does!
It has no melee strategy.
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.
Between rounds, the GuessFactor stats. Between matches, nothing.
Sure! Follow this license
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.
Every competitive nano out there. Every competitive non-nano too. :-P
The movement is from FunkyChicken 1.0. As for the gun, Nemo is one of a kind!
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
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
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