A better way than using system properties?
The highlighted comment was created in this revision.
The current mechanism I'm using to permit RoboTweaker to set tweak values on a robot is to have the robot load them from system properties. This works fine, but has a fundamental problem: it makes it so that I cannot easily speed things up by running multiple battles simultaneously. (I could theoretically wait for the first round to complete, then assume that all classes using these values have been loaded, then go ahead and fire up the next one.) Writing a properties file in the robot's data directory to be read by the robot runs up against the same issue. What would be good would be if I could find a way to set these values that would be scoped to the RobocodeEngine instance in question. Any ideas?
For parallelization, I suggest running multiple Robocode instances, each installed in a different location. That's what is done for the RoboRumble.
Note that if you are using bots from the rumble to train against, some of your opponent bots might use static variables, file saving etc. Which makes having separate instances important. Also, make sure you run enough battles for each tweak to get a statistically significant sample, otherwise you'll be chasing ghosts =)