The bottleneck is due to the many small screw-ups that pile up and add on top of each other.
What Excrulon is trying to say above is, the game will not even begin to render graphics until it is done processing received data. So basically, your already slow car will not even start yet. A delay before the next delay.
Where in the bottle is this bottleneck? All over the Internet:
The next items are purely speculative, but hardly a personal anecdote, my day job has something to do with this. But, I could be wrong, as this is just from the perspective of an end user.
Excuse me for probably a bigass wall of text. Let us begin.
From the looks of it, ToS was designed with only Korea’s network in mind. Korea is one of the few countries with real fuching good Internet infrastructure. It is so damn good, it is better than the American average. You can play FPS shooters like you and the other player on the other end of their country were on a LAN.
Going back. With a very good network infrastructure to build your game on, the ToS developers probably did not anticipate (or they were never exposed to) the crappy reality of international routing and networking. They designed the game anticipating 50ms or less of latency. However, now in the International environment, the average is waaay higher. Why is this significant?
Now we go to the protocol mostly employed by ToS, which appears to be what is called TCP. TCP is a very reliable protocol, it is however not the fastest. TCP requires a full handshake. It goes like this…
Client: I need to send some data. (SYN)
Server: Received, you need to send me data. (SYN-ACK)
Client: Ok, now I know that you know that I need to send data. (ACK)
Server: Ok, now I know that you know that I know that you need to send data… Send your data.
Imagine all of the above happening for every packet, every attack, every point in HP damage, every coordinate moved, every other player you see, and everything they all do, to be sent to your client.
Other games use a protocol called UDP, which does not require a full handshake. UDP goes something like, it will send data without requiring an acknowledgement. Whatever error, whatever inconsistency it will try to rebuild and deduce from the rest of successfully sent packets. VOIP is mostly run on UDP because latency is very important.
There might be valid reasons why the developers chose to use TCP, I, we, will never know. We can be sure on one thing, the game was developed on a network where all this, does not matter because their network is just so damn good.
Going back
- The network code, or how ToS communicates with the server needs to be fixed first, as it will only work in Korea, SG or Japan where the infrastructure is really really good.
- The client side processing of packet or network data needs to be fixed, or it probably being single threaded needs to be fixed too.
- Only after the stuff above, can we even begin to start fixing graphics lag.
Again, these are speculative comments based on boredom at work and a slow burning desire to stab using a spoon everyone at IMC for screwing a game I really like. Please do not take me seriously.