What do you think about a GigaMeleeRumble?
I can contribute battles until the rumble stabilizes. 4 to 8 clients.
Also, I have a custom rumble client here which is smarter than the official client.
- Detection of server queue overloads and upload throttling.
- Separate process/threads for uploads, shared between all local clients. (avoids idle CPU time in uploads. HUGE speed increase in melee)
- Shared battle generator/priority battles management. (minimizes repeated battles between clients)
- Communication between clients using RMI (TCP/IP), integrating clients spread over a low latency local network.
- Generates battles in melee using both bots from priority battles.
- Parallel download of bots JARs.
- Shared local repository of bots JARs, with automatic copying between clients.
Tested for over an year. Seems very stable.
I can upload the source somewhere if you want.
I would love to play with this client. It is a pity to see CPU cycles wasted due to queue overloads.
Git repository at: https://github.com/Wat00/roborumbleathome.git
MN, would you mind to add a short readme?
How to compile this? I see it requires maven, but simple run 'mvn' does not do a thing.
Does a worker requires the coordinator running? How do they know which IP/machine to contact? Do we need standard rumble files to be present/accessible anywhere?
I'll make a README sometime.
You compile with Maven through the roborumbleathome-pom module. You also need Robocode components pre-installed in your local repository. They are nowhere in any internet Maven repository. This is for compiling.
For running, you run a single coordinator instance, and as many worker instances as you have cores. You pass coordinator IP address through command line argument. Port is hard-coded at 1099 (RMI default). See the .bat files for an example.
Both coordinator and workers use the same configuration files as the official client, although they ignore some of the parameters.
It could be more configurable. But as it is, it is running fine for me so I stopped improving it for quite some time. Now that it is open source, feel free to contribute.
Early this morning I managed to get it to build.
As someone not used to Maven... I have to say... the experience of getting the Robocode components into a repository based on a download of the official robocode build, is an experience that really makes me dislike Maven. Things that ought to be very simple seem like quite a hassle with it.
OK guys, so here's the plan: today at 17h00GMT (you can work out what that is in your time-zone) I'm going to change the server to accept 18.104.22.168 clients exclusively. I'll leave it like that for a day or two to make sure there are no issues with the rumble client, then I'm going to wipe all of the rumbles. I'm going to speed up the queue processing for a bit as well to see if I can get the stabilisation to happen a bit faster and not bottleneck at the server.
If anybody has any objections, now is the time, because once I change accepted versions the current stats will be 'tainted' by newer versions with different rules, and will need to be deleted anyway.
Skilgannon, may I ask to keep old statistic available somewhere? I would think, the ideal would be to have littlerumble instant which does not accept battles but has web interface on.
Second suggestion: would it be possible to program a range of accepted robocode versions? 1.9.2 is the newest today, but months from now it will be obsolete. May be it better to have a black list mask.
Even now, as far as I know, 1.9.2 is not that different from 1.9.1. So there is no point to lock the version to only the 1.9.2 version.
Good idea with the littlerumble. I've disabled the app for now, I can set that up tomorrow and copy data across, then re-enable the app.
I'd rather have only one version for submitting battles, simply because we don't know all the bugs yet. It is better to make the chosen version easily available than to allow possibly different versions to submit battles.
Ok. I am up and running with 1.9.2 hope you will see my CPUs contributions.
I see a lot of errors like this:
java.io.FileNotFoundException: http://literumble.appspot.com/UploadedResults Unable to upload results meleerumble,35,1000x1000,beaming,1399046843566,SERVER ntc.Opposite 1.5,9870,3207,0 spinnercat.Omen 1.0,6542,1976,0
Am I the only one?
What is the official java version to be used with robocode?
I personally use java 6 but I think some bots are compiled with java 7 and do not run on my machine. Shall I switch to java 7?
If you're using Sun/Oracle Java, I would strongly argue you should not be using Java 6 anymore, and should not have been for the last year, because you're not getting security updates.
If you're using OpenJDK instead of the Sun/Oracle version, you can still get security updates for Java 6, so that isn't an issue.
As OpenJDK 6 doesn't have official Windows builds, and Sun/Oracle Java 6 does not get security updates, perhaps it is best to as a rule not be using any version of Java 6 (even if it has recent security patches) for Roborumble, as new Windows users submitting bots cannot easily test with Java 6.
Literumble is up and running, accepting 22.214.171.124 contributions. There is a static copy of the old data at staticrumble.appspot.com. I'll keep an eye on it from my side, and please let me know if you see any issues with your clients. In a few days, when we're sure everything is working, I'll delete the data and we can start from fresh.
All my clients show in rumble and meleerumble
OK. Queue full,Wisdom vs GridFu discarded.
naturally, with different bots name.
There is something fishy, since than I see the same bot pair added to queue over and over with messages like this
OK. Wisdom vs GridFu added to queue in 41ms
Still something is fishy, on one of my clients I see multiple (like 100) attempt to do something with stat uploading. Currently the following happening, first I bunch of "queue is full" than
OK. Queue full,Tidus vs Zealot discarded.
for this pair of bots.
Above error are for the rumble client, I also run the meleerumble on the same machine and that one complains about Wisdom vs GridFu as in above message, with similar numerous attempts.
What is strange is that the other rumble client seems to behave proper on the other machine. Both machines have identical installations of robocode and java.
It seems to be stuck at 'queue full' most of the time.
Regarding the same bot pair added multiple times, perhaps you're referring to how it has to upload once for each rumble that's fitting for the pair of bots? (i.e. the different size categories)
The reason the queue is full so much is that uploads are happening at a rate of ~35/s, but I can only process ~5/s. I'll work more on optimising load and store times, but there is only so much I can do with that...
Uh... somebody's client is misconfigured, and uploading a bunch of stuff to the Minirumble which doesn't belong.
For example, "simonton.beta.LifelongObsession 0.5.1" is a Megabot.
Can folks who are currently contributing check that their client isn't doing this please?
Beaming, looking at logs it seems to be coming from one of your clients. I see in the Robocode release notes that 126.96.36.199 fixed a bug with the codesize generation. Which Robocode version are you running?