Tree of Savior Forum

Network code is the cause of a lot of fps/performance issues. Video inside

Pardon my ignorance, but where along the “bottle” does the network code bottleneck exist? Is this mostly handled server-side, on our own clients? Has optimizing TCP performance on our own clients been objectively (as in, not just personal anecdotes) proven to reduce 0-frame-time moments? How about private networks like WTFast?

Bump

Lazy Developers.

4 Likes

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

  1. 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.
  2. The client side processing of packet or network data needs to be fixed, or it probably being single threaded needs to be fixed too.
  3. 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.

24 Likes

@Excrulon
So would IMC have to pretty much redo the whole game if they wanted to change this?

2 Likes

I do not know, I am not a developer.

I am just stating the network side on top of Excrulon’s observations. He might be more qualified to answer that.

We have a winner here! :trophy:
Success explained the issue in a funny and informative way.

1 Like

What I was getting at was whether or not we could do anything else ourselves (aside from asking IMC to optimize their netcode) to mitigate how complicated TCP handshakes are on our end. Have tools like TCP Optimizer been proven beyond any doubt to improve netcode communication? As in, more than what could be construed as placebo.

They can help but they cannot cheat physics.

My crappy country has crappy consumer net. So I use Mudfish whenever I am not at work.

Using Mudfish, WTF fast, et.al is like this.

  1. My ISP has a crappy connection to IMC. But;
  2. My ISP has an ok connection to a Mudfish Node.
  3. Mudfish will take my ToS traffic, put it in a box, and send it to a Mudfish node. There it is taken out of the box, and sent to IMC.

Mudfish acts as a middle man. It can solve bad routing by an ISP. It cannot cheat the time required to send data though. When you are x number of miles from the server, it will not change.

Mudfish helps, but it cannot solve Fed channel 1 though.

1 Like

I’m just gonna bop in here and say that this is false, even in korea you have major issues with the FPS, considering in events at least 90% of people froze or crashed when combat was started on the big chicken.
The whole system is a terrible idea no matter how close the server is to you or how amazingly fast you can transfer the information back and forth, considering the system uses some kind of god awful ping pong between players.

Prime Example: Everyone in this picture that is petrified or turned into stone had their client time out/freeze due to the servers just not being able to feed enough information.


this of course can be played around with certain injections and edits to the game outside of .lua, although that’s grounds for getting banned.

2 Likes

Great. So its not ok even there. We are so ■■■■■■.

R I P hue hue hue 20 20 20

2 Likes

What was the point of these events if the game cannot support it LOL

1 Like

The GODS of codes (@Excrulon is like ZEUS) can put some fix here, so IMC can just put in the game.

BTW hire this guy IMC, just that

Time will tell if IMC will respond to this.

That is an amazing explanation sir. Kudos!

But there is one big problem that I have to point out. You mentioned several times that they likely coded around the fact that in Korea latency is a non-issue… but… have you seen Korean GvG’s?

It doesn’t matter if you have 10ms or 50ms or 200ms: the end result is that, across all latency variances, TOS is so poorly coded that it runs like poop across ALL versions of the game. This isn’t restricted to ITOS as it happens in every instance of Korea’s GvG’s as well.

For instance: https://youtu.be/THuWwVwW5WQ?t=80

I guess what I’m saying is I don’t think they coded it around Korean latency. I also don’t believe they’d restrict themselves to begin with considering the budget and how long the international community has been following the title. The fact that TOS runs like garbage across all machines and all pings means that it wasn’t just coded to only run well with Korean standards in mind… but that it wasn’t coded well at all. #Trashchode.

Maybe it is both the netcode and graphic engine is garbage?

There goes my gusto to grind today. lol.

1 Like

lol and yet we’ll both probably be grinding =( I won’t get discouraged if you don’t get discouraged! lol

huehuehue indeed…
bad netcode = bad fps
bad fps = bad gaming exp
bad gaming exp = quitting players
BUT… dont worry IMC staffs are here to the rescue :sparkles:

click to expand

huehuehuehuehue… :joy:

8 Likes