Page 1 of 1

Just Guarding and Latency

PostPosted: 02 Nov 2015, 12:34
by Yvona
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.

Re: Just Guarding and Latency: Screw the rules, I say no!

PostPosted: 02 Nov 2015, 12:38
by Ryxa
I'm pretty sure anyone with a basic understanding of how networking works could have figured this out stuff works without messing with packets and potentially flagging yourself for a ban. =x

Re: Just Guarding and Latency: Screw the rules, I say no!

PostPosted: 02 Nov 2015, 12:41
by SupremeTentacle
Based on certain uh... methods that should not really be discussed anywhere with a record, I can conclude that your status is updated far more than once per second. If you don't believe me, try tracking your computer's outgoing and incoming internet packets while the game is up.

The monster's attacks are actually server sided. It simply plays the full animation on your end, which gives it the appearance of being client sided.

All damage done to the player is server sided, and unfortunately, this means Just-guarding is server sided as well.

However, you only see attacks once the server sends these to you, but you have to guard with server-sided timing.

The way I see it, the server does not toss away any information, it simply registers your actions late.

The only way to fix this would be to calculate the damage taken on the player's end as opposed to the server's end. The problem here is that this would leave the game more open to hackers, as it's really easy to make a client sided hack that the server would not be able to pick up.

Re: Just Guarding and Latency: Screw the rules, I say no!

PostPosted: 02 Nov 2015, 13:07
by Yvona
SupremeTentacle wrote:Based on certain uh... methods that should not really be discussed anywhere with a record, I can conclude that your status is updated far more than once per second. If you don't believe me, try tracking your computer's outgoing and incoming internet packets while the game is up.

The monster's attacks are actually server sided. It simply plays the full animation on your end, which gives it the appearance of being client sided.

All damage done to the player is server sided, and unfortunately, this means Just-guarding is server sided as well.

However, you only see attacks once the server sends these to you, but you have to guard with server-sided timing.

The way I see it, the server does not toss away any information, it simply registers your actions late.

The only way to fix this would be to calculate the damage taken on the player's end as opposed to the server's end. The problem here is that this would leave the game more open to hackers, as it's really easy to make a client sided hack that the server would not be able to pick up.

Thanks for clarifying and ya... Client side does have its own risks like in other games

Re: Just Guarding and Latency

PostPosted: 05 Nov 2015, 21:25
by Jakiro
20 Ping, still dies 8-) WITH STYLE!