What do you think about a GigaMeleeRumble?

Jump to navigation Jump to search

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.

Extra features:

- 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.

MN (talk)01:55, 1 May 2014

I would love to play with this client. It is a pity to see CPU cycles wasted due to queue overloads.

Beaming (talk)03:22, 1 May 2014
MN (talk)18:58, 1 May 2014

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?

Beaming (talk)00:59, 2 May 2014

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.

MN (talk)18:25, 3 May 2014

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.

Rednaxela (talk)18:46, 3 May 2014

Where are these robocode components suppose to be? I do not see where is their expected location.

And yes, Maven pulled in 160MB of dependencies. This seems to be quite extreme for a make replacement.

Beaming (talk)19:00, 3 May 2014
 
 
 
 
 

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 1.9.2.0 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 (talk)06:23, 2 May 2014

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.

Beaming (talk)13:42, 2 May 2014

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.

Skilgannon (talk)17:09, 2 May 2014

Ok. I am up and running with 1.9.2 hope you will see my CPUs contributions.

Beaming (talk)17:16, 2 May 2014

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?

Beaming (talk)18:59, 2 May 2014

The app is disabled until I get a chance to copy the data over to another app which won't allow uploads, which will be tomorrow evening. So you can pause clients until then.

Skilgannon (talk)19:07, 2 May 2014
 
 

Another question.

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?

Beaming (talk)17:18, 2 May 2014

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.

Rednaxela (talk)17:36, 2 May 2014

OK. Get it. I was using openJDK all this time. I will switch to java7 in my clients. There are some nice additions for Point2D class which I was tempting to use instead of my own implementations.

Beaming (talk)18:56, 2 May 2014
 
 

Literumble is up and running, accepting 1.9.2.0 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.

Skilgannon (talk)09:16, 4 May 2014

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

Beaming (talk)14:50, 4 May 2014

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.

Beaming (talk)04:57, 6 May 2014

I think I found the problem. Have to delete content of files and temp directories. Files dir contained the results1v1.txt file with 12MB size which sounds excessive.

Beaming (talk)05:19, 6 May 2014
 
 

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)

Rednaxela (talk)16:11, 4 May 2014

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...

Skilgannon (talk)17:37, 4 May 2014

We could upgrade the rumble protocol to implement bulk uploads, allowing bulk commits in the server.

MN (talk)00:49, 6 May 2014
 
 

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?

Rednaxela (talk)00:46, 7 May 2014

Where to look for it?

Beaming (talk)01:39, 7 May 2014

Beaming, looking at logs it seems to be coming from one of your clients. I see in the Robocode release notes that 1.9.1.0 fixed a bug with the codesize generation. Which Robocode version are you running?

Skilgannon (talk)07:57, 7 May 2014

Does it come from IP starting from 70 or 128?

The one at 70 somehow does not generate codesize1v1.txt file, though they all run robocode-1.9.2.0

Any advise would be welcome.

Beaming (talk)12:57, 7 May 2014