- Dec 10, 2017
- 95
- 136
Some more follow-up on this:
The client is providing a unique identification token and action and parameters to the server through an API call (/api/update), which is responding with the next transient game state (stuff that should be known to the player right now: game time, location, stats, items, etc).
In reviewing data from that update call, I found a minimum latency of ~280ms, median latency of ~380ms, mean latency of ~630ms, however several requests exceeded 1 second, with one even taking longer than 5 seconds to fulfill. DS' server appears to be hosted in either Russia or Estonia with a median network latency of 100ms. That's probably variable depending on client location. Cloning the server locally for each client would immediately remove the network and client contention latency from the equation, which would improve the gameplay experience significantly.
However, reverse engineering that server would be an incredibly long and manual process: While dialogue copying could be automated, you would still need to re-create all game mechanics by hand based on observations as a user, as you wouldn't normally have any access to the underlying code or persistent/covert game state. If you're going to go to that effort, why not just co-opt the client to make a completely different game?
The only practical application I see for this would be to build an image viewer, which is pointless, since all images are already transferred in the clear to the client.
The client is providing a unique identification token and action and parameters to the server through an API call (/api/update), which is responding with the next transient game state (stuff that should be known to the player right now: game time, location, stats, items, etc).
In reviewing data from that update call, I found a minimum latency of ~280ms, median latency of ~380ms, mean latency of ~630ms, however several requests exceeded 1 second, with one even taking longer than 5 seconds to fulfill. DS' server appears to be hosted in either Russia or Estonia with a median network latency of 100ms. That's probably variable depending on client location. Cloning the server locally for each client would immediately remove the network and client contention latency from the equation, which would improve the gameplay experience significantly.
However, reverse engineering that server would be an incredibly long and manual process: While dialogue copying could be automated, you would still need to re-create all game mechanics by hand based on observations as a user, as you wouldn't normally have any access to the underlying code or persistent/covert game state. If you're going to go to that effort, why not just co-opt the client to make a completely different game?
The only practical application I see for this would be to build an image viewer, which is pointless, since all images are already transferred in the clear to the client.