The current game engine uses unsigned int time() as the seed which is unix time in seconds. This makes the generated maps predictable. There are only half a million seconds in a week so I could generate all the maps for the final week of competition and fine tune my bot for them.
We also probably shouldn’t be sending the game seed to bots.
Have they mentioned anywhere if this is intentional? It potentially adds a layer of strategic depth.
If you have access to clusters of thousands of machines. Some of us don’t.
@lidavidm any response from Two Sigma regarding trivial predictability of the maps?
Additionally the commit adding map seed to the constants sent to the bot is quite recent but short on details:
Considering there are >0.6MM games/week, and you have a space of 20MB to store all your code and models, for you to accurately store that data you would need to be able to store all of each game’s data in 33 bytes. That’s 33 bytes to store ~500 turns and considering the random interactions between you and other players. Even if you could abstract that code such that each 1000 games could be stored in one meta representation, that’d give you 33KB per abstract game. Consider again that that is for 500 turns and hopefully >10 bot commands a turn, so even in that case you’d need to average 6 bytes to deal with randomness for each bot. That’s less than one long for each bot. Also note that this would not include your source code to deal with all that code. Even with encodings I don’t think that’s very feasible.
If you were somehow able to store all that, there’s still the problem of generating that and solving the maps and randomness in the first place. If you were able to do all that i would contently be the first to note that you have solved the game; and be happy to say so: here at Two Sigma, we love solving difficult, interesting problems. If you do solve that I would also posit there’s probably a good paper to be written about it (heck, this might be a whole dissertation-worth). So I definitely encourage that you try that solution