Wacky Scores
With my latest versions of XanderCat 9.0 and 9.0.1, they seem to perform just fine with 1.7.3.0, but I am now getting really wacky scores in RoboResearch. There are no exceptions happening, but the scores are coming up a good 20% to 30% lower than the scores with 1.7.3.0 (e.g. score against Rapture.Rapture is coming up at about 65% in RoboResearch, but a consistent 90% in 1.7.3.0 test runs and in the RoboRumble). I checked to ensure my robot is not throwing any exceptions. Any thoughts on what might be causing this? It is preventing me from using RoboResearch for testing.
It might be due to me setting it to debug mode (it keeps robots from skipping turns, so if enemies were skipping, they are not in RR).
I don't think so. I might have to spend some time digging into the code more. A lot of the docs and pages discussing RoboResearch seem to be outdated. For example, I keep seeing references to having a copy of Robocode installed in the robocode_install directory, but from what I can see, there doesn't seem to be any robocode_install directory. I assumed it just used robocode.jar from the lib directory. Quite confusing. So I don't even know what version of Robocode RoboResearch is using.
AFAIK you're supposed to install a copy of Robocode into robocode_install. But the original RoboResearch also came with a lib/robocode.jar that it used, which I only just recently realized it uses instead of the one in robocode_install/libs. I'm not sure what the problem is, but I'd install Robocode 1.7.3.x to robocode_install, start it up and recalculate the CPU constant, and copy that robocode.jar into roboresearch/lib. See if you still see a score discrepancy.
RoboResearch docs could definitely use a lot of work, but hopefully with Chase taking charge to start updating it again recently, we'll resolve some of the usability issues and keep it better maintained.
I dug into the code a little to figure it out. I didn't realize that RoboResearch just runs Robocode normally using "-nodisplay". That made it easy to debug, because I could just comment out the line that added "-nodisplay" and watch the battle as it ran. The version of Robocode in the lib directory that it is using is 1.6.1.2. For whatever reason, it appears as though the onRoundEnded() event never gets called, which is messing up some of the round data I keep track of. Ultimately, this lead to one of my multi-mode scenarios getting incorrectly activated much more often than it should have been, resulting in low scores. Now I need to either develop a work-around or try to set up RoboResearch to use 1.7.3.0.
Ah, cool. I wondered if it might be some robot method added in 1.7.x, which I think onRoundEnded is. You should be able to copy robocode.jar from robocode/libs to roboresearch/lib to get whatever Robocode version you want.
I modified my RoboResearch to use robocode_install/libs/robocode.jar, so whichever Robocode version I install there is used. That and the other patches I'm using are available here, and described/linked a bit further up this talk page. Recompile with javac -cp src:hsqldb.jar -d bin src/roboResearch/CLI.java
(or GUI.java).
Oh yeah, there may be some other minor incompatibilities using 1.7.x. I fixed some issues with the command line version of RoboResearch in my patch, and Chase may have fixed some with the GUI in his version (if there were any).