From old wiki
What can I say. This might be the most useful fat client tool for us bot makers sinse RoboLeague! Thanks for giving all this time away to us for free. -- PEZ
Very nice! I am using it right now to desgn my next MX movement. :-) I'll release a self-graphing tool to go with it in a few days time (it'll probably use the Flood 1.4 data format though... lazy. :p ) -- Jamougha
Will it use the same segmentation as FloodMini 1.4? -- Kawigi
Wow, this is the first tool I've been able to get to work to help test bots. This is awesome. Hmm, Immortal's movement isn't THAT bad. -- Alcatraz
Yes, for now at least. Although I may use a much less strict wall approach segment. If I change the segmentation then I'll write my own plugin. (It might be cool to have one segment represent waves, and another real bullet hits, so you can see if a bot is picking up on a segment or not...) -- Jamougha
Hmmm... I was thinking about building an option like that into the FloodGrapher robot, too. -- Kawigi
The Repository did something screwy with it, so I uploaded it again and updated the link at the top of the page. I also took the liberty of making a couple minor bugfixes. -- Kawigi
I'm trying to make a fileformat plugin for Recrimpo, and have reached the limit of my java knowledge. I have my stats in an int array, you want it in a double array, and apparently:
"An expression of type "int" cannot be cast into type "double""
Do I have to use nested for loops and convert each int separately, or is there a better way? Thanks. -- Tango
Second question: When adding the different segments to the scheme, do you just ignore the GF segment? If so, does it do the conversions from indexes to GFs automatically? -- Tango
Yes, I know, that's what I'm trying to do. I've got everything done, except for the converting to doubles bit. I could do it using for loops, but that would be very ugly, so I would like to avoid it if possible. -- Tango
What's ugly about using loops? I think it's the only way to do this, but you might find methods to use in the Arrays class. Look it up in the JavaAPI. -- PEZ
I've gone and done it using for loops for now, but have 2 problems. 1) It won't let me select the top option for any of the segments (after i've select something else) 2) It doesn't display the graph, which is something of a major flaw. I've just modified the segments that came with it, so I can't see anything that would cause problem 1, and I can't think of anything that would cause problem 2 either. -- Tango (PS You can download it here:)
Yeah, you need to basically copy your array into an array of doubles if you save an array of ints. Look at FloodMini14Format.java tp see a good general-purpose way to do it. And your assumption is correct that you don't need to put a segmentation in your scheme for the guess factors, because I want to have an array left to display. About it not displaying - it displays fine for me, but it won't actually show up until you generate an event (hit the refresh button or change one of the selection boxes or something). I suppose this is a sort of weakness that I should address. Another is that it throws a null pointer exception if no segments are selected. But on that note, it appears to be throwing that exception in your velocity segmentation if I try to select segments with velocity more than 3 or something. As far as not letting you select the top option, I only see that with max distance, which should never be 0 anyways (and it looks like you can't select it because when you do it gets that NullPointerException). So stuff for me to fix here, too... -- Kawigi
Strange... you're seeing different things to me. I've tried refreshing it, etc. and it still displays nothing, and I can't select any of the top options. I guess I'll do some more testing, and look more closely at the CLI. -- Tango
It's displaying fine now... strange... it is throwing a lot of exceptions, I need to look into that... thanks for your help. -- Tango
It seems the grapher isn't receiving any data. The data is definitely there, because it get's displayed sometimes, and the only stuff my code does is sort out the segmentation, so I can't see how anything I've done could make graph.getData() return null, yet your graphs work fine, which indicated your code works. It's all confusing me... I'll look again tomorrow when I'm less tired. -- Tango
But mine also get the NullPointerException in rare cases - but only if you pick a maximum distance or BFT segmentation that is less than or equal to the minimum. As far as what causes problems with your other segmentations, I'm just not sure what's going on :-\ -- Kawigi
Has anyone else had a go at this yet? Tomorrow I will make a plugin for Falcon (i'll have to add saving to it), that should be as simple as I can get. Start simple, and work up, is one of the best ways to find where it goes wrong. -- Tango
Any body intrested in BeanShell script implemented in FLood grapher. If more people intrested in that I can code it when I have time. -- SSO
What kinds of things do you think it would be useful for? -- Kawigi
Hrm, I haven't had a good look at this yet, do you think it's possible to write a weakest segment finder that runs all the possible segment combinations and shows you your top 5 or whatever weakest segments (or all segments with peaks more than some threshold above your all segments graph)? -- Kuuran
Should be easy. I'm not sure how FloodGrapher does it all, so I'm not sure, but nested for loops to check each segment, and use the peak hit rate that it already calculates, and find the max. I'll look into it this evening, if no-one's got their first. -- Tango
Yeah, I think that's something worthwhile in the next version - the problem is that it will normally come up with segments that have very little data in them or something. With the stats from FloodMini and FloodGrapher, I can figure out how many samples are in there, but with robots using rolling averages, this isn't as obvious. -- Kawigi
That's not too big of a problem, just something to be aware of when analyzing the data it gives you. Or you can always include a threshold for minimum number of samples when it's available (just have rolling average guns fill whatever method is called to determine number of samples with return -1; and add a case). For that matter, is there some reason the new grapher doesn't tell you how many samples the results you're looking at are from when the data is available? It's a bit disconcerting to not be sure whether the huge spike I see in many top movements with this new segment is just because it's a barren segment or because I can nail people hard with it.. -- Kuuran
For a segment I want to plug into FloodGrapher I need information about bullet hits on the opponent, is there any way to get at this? -- Kuuran
I'm not sure I understand, can't you use the onBulletHit() method? -- Tango
% time spent in this segment would be very helpful. No sense in trying to flatten a segment that only occurs on one or two ticks in a 100 round battle. :-) --David Alves
@Tango - yeah, but onBulletHit requires that you modify FloodGrapher.
@Kuuran - make up a solution and I can add it to the next version. -- Kawigi
Ok, so Im an idiot, how do I make this work? I assume I need to run a battle between my robot and some FloodGrapher test bot, but since I cant find this bot, I am not really sure how it works... -- Jokester
Ok, so using FloodGrapher might not be the easiest thing, but it beat the hacked-up version that people were using before that ;-)
FloodMini 1.4 is a fine test bot with a FloodGrapher plugin (but it's not necessarily accurate, since it fires waves every scan). The preferred way it to use kawigi.tools.FloodGrapher, which comes in the zip file with the grapher. Just unzip the zip file in your robots directory, and run it from there, and the robot should be there. -- Kawigi
THIS IS AMAZING! I searched for something like this before, since I figured someone had to have made it, but never found it! Nice. But I don't know how to use it. I unzipped it into my robots directory, changed the .bat file to point to the new location of the robocode jars, and double-clicked the bat file. Now it's just sitting there, looking like it should be running but not showing anything. -- Simonton
- Oh, wait, look at /TroubleShooting. Got a little further now ... --Simonton
- I graphed my MovementProfile a bit early on with StatistRobot. The weird part is that graphing a WaveSurfer gets kinda pointless pretty quick, as your profile changes dramatically with whatever gun you're facing. As ABC once said, you are basically controlling your profile completely. Still neat, fun to play with, and certainly very useful for certain things. -- Voidious
How do I read the verbose output? -- PEZ
On my computer, I would run "java -jar kawigi.sbf.FloodGrapher_1.3.jar -v kawigi\sbf\FloodMini.Data\" from the command line. You can, of course, use another directory if that's what you have been doing. You could also hack the program (as I know you have before) to just set verbose to true after it checks for a "-v". I don't do much complex parameter parsing, it's not very robust. At that point, it will print out every segment within the current sample that has at least 50 samples. It sorts them in order of hit % on the exact highest point on the graph (not to be confused with actual hit rates, because you can often hit with a bullet that was fired in the next segment over or something). This is what I do to 'debug' movement, try to make sure you spend no more than 1% of your time in segments with a 10% hitrate or higher, or push that down to about 8% if at all possible. -- Kawigi
I have added a segment to the grapher. Bullet power index, for measuring the profile for different levels of enemy bullet power. I also added this segment to Fhqwhgads 1.0 (with the performance patch inlcuded). I suggest you release a StatsCollector bot based on this version of Fhqwhgads and, if you agree that bullet power is an interesting segment to track, this version of the grapher as well. I'll send you the patched source files of both and you can decide. I can't maintain it on my own anyway, since I know zilch about Java GUI stuff... This is what it looks like at the moment:
As you can see the label of the power segment is somewhat hidden and such. If I could wish for two features they would be:
- Overlay of bot profiles
- Maybe as more than one file drop menu and the curves drawn in different colors.
- This would help greatly in answering the question if my new movement is better or worse than my last.
- Automatic refresh of the graph as more samples are collected
- Besides from being cool this would speed up the test cycles as you could wait for the curve to somewhat stabilize and have a clue when you have enough rounds to make a descision.
- Actually this is not needed. I just noticed that it reads the file every time I select it in the drop menu (even if I don't deselect the file first) which means I can just click twice on the drop menu control and get a refresh. Cool!!!! So just one feature wish for now then. =)
I also vote for having multiple bots displayed on the same page and also if possible a hit% scale up the left hand side with an option to set the value of the top of the graph. -- Paul Evans (p.s. nice tool).
While tweaking I have found that it works good to rename the old bot versions stat file. Combined with the overlay feature this would be even better. Actually the rename itself would be cool if it could be done from within the tool. Then you could add comments to the different versions. Possibly paste the relevant code there and such. I have figured about teh overlay feature some more now. And it would actually be cool if you could have several complete sets of lines. With complete I mean all the controls, not only file name. That way you could compare different segments of the same bot with the same overlay thingy. -- PEZ
Lol, lots of stuff on the wish list for a ghetto little tool that Jim, nano and I use to tune our movement. I definitely think this is not nearly as classy as SmogPainter (as far as GUI design, not because I don't know how, but because I just slammed most of this together in one evening when I was making FloodHT 0.7). I suppose I could look at something more complex, though, especially since I can just stick all the files together in a jar.
On the side, I'm glad it really DOES work with Fhqwhgads 1.0. I thought it would, but I didn't have it on my computer at the time, so I was just guessing.
For more specific stuff, would it make sense to have a dialog pop up for controls of each robot? Just have a button for each color of line or something on the right side and nothing on the bottom? I'm trying to figure out an appropriate way to allow an indefinite number of colored lines on the screen at a time. It may also be appropriate to make one for Fhqwhgads 1.1, especially since it collects the constantly-firing and wave-on-fire stats without having to modify the code (and also includes seperated melee stats for anyone who cares). It also does the segmenting on bullet travel time instead of distance, but that's not quite the same thing as what you did. -- Kawigi
I'm having a bad time here trying to find FloodGrapher in the repository, it seems that the bots searching engine is not working properly. can someone post here a url to download it? Thnx. -- Axe
I sent it to you in email. -- jim
I'm also having trouble finding it - a link here would help a lot of people... :-) Jamougha
He would never mind that. But it's already uploaded to the repository, so it could be a bit redundant to upload it again there. Upload it here intstead and post the link. -- PEZ
Found it in the end by typing in all the possible index numbers. :\ For future reference it's at http://www.robocoderepository.com/BotDetail.jsp?id=1573 - Jamougha
Now thats what I call persistance :) jim
random page surfing: that sounds like somthing i would do Jam. --andrew
|Thread title||Replies||Last modified|
|FloodGrapher 2 Jar?||3||19:07, 25 July 2015|
Robocode Repository appears to be down, does anyone have the jar file for FG2 I can grab from somewhere else please? Is flattening your movement profile still as important as it used to be? I wanted to analyse Agent Smith's movement to see how it holds up and hopefully flatten a little. Thanks!
These days with 'adaptive profile' movements, flattening is less of an issue. FloodGrapher was more used for random movements. I could see it still being useful for tuning top Micro bots.
If you want to improve a wavesurfing movement, something that adapts its movement profile based on bullet hits (and possibly location visits), I would tune against RaikoMicro.
Hrm are there any modern movement challenge bots? The ones in the latest movement challenge are from 2007! :o It would be nice to tune my movement in a controlled environment against modern bots. Or is the MC2K7 still a useful test?
I'd just use real battles and improve my score vs a test bed of like 100 bots. I use BedMaker, which I think needs updating to communicate with LiteRumble. I also posted some for Tkiesel a while ago over on User talk:Tkiesel, if those are of use to you.
But MC2k7 should still be useful if you prefer that kind of thing.