/VersionHistory
Bot Name
WeekendObsession
Author
Simonton
Extends
AdvancedRobot
What's special about it?
Version S (the only one still active) it is currently the number one 1v1 nano bot.
Great, I want to try it. Where can I download it?
From the
RobocodeRepository,
[1].
How competitive is it?
Not too bad in the NanoRumble
?.
How does it move?
It runs circles around its opponent (like all good 1v1 bots). It changes orbit direction randomly, proportionally to its distance from the opponent (like many good
RandomMovement 1v1 bots). Version S adds
StopAndGo movement
a la Splinter, which is really the key to it's #1 rank (and the key to Splinter's #2 rank). That is, it runs stop-and-go movement until it see's that isn't working anymore, then it switches to random movement.
How does it fire?
PatternMatching. Version S uses the standard nano-size algorithm for matching on
LateralVelocity, with some additional
CodeSize tricks.
How does the melee strategy differ from one-on-one strategy?
There is no melee strategy - it's only designed for 1v1.
What does it save between rounds and matches?
Its pattern matching data between rounds. Nothing between matches.
Where did you get the name?
I was hoping to give up this game. Still hoping ... But last weekend I couldn't keep myself away. From Friday night until Saturday night, I took breaks only to sleep and eat. It's a total obsession.
Can I use your code?
Yup. It's
RWPCL
What's next for your robot?
Arg. Unfortunetly I would like to improve its rating. That means spending more time. Maybe God will help me stop. Or make me stop (which seems more like what would have to happen).
Nope, not presently anymore.
Kev may give me a run for my money again, but we'll cross that bridge when we get to it.
What is your TestBed looking like right now?
Currently it is the rumble. At this point I'm just making small tweaks.
What other robot(s) is it based on?
I learned a lot about nano-sizing a pattern matcher from the pattern matchers in the top 10 of the NanoRumble
?. Apparently they all learned a lot from
FunkyChicken.
Splinter gets all the credit the
StopAndGo movement. Basically, the S stands for Splinter (but I felt safe naming it that because I could say it meant "Stop-and-Go").
Comments, questions, feedback:
You should release a MegaBot called LifelongObsession to go with it. --David Alves
- I could release it if you promise to take over development :) -- Simonton
Hey, you released WeekendObsession S 1.0 on friday, that not a weekend! Please keep your naming consistent ;-) -- GrubbmGait
- :) Sorry. I couln't help myself. Can I plead the holiday time?? -- Simonton
I was looking at the code and I couldn't figure out why you cast the char to a short instead of int:
// aim.
do {
a += (short) enemyHistory.charAt(--matchPos) / dist;
} while (--i > 0);
--
Kinsen
Good question! Are you familiar with the 2's compliment format for binary numbers? In java, casting from a char to an int does not do any sign extention, so (int) (char) -1 != -1 (it equals some large number instead). A Java "char" is the same length as a Java "short", (short) (char) -1 == -1.