what to do with about printing to much?
I am trying to print quite a lot while I am debugging my bot. But I see
SYSTEM: This robot is printing too much between actions. Output stopped until next action.
I would like to see the whole output. Is there a way to force robocode to print everything, something analogous to debug mode where all graphics events are plotted.
One option would be to write to a file instead of printing debug output, particularly if you adjust the per-bot disk quota in the config file.
Kind of a weird link, but PEZ recently posted all his bots to a GitHub repo so that's fresh in my mind. See the robot.getDataFile() stuff: [1]
Thanks, I will look at it.
Is there a way to see if bot run with GUI or through a rumble client? So one can disable all of the debugs during rumbling matches to save on CPU and quotas.
One more questions, why rumble client needs a display under x11 environment? It does not use gui so it should run just fine.
I don't think Robocode exposes anything about the environment (app vs control API, graphics or not). You can tell if graphical debugging is enabled, though, because onPaint() will be called. You could use that as your debug switch. I mainly use graphical debugging and log severe stuff to file.
As for X11, I don't know, I would guess it's due to using some java.awt code internally or something. I have run RoboRumble over a terminal quite a bit, but maybe my terminal has the X stuff setup. (Mac OS X Terminal connecting to Ubuntu.)
Unfortunately, RoboRunner seems to suffer from the same issue.
Set DISPLAY variable to something crazy and run RoboRunner you will see it crush as well.
Try adding the "-Djava.awt.headless=true" parameter to how you invoke Java. I believe that does the trick. I seem to recall once trying this in the past.
This helps with rumble clients, so it probably good idea to ping developers about this switch to be on by default.
However, it does not help with RoboRunner.
You can update the JVM arguments passed to the Robocode process by modifying "jvmArgs" in roborunner.properties. Each thread starts in its own process with its own JVM because the Robocode engine isn't thread-safe.
Edit: And I'll put it on my RoboRunner to-do list. :-) I didn't have any other plans for a next version but it could probably use a few touchups...
Not sure if it's useful, but a secondary suggestion is to try debugging graphics. Some info that takes a lot of text is very simple and clear in graphical form.