Hacker News new | ask | show | jobs
by spuz 4455 days ago
> The server will send you track details and car positions and your job is to send car control messages to the server. You'll communicate with a game server using JSON over TCP. More details will be delivered later.”

I don't understand how this could work for a real-time game. I don't know what the input format is like but assuming you need to provide control commands eg:

    {accelerate:1.0, steer:-0.01, brake:0}
Then the behaviour of my car depends wholly on when that command arrives at the server. If there is a small delay it could have a dramatic effect on the position of the car. Similarly, my AI needs to react to information sent by the server which similarly could be delayed when sending over TCP.

Assuming the input format is the actual status of the car, eg:

    {positionx:123, positiony:234}
Then what is to stop me from submitting illegal inputs? Validation might work but it will be impossible for me to validate the output of my AI without access to the simulation code (apparently that is being kept closed source).

Maybe there is another technical solution I haven't thought of? Or maybe the simulation won't run in realtime but will actually work on fixed time steps?

2 comments

Hi!

Very good question :) The message protocol is synchronized because of latency. When the developers test their bots against the game servers, the server allows long response times. When automated races are run in the cloud (with low latency), the response times need to be more strict.

Can you test your own bots? As far as I can tell, the rules only specify that they're automatically tested daily. I'd like the ability to test whenever I need to.
Yes, we'll provide test game servers that you can use.
Are there limits to how much you can use them? Suppose I want to use AI techniques that require tons of tests to be run. Is that okay?
Unfortunately due budget constraints we can't allow unlimited access to test game servers. Do you have an estimate on how many rounds would you need to evolve the algorithm enough?
The Google AI challenges allowed one to run a game server locally so testing was only limited by one's own resources. (A bot made using genetic programming did pretty well: http://planetwars.aichallenge.org/profile.php?user_id=4038)
No idea. I have no idea how complex the simulation is going to be. How about a simple version that can be run locally?
Couldn't you record the received messages and replay them?
I don't see what use that would be. If the test server was a simple data repository, it would be useless for testing algorithms.
I would like to know the answer to this.
It does work - I've seen it :) It does depend on a low ping between the bots and the server, but that is taken care of by the organizers.
Well, the ping (and uncertainty of it) is just a parameter in an closed-loop feedback control system ;). You can handle it.