Tree of Savior Forum

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

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

That image is amazing. Sauce?

There’s lof of wrong things in your post.

  • TCP indeed does a three-way handshake (SYN-SYN/ACK-ACK), but it’s only when establishing a connection. After that, you can exchange as many packets as you want, until the connection is closed by either side.

  • TCP indeed requires to send an acknowledgement when you receive data. However, it doesn’t have to be on a packet-for-packet basis. Thanks to receiving windows, you can send dozens of packet and receive a single Acknowledgement for all of them.

  • While UDP looks like the “better” protocol for gaming, it does have its drawbacks. On VoIP, if you loose a packet, the voice will be a bit distorded and the conversation carries on. When gaming, if the packet “I cast safety zone” get lost, your party might be dead before you realize what happened. That’s why game developpers using UDP usually implement their own safety measures on top of UDP. It may be a good idea if you know what you’re doing, but you also may end with something worse than TCP.

  • The problem isn’t the network infrastructure at all. I have a top notch connection, pinging 5-10ms on most west Europe countries, and the game still struggles.

Network coding isn’t easy. It’s even harder when you’re talking about real-time applications. And it’s a serious challenge when you’re talking about real-time MMO. There are way more technical decisions than choosing between TCP and UDP (both can be valid choices). And after that, there’s how it interacts with the rest of the engine, which is another piece of the puzzle.

There are indeed architectural flaws in ToS game engine and it will never run as smoothly as it could on modern hardware because they’re not going to redo everything from scratch. However, they may be able to make the game run in acceptable conditions in town as well as in pvp, which I hope will happen.

3 Likes

Thanks for reminding me that TCP has already been optimized and no longer requires an ack after each segment.

The problem with receiving windows is the server, when sending data will expect to receive a steady stream of acks. If for any reason it does not receive an ack after it has sent a byte count equal to the window size, the server will stop and pause until it receives an ack. Then you add high latency to this problem.

You are correct on UDP having its drawbacks, but you also said it yourself, game developers can implement their own safety measures. It does not even have to be necessarily on top of UDP. Proper coding can find a way to “error-correct” lost packets.

I never said network coding is easy. I am saying they really screwed this up. Imagine, its the players making their own addons and theorycrafting the netcode of the game. Paying customers are not supposed to care if its a serious challenge. We deserve a proper product.

Well I am from Asia/Telsai, we don’t get your glorious 5-10ms so I drew my conclusions from my own experience. I guess we all really are ■■■■■■ now considering your latency and experience.

2 Likes

flashbacks of SFV not skipping frames, rendering each frame even with sub-par hardware causing in-game time to slow down

flashbacks of rubberbanding in 120fps in a different MMORPG

1 Like

don’t jinx him, gods hate rivals xD

Being in Korea and what your ping is has nothing to do with it. My internet connection is plenty fine here. World of Warcraft and Guild Wars 2 are entirely done in TCP and they’re silky smooth. By the time you put a layer over UDP to make it reliable enough to use, it almost ends up like TCP anyway. It doesn’t even matter if ToS used TCP or UDP. It’s simply how the ToS code processes all of the data and is just poor, naive coding by the developers.

2 Likes

we have hope? because i played today a gvg who i cant walk.

1 Like

From a perspective of a non pro programmer, i can see that TOS only uses 2 physical core. HT does not really help in this case. I’m using a i7-6700|16GB 2133Mhz|GTX1060 6GB decent rig, when im alone its all good, but in fermidian i still get around 17fps, which compared to my laptop i7-5500U|840m getting around 10fps, it is higher by around 7 fps. which means, whatsoever hardware is not quite a bottleneck. Although i know only surfaces of network protocols like TCP and UDP, but i dont really think changing to UDP helps. packet loss happens and that is not quite good. IMO, shitty and naive, just to accomplish code is the real problem.

Also, from a perspective of a non pro programer: The game Barely uses the GPU Power.

I tried testing with Asus GPU Tweak with my GTX 660ti. I sent this as a ticket for them a while ago. Here i did with a recent game (Rocket League) that runs perfectly at 90+FPS at max settings

Playing Rocket League:

This is ToS, walking around fedimian:

and this is during a Dullahan fight. Even when is really necessary, it barely uses the GPU power:

Correct me if i’m wrong on something or if it’s not that useful information, i’m not that pc expert.

1 Like

Its the garbage old engine they use, You are being limited by your processor and the games netcode which is preventing the GPU from performing or being used.

1 Like

Guys they are helping us to save watt/power by using lesser GPU usage!! Who could have thought of that, Genius.

Sarcsm

On a serious side they seriously need to do something bout dat gpu usage problem. :expressionless:

2 Likes

The fact this game is not Async sockets over UDP is just absolutely mindblowing… This kind of networking has been the standard for over a decade in MMOs. I have seen highschoolers implement it.

Press ~ to pull console down

Type fps_max 72

That’s how I solve .

Theres no addo nto save us @Excrulon ? =(

Blaming the network code for being synchronous instead of asynchronous is ignoring the other huge issues which are bring by asynchronous code. It’s not the best solution at everything at all.

Your video doesn’t prove much, as you are inspecting network performance from Lua code and empirically giving false conclusions. Please use an external ToS network proxy (hint : I’ve released one), hook the packet handlers from the client, and do an appropriate code profiling.

@Excrulon, with all my respect, please don’t spread misinformation about native code implementation when you don’t have that knowledge. I know you’re probably sick of the poorly coded Lua code, but don’t extend that logic to the entire engine.

The network code is fine. It could be better, but it is not “the” cause of a lot of fps issues.

1 Like

I doubt the netcode itself would fix the fps entirely since despite of the 2D-ish look there r tons of 3D object draws needed to be rendered especially on each character seems to have many multiple separate 3D objects needed to be draw/render everytime it enters the frame, hence there are severe lag/spikes whenever more than 10-20+ players are in the screen (common thing for most mmos). All these stuff while the engine itself doesn’t even fully utilize the gpu, not even 40% which is the main issue. They seriously need to consult Nvidia or Amd or someone else for these fixes lel.

Hope they can also add in some kind of feature like in Blade & Soul where pressing CTRL + F would hide (not render) all other characters and skill effect on the screen. One of the most useful feature ever especially for Boss/Dg raids.

I was even considering selling my GPU to buy a good AIO for the CPU and overclock it just to squeeze out more FPS. XD

What is the issue then ?
The poor coding ?
Cause despite what “everyone” is saying, the problem obviously isn’t about a lack of GPU/CPU usage.
The game already use way more power than it should…

In this game, we have a lag spike every time we get a new data… Should it be a new player, a sucessfull/failed upgrade, a Sorcerer summoning…
And why is the fps performance so much affected by the network performance ?

1 Like