|Thread title||Replies||Last modified|
|Code mods||20||20:18, 20 March 2013|
OK, I've looked over the code. Even on a regular compiler you should be able to get this under 250, just use the gun with the hard-coded distances, then make chancesOfReversing
final, since you aren't changing the contents anywhere.
However, with my tuned compiler/shrinker setup, I have this bot down to 237 bytes.
I'm using Jikes as a compiler, and then I post-process the .jar with ProGuard to shrink another 1 to 4 bytes off.
I modded the first gun to also take distance into account on everything except the match position and added
setAdjustGunForRobotTurn(true);, after compile and shrink it is a healthy 249.
Here it is: 
Using a hard-coded distance in the pattern reconstruction was the main accuracy issue. Now that that's fixed, I think the 5 bytes required for the
setAdjust would be better spent on Miked0801's char based energy monitoring.
I've decided to make this bot separate from Epeeist; and release it under the package sheldor.jk.nano. Any ideas for the new name?
char based energy monitoring? What advantages does it offer?
For names, how about Cutlass or Yatagan?
Ah, I see, using the unsigned property to wrap negative numbers so you don't need an extra comparison! Smart! Ok, that is in, total codesize 247 =) I just need your input on a name, and we're ready to go! Although, I think the whether-to-reverse decision could be improved by using a bigger divisor and different values in chanceOfReversing.
How's "Sting" for a name? It's small, blue, and extremely painful. :) If that's already taken, the Kukri is another great small sword/large knife. But, if you don't like either of them, go ahead with "Yatagan;" I like the sound of it.
How's this for a description?
<botname> v1.0.0 by Sheldor and Skilgannon. 03/20/2013
<Short description of namesake>
Codesize: 247 Bytes without any colors.
You're probably right that using different reverse probabilities would help against certain bots, but that sounds like a lot of hand-tuning, so let's save that for the next version.
Once you've packaged it, go ahead and add it to the literumble, and then post the source code on the wiki, under <botname>/Source.
Think I'll go with Yatagan, I'll package when I get home. Although I found a bug in the one optimization I did, so I'm going to have to find something else to shrink, it is at 251.
I might've found something to shrink. Here it is:
Change the chancesOfReversing to 30, 15, and 0; and then, change this line from:
direction *= (chancesOfReversing.charAt(deathCount) - (2 * Math.random()));
direction *= (chancesOfReversing.charAt(deathCount) / integer - Math.random());
I didn't compile, so I don't know if it will work.
That will be integer division, so won't give fractional results. I'll find something though.
I made a little breakthrough, and now have 4 more bytes to play with. So, is it worth changing the bullet power to 3 if I can add back setAdjustGunForRobotTurn() ? Or is there something else I should go for? I need bullet velocities to be in integers, so bullet powers of 2, 2.333333, 2.666666 or 3 are the options. I don't have much experience for making these kind of judgement calls in nanoland =)
Uh oh, I'm getting a StringIndexOutOfBounds exception. Did you do something to the PM string?
So is user1.user2.* the "new hotness" naming style for collaborative bots instead of wiki.* ? Or is it a subtle distinction between specific team-ups and totally wide-open bots? I kind of like the wiki package, though I also kind of thing it should be 'robowiki'. (I put RoboRunner in 'robowiki.runner' package.)
I think these kind of team-ups have been around for a while, eg there was usa.nano.Nemo which was in package usa because both creators were from the USA. I think wiki/robowiki package is great for stuff which is specifically released as public domain, like BasicSurfer, as well as test bots like DrussiousGT, and code/utils which is meant for people to use and hoist, but I see no problem with collaborative bots.
Can't remember if we were the first, but I know Chase and I used user1.user2.* for Scarlet. The thinking was a subtle distinction between specific team-ups and totally wide-open bots, but I'm kind of on the fence about "user1.user2.*" vs the wiki package. It really was a test bot like DrussiousGT, though the thinking was to leave it up there till either Chase or I surpassed Scarlet individually (though Scarlet has been removed despite that point not yet being reached due to some performance issues it had).
On the subject of the wiki package, now that you mention it, I'd say I would prefer "robowiki." over "wiki." for sure.
I wasn't passing judgement, just curious. :-) I can certainly see why user1.user2 makes sense as different than wiki package.