> We do not intentionally expose you to the speed of light as a limiting factor early in Stockfighter… but we can’t remove latency as being an actual limitation distributed systems have to overcome.
Couldn't you remove latency as a factor, at least in a game world? To play devil's advocate, it seems like you could build a game where time advances according to the player's control by API.
Imagine if each API call optionally took a parameter describing by how much time should have advanced since the last call, upon the arrival of the current call. If the parameter is omitted, the server advances the world by the corresponding amount of real clock time. The game simulates that time passing, and simulates receiving the call at the time specified. Perhaps an API to stop and start the flow of game time, or run the game for a certain time and stop.
Players can interact with the game naturally, and solve problems without controlling time, but if they run into latency issues they can orchestrate the advance of time on the server precisely. I understand this will not be simple to implement, especially if the game consists of multiple communicating agents, but it could allow you to remove the uncertainty of players interacting with the game over a network, and more easily set up complex race conditions or timing attacks. It will also more gracefully handle any slowness that occurs in the game or bot simulations, since while game calls might take longer real time to return, they will presumably not take more game time. Last but not least, it could allow you to design test cases that are deterministic in ways that involve time, i.e., this event occurs exactly 100ms after the game world begins, every time. Players can exactly reproduce situations that would otherwise occur nondeterministically, while you retain your ability to simulate interactions that you want to be nondeterministic.
(I'm just exploring the idea because it seemed interesting, not making the case that this is especially important in the scheme of things.)
Couldn't you remove latency as a factor, at least in a game world? To play devil's advocate, it seems like you could build a game where time advances according to the player's control by API.
Imagine if each API call optionally took a parameter describing by how much time should have advanced since the last call, upon the arrival of the current call. If the parameter is omitted, the server advances the world by the corresponding amount of real clock time. The game simulates that time passing, and simulates receiving the call at the time specified. Perhaps an API to stop and start the flow of game time, or run the game for a certain time and stop.
Players can interact with the game naturally, and solve problems without controlling time, but if they run into latency issues they can orchestrate the advance of time on the server precisely. I understand this will not be simple to implement, especially if the game consists of multiple communicating agents, but it could allow you to remove the uncertainty of players interacting with the game over a network, and more easily set up complex race conditions or timing attacks. It will also more gracefully handle any slowness that occurs in the game or bot simulations, since while game calls might take longer real time to return, they will presumably not take more game time. Last but not least, it could allow you to design test cases that are deterministic in ways that involve time, i.e., this event occurs exactly 100ms after the game world begins, every time. Players can exactly reproduce situations that would otherwise occur nondeterministically, while you retain your ability to simulate interactions that you want to be nondeterministic.
(I'm just exploring the idea because it seemed interesting, not making the case that this is especially important in the scheme of things.)