What is it?
A utility, by
PEZ, to graph your (or others) bots
MovementProfiles. It's based on
Kawigi's
FloodGrapher, but simpler and comes with a special bot for the data collection -
RoboGrapherBot. A special feature of
RoboGrapherBot is that is fires two different types of
Waves; one type when it fires real bullets (real waves) and one type in between (virtual waves). Real waves make learning a bit slower but more accurate (at least against bots that dodge, or change direction or anything like that when fired upon.) In
RoboGrapher you can see how different profiles a bot has between these types of waves.
Like the Flood's and unlike StatistRobot, RoboGrapherBot saves data after each round so you can start graphing away immediately after starting a battle.
What's new?
- 2004-01-01 - Huge targeting bug found in RoboGrapherBot, related to bullet power. Don't use RoboGrapher together with RoboGrapherBot until this bug is fixed.
- 2003-11-05 - Bug fixed version. Bundled with RoboGrapherBot
- 2003-09-23 - Some bug fixes released
- File refresh button now works
- Percentage figures are percentages.
Great! Where can I get it?
From the
RobocodeRepository, at:
https://www.robocoderepository.com/BotDetail.jsp?id=1828
It's bundled together with RoboGrapherBot which is the bot that collects data for it to graph.
How do I start it?
RoboGrapher is belongs to the "pez" package. When you have downloaded it. Start a 1v1 battle where
RoboGrapherBot is one of the contestants. Then from a command prompt change directory to:
robocode/.robotcache/pez.RoboGrapherBot_1.0.jar_
. And then run:
java pez.RoboGrapher
to start it.
How do I use it?
Here's a screenshot when graphing the development version of
Tityus.
What you see here is:
- the graph
- Y axis shows visit count percerntage (probability)
- X axis shows guess factors, ranging from -1.0 to +1.0
- a button for refreshing the file list
- a file selector
- Each time you select (or re-select) a bot here RoboGrapher will read its data file. (This means you can update the graph from stats of a running battle. Quite useful.)
- four segment selectors:
- Acceleration, with the options Decelerating, Constant and Accelerating. This is lateral acceleration.
- Distance, ranging from "a" (very close) to "e" (very far away). The actual ranges depend on the battle field dimensions.
- Fire power, also ranging from "a" (weak) to "e" (heavy) fire power.
- Wave type, Real or Virtual
All selections are combined with logical AND conditions.
If you would look at this version of Tityus from the perspective of Virtual waves it would look like this:
Quite different even if it is about the same peak...
Is it bug-free?
Hardly. It dumps a stack trace if you open a damaged file (like when
RoboGrapherBot is writing to the file, which is quite frequent during minimized battle). Also, at least on my machine,
RoboGrapher doesn't always respond when you do selections. You might need to re-select or try fiddling with another widget...
Feel invited to help develop it further. Here's a brief list:
- Work out the UI bugs.
- Graphing several bots at once.
- DONE - Creating a RoboGrapherBot that will be responsible for gathering the data, so that it's not dependent on a particular version of GloomyDark (and so I can develop GD's segmentation in more secrecy =).
Where's the source code?
Bundled with the jar. Released under the
RWPCL.
Comments? Questions?
Good job Pez, what about graph axis labels though? I assume that Y is probability, X is ? Velocity at the point when the wave was fired? --wolfman
Yes, Y is probability (or "visit counts" percentage). X is guess factor, ranging from -1.0 to +1.0. I couldn't get the text labels to line up so I skipped them. =) -- PEZ
PEZ, can u explain what does it means (the values) the "a,b,c,d,e..." ranges for distance and fire power? -- Axe
I am not sure what they exactly come out to be but I know they are dependant on the field size :) -- jim
Let's say for example a 800X600... -- Axe
It's sliced over MAX_DISTANCE of 800. -- PEZ
What does lateral acceleration mean? The lateral accerleration when RoboGrapherBot shoots in comparison to the last velocity?
Great tool by the way!! --Krabb
Can't say for sure, but it's probably based on (current lateral velocity) - (last lateral velocity). -- Kawigi
And "current lateral velocity" is the velocity when the bullet is shot?! --Krabb
Not the velocity, but the LateralVelocity. -- Kawigi
Ok, thanks! --Krabb
Is that bug related to bulletpower already fixed, or is it better to start using FloodGrapher. --GrubbmGait
Regardless, it's better to use FloodGrapher ;-) -- Kawigi
The robocode repository is often down, is there a way to get this without trying to download it from there, an alternative download source? -- Chase-san