From Robowiki
Revision as of 19:36, 22 May 2009 by Skilgannon (talk | contribs) (granularity)
Jump to navigation Jump to search

Multiple Choice, You Say ...

Great! Thanks for migrating this so it caught my attention! Now I know what I need to do in the micro category :). --Simonton 14:35, 21 September 2008 (UTC)

God help me, but I actually completely understand that space compressed code. I believe I even found a few ways to improve it here and there. It might be time for me to Microbot. --Miked0801 16:01, 21 May 2009 (UTC)

God help me, if you can put it in a Nano. ;) Anyway, Toorkild is an awesome bot and my everlasting measure of my bots. :) --HUNRobar 18:20, 21 May 2009 (UTC)

I remember reading through Moebius once upon a time and not knowing WHAT was going on... I'm fairly sure my bots are easier to read than yours =). And I certainly didn't get the space compression right the first time, it took a bit of tinkering to get all the casts and brackets all in the right place =). If you can find a way to improve anything without going over the codesize limit I'd be glad for a few pointers ;-) and I'll give you credit. However I'd appreciate it if you didn't lift my gun (as seems to have been happening in the nanos, looking at 6 of the top 8 bots all using the same gun). Feel free to read the code, and understand it, and if you write a gun based on what you've learned that's fine. But I put a lot of work, testing, trial and error, and research of the Java API into writing it, so I feel a bit protective :-p I think Microbots have enough room in them for multiple implementations of the same idea to fit, and I've tinkered in nanos enough to know that the same doesn't hold in there. I actually build a pattern-matcher nano, only to discover later that I'd re-invented Simonton's gun, but using StringBuilders instead of Strings. As it happens, Simonton's implementation was 2 bytes smaller. I'd like to think that I got my gun algorithm in Toorkild about as good as it can be, but there's bound to be better ways out there. I'd like nothing better than for someone to come up with a brand new gun and movement combo that beats mine =) it'll give me something to work on (and distract me from studying for the upcoming mid-year exams ;-) ) --Skilgannon 19:11, 21 May 2009 (UTC)

Robar, thank you very much for the compliment :-). If Miked0801 manages to fit it the gun in a nano I'll be seriously impressed, it was hard enough fitting it in a Micro =). However, while this discussion is mostly about the gun, I think the high score has just as much to do with the movement. After all, it's the same movement Decado, then Waylander, then Connavar, and now Toorkild uses. It got Decado to 3rd, Waylander to 1st, Connavar to 2nd (behind Waylander) and now has Toorkild reigning by over 2%. The way to do well in Robocode is finding a good idea and then squeezing every last drop of life out of it =) --Skilgannon 20:01, 21 May 2009 (UTC)

What a great quote. =) I want to see that in big bold text somewhere on this wiki! --Voidious 20:09, 21 May 2009 (UTC)
Haha thanks. It doesn't feel right sticking my own quote somewhere "in big bold text", but if somebody else finds a good place... I'm not gonna stop you =) --Skilgannon 20:41, 21 May 2009 (UTC)
There's no way that your gun will even come close to fitting in nanoland. Arrays and statics are too expensive. Hell, there's no room to track anything but lateral velocity (no radial velocity offsetting of range nor patterning) which puts plenty of error into the thing as is. And then sort by best match depth value across multiple buckets? Lol. The nano gun I'm using already takes the lion's share of available space and that's with massive range assumptions and no rounding. The only advantage my gun might have is that I can preload values into the string for free allowing me to cheat 30 rounds of aim data in the bot if I really wanted to - but I feel that that is indeed cheating. I could probably fit radial velocity checks into the PM, but then my movement code would basically be setAhead(1.0/0) setTurnRight(1.0/0); die();
But seriously, I read your comments and I'm not about to put out a clone with a few lines changed and massive credit given to you. In nanos, that's how it's been done for a while, but in micros, you're right - there's still a lot of room for interpretation and implementation (and innovation.) I'm not personally all that convinced that your gun is doing things it needs to do, but that's a gut instinct as I haven't had a chance to really run it through its paces yet. When I get a few hours a breathing space at work (shhh), I'll give my own version a go and see if I'm right. As a starting point, you are only using roughly 9.1 bits of each char's 16 bits at the moment. A little fixed point math could make your gun much more accurate, but would make matching more difficult - hence my need to experiment a bit. A few other ideas as I see them. --Miked0801 21:04, 21 May 2009 (UTC)
Yeah, changing the granularity of the symbols is always a tough call, especially when working with lateral/advancing velocity when neither of them follow a fixed increment. I ended up just leaving them to max out at their usual +-8, but I always wonder if it wouldn't be better to make it, say, 16 or so. The rebuild would also be slightly more accurate. Anyways, give it a look over, and don't get caught =) --Skilgannon 18:36, 22 May 2009 (UTC)