Just Guarding and Latency
Posted: 02 Nov 2015, 12:34
Yes, the one thing everyone has notice, especially recently, is just guarding lag. Sometimes it's easy, sometimes it's not. Everyone knows having latency makes just guarding a nightmare, but how does the server handle it? The below is just from our own experiment and sniffing, the actual server results rests in CS's hands.
Well my friend decided to do some sniffing with the packets and dig into the client to find some interesting info. Now for the basics:
Basics
1. Your character running and basic attack/guard is actually done by the client! Yes, all that running around you do is client sided. Every one second or 1000, you actually update your position to the server and the server holds that up. This is also why when you're lagging or disconnecting, you can still run around except when doing specific things like opening the menu or using skills.
2. The MONSTER attack pattern is done client sided. What it means is that the server sends the attack and animation packet and it'll perform the whole thing. This is why when you suddenly lag or dc, the monster finishes its ATTACK animation instead of stopping midway because it's done by the client.
In this sense, you just guarding an attack is actually done by the client too! So even if you lag, if you guard during the proper attack of the animation, you'll send the correct timing to the server (though the just guard animation won't play without the server sending a success back). Basically your client says you guarded at the right animation to the server and the server verifies it.
Wait, doesn't that mean that it makes just attack even easier?!
Well, we'll explain Cyberstep or we shall now call Cybertroll from hereon now, why the server is a sadist.
First off, remember basic #1? Yes, it means your position is updated every second, meaning that if you lag really really behind, the game actually records your "actual" position to be further back where you used to be than where you are "client sided". This determines when if you get attacked or your attack lands.
So that means when you run away and make a proper position to "just guard" the fireballs in a row, the server may think you may be closer to the guard and register it as an attack, which is why sometimes the fireball "Explodes" prematurely before it even reaches you.
Now, for the #2 basic. Your client sends that you guarded at xx time during xx attack, and it pretty much registers as a "success". The server goes "hey pretty cool" and sends it back the just guard animation and the OK.
What happens when you lag? If #1's position problem didn't screw you over, #2 will. What #2 will do is that when you send that you just guarded it, the server will take that info... and toss it away if you lag.
Yes, server's timing and dictates if you just guarded properly. In fact, when it sends a monster attack packet, it also keeps track of the "timing frame" on the server side to determine if the success of just guarding works.
Which means, if the client's packet for just guarding comes after the predetermined time the server judges it takes to just guard it, it discards the information and register it as the enemy's successful attack.
Yes, even if you just guard perfectly client wise, if it takes too long for the server to actually say it's "good", it gets ignored. Cybertroll at its finest.
Why did they do it this way? Most likely they wanted it for a security reasons, in order to ensure that even if you mod the client to keep telling the server you guarded everything (anyone in the field will know that if you let the client do most of the work, it can be exploited), but they want to run it as "server as king", in other words, monsters have inherent advantage that if two conflicting information arrived, the server defaults that monster attack was a success instead of resolving itself why a JG packet came in late.
Short Story: Cybertroll ruins your day. Unless you have a good connection to the server, we will never be able to do what JP does.
Well my friend decided to do some sniffing with the packets and dig into the client to find some interesting info. Now for the basics:
Basics
1. Your character running and basic attack/guard is actually done by the client! Yes, all that running around you do is client sided. Every one second or 1000, you actually update your position to the server and the server holds that up. This is also why when you're lagging or disconnecting, you can still run around except when doing specific things like opening the menu or using skills.
2. The MONSTER attack pattern is done client sided. What it means is that the server sends the attack and animation packet and it'll perform the whole thing. This is why when you suddenly lag or dc, the monster finishes its ATTACK animation instead of stopping midway because it's done by the client.
In this sense, you just guarding an attack is actually done by the client too! So even if you lag, if you guard during the proper attack of the animation, you'll send the correct timing to the server (though the just guard animation won't play without the server sending a success back). Basically your client says you guarded at the right animation to the server and the server verifies it.
Wait, doesn't that mean that it makes just attack even easier?!
Well, we'll explain Cyberstep or we shall now call Cybertroll from hereon now, why the server is a sadist.
First off, remember basic #1? Yes, it means your position is updated every second, meaning that if you lag really really behind, the game actually records your "actual" position to be further back where you used to be than where you are "client sided". This determines when if you get attacked or your attack lands.
So that means when you run away and make a proper position to "just guard" the fireballs in a row, the server may think you may be closer to the guard and register it as an attack, which is why sometimes the fireball "Explodes" prematurely before it even reaches you.
Now, for the #2 basic. Your client sends that you guarded at xx time during xx attack, and it pretty much registers as a "success". The server goes "hey pretty cool" and sends it back the just guard animation and the OK.
What happens when you lag? If #1's position problem didn't screw you over, #2 will. What #2 will do is that when you send that you just guarded it, the server will take that info... and toss it away if you lag.
Yes, server's timing and dictates if you just guarded properly. In fact, when it sends a monster attack packet, it also keeps track of the "timing frame" on the server side to determine if the success of just guarding works.
Which means, if the client's packet for just guarding comes after the predetermined time the server judges it takes to just guard it, it discards the information and register it as the enemy's successful attack.
Yes, even if you just guard perfectly client wise, if it takes too long for the server to actually say it's "good", it gets ignored. Cybertroll at its finest.
Why did they do it this way? Most likely they wanted it for a security reasons, in order to ensure that even if you mod the client to keep telling the server you guarded everything (anyone in the field will know that if you let the client do most of the work, it can be exploited), but they want to run it as "server as king", in other words, monsters have inherent advantage that if two conflicting information arrived, the server defaults that monster attack was a success instead of resolving itself why a JG packet came in late.
Short Story: Cybertroll ruins your day. Unless you have a good connection to the server, we will never be able to do what JP does.