- Created Tuesday, March 4th 2014 @ 20:43:24
Hello, nice challenge, I intend to partake. But before I start working out strategies I have a few questions regarding the technical rules of the challenge. How much memory are we allowed to use? And how many threads? Does our program keep running while it's not handling its turn? How much time does our bot have to start or is that time subtracted from the first move? Are we allowed to put made up results in the mongo db? Are we allowed to make use of GPUs if there are any in the competition server?
DeveloperCreated Friday, March 7th 2014 @ 09:29:31
Hi Gurgeh, thanks for your questions
Currently the memory limit is set to 750mb and the current amount of threads is set to 99. However, we are planning on changing this in one or two weeks. The max amount of threads will then be one most likely and the memory limit will be lowered.
Your program does keep running while it's not handling its turn. It should just be waiting for the engine to ask its next move. Your bot also has 2 seconds to respond to the engines input.
I don't quite understand what you mean with your question about mongo db. Could you clarify this? For your last question, we do not have any GPUs on our server.
We will be changing the site quite a bit in the coming weeks and we will add more information about this stuff as well. Hopefully this answers your questions a bit.
Have fun coding!
- Created Wednesday, March 26th 2014 @ 07:49:31
Could you add these limits (or whatever limits they are) to the rules page so that it is official?
The one I'm most interested in is the thread limit. Is the thread limit 1? If so, could I request that it be raised to 2? 99 threads is extreme, but I think 1 thread for logic and 1 thread for input/output would be best (since Scanner.hasNext blocks until input is received).
As more of a curiosity, how does your server handle programs that use more than 1 thread illegally? When I look at my Java programs in task manager, I see a large number like 18 which I'm sure is the JVM and it's handles. Is it difficult to find threads that were spawned by user code rather than Java (not that I would code multiple threads if it were disallowed)?
- Updated Wednesday, March 26th 2014 @ 14:01:26
The problem with that is that if someone wants to do performance intensive things and have a bot that had trouble staying within the time limit, two threads does mean he basically has to make his algorithm serializable because it will give him twice the processor time. On top of that, it will be using far more resources on the game server (unlike your program which will practically use no more than a single core.
It might be a better solution to restrict the program to the use of one core, which means you can use any number of threads but not to boost performance. This might be harder to implement for the AI Games team, though, especially if you consider that giving access to a physical core may lead to scheduling unfairness, so you will want to restrict each bot to the resources one core can provide (at any one moment) rather than an actual core.