Make blocks register client-side

Hi there! I’m a rather new player (with a whopping 80 hours in a few weeks), and I honestly fell in love with this game. There is something, however, which makes online play a lot harder for me and my friends, and that is blocking when not hosting.
I honestly feel like playing online would be a lot better if only the hit registration would be client-side instead of host-side.

I noticed that this issue was already brought up before, so I’ll simply copy and paste another post down here:

By KaelusVonSestiaf:

This is the single biggest issue encountered by players who have high ping.
Ping is inevitable, it’s going to happen, whether you’re playing in low hours, or from a country with a smaller playerbase, or just any of the myriad of things that can lead to you having no choice but to play with a host who gives you bad ping. That’s fine, it’s inevitable.

However, it’s currently nigh unplayable at pings higher than 200 (and 200 itself is still a curse), and this is primarily because whether you get hit by an attack or not is determined by the host . What does this mean? It means that by the time you hear the backstab sound warning you that you’re about to get hit in the back, it’s already too late. It means that you’ll be hit through your block, because the host saw you get hit so he tells your client ‘you got hit’, regardless of the fact that you’re holding your guard up with full stamina.

It means that you basically have to compensate for the lag, blocking much earlier than you normally should to be able to actually defend against attacks, and things that you could get away with as host or with low ping (blocking at the last second, dodging an attack at the right time) are impossible with ping.

However , if whether or not you got hit was calculated by the client , then none of this would happen. AI behavior can still remain in the hands of the host, all that matters is that the client only takes damage/loses stamina when the client itself registers that he got hit, just like if he was hosting . Ping would still affect laggy clients negatively, of course. Grabbing items takes a few moments to sync up, everything you attack takes damage a few moments later, but the main issue that makes the game unplayable at high ping would be dealt with.
This means that high ping, while still a factor, will no longer kill your ability to play, it’d mean that even if the playerbase diminished to a fraction of what it was you could still have fun with a lobby of 1 us, 1 south african, 1 japanese and 1 irish players or something, it’d mean bridging communities.

But, naturally, it’d mean a painful amount of work, most likely. Not an expert, but I’m sure a change to the nature of the client/host interaction is probably a lot of work, and possibly even buggy, but I firmly believe that the benefits would be substantial enough to be worth it.

7 Likes

Indeed this has been discussed many many times in different forums / discord, though a dev response is something I’ve yet to see.

The game is a mixed bag of things checked at either side or even both, but this one is more problematic as far as my understanding of it goes.

I don’t know how it works at the moment, but I believe it’s as simple as the client telling the host it’s blocking and that’s it. I am not sure, but I think some animations are synced with ping time in mind, so that clients would see things happen as close to host-time and be able to react. If such sync exists it obviously helps with some reasonably low ping, but higher will mean you would see only the last parts of the animation or not at all in the worst case.

I am assuming that as clients do not check for received hits the enemy weapon “physics” are not calculated client side either, at all. Very little reason to do so at least. If it so happens they are calculated despite not being used for anything (that I can think of), it could then enable client side hit registration to be a bit simpler to implement.

Now ping makes you mostly be at a disadvantage - only advantage I can think of is you being able to whack enemies before / at the same time they will actually react to you. Hits toward enemies is client side checked for the hit registration part and damage numbers plus other stuff is sent to the host (so that I assume the host doesn’t need to do the weapon physics for clients), which kind of levels the playing field in that both enemies and clients are whacking a delayed view - you can kill enemies, that on the host where the kills are confirmed, are not where you see them and enemies do the same to you.

But how to let clients check for blocking / received hits? Or have a properly timed whoosh back-stab sound?

I guess the easiest would be to enable enemy weapon physics / sweep calculations for clients and report the results to the host. That would put clients with higher ping at an advantage as you would be whacking enemies that are yet to even react to your presence and even after an attack starts host side when the info gets to a client the location of that enemy & attack is way off from that of the hosts view. An enemy starts tracking you and starts an attack pointed at you, but on the delayed client screen that may look as if the enemy is doing it a few meters to any direction in the worst case - and thus miss you even if you didn’t block.

That doesn’t sound fair, though would enable a BS free high ping play on the cost that it would be easier than on host.

Giving full ownership of enemies to clients is the only really fair & “correct” way to do it, but my feeling is that will not happen. A word from a dev would be great regarding this matter.

As to why I can’t see the latter happening is because of the game just not being designed for it. There is no shared decision making for enemy positioning etc.

As long as long ping games are available I’m fine, but there are moments that are just BS from the client’s perspective, and I would be all in for waiting for other game content if even these small ping timing issues would see more work on them.

1 Like

I feel like it would be better to have 3 out of 4 players be at an advantage than it is to have 3 out of 4 be at a disadvantage.

I think a good and simple solution is simply to have each client manage it’s own HP and report when it goes down to zero.

I’m not sure what the problem is, I play regularly on 300-400 ping and enemy attack animations are still very well synced. The SV overhead will come right at you just as if you were on host, the only difference is you have literally 1/4 of the time window in which to react. If they simply made it so player health was managed client-side how would that actually affect AI behaviour? The rats will keep attacking you until you’re dead either way.

As for backstab sounds that is simply something any laggy player has long since sacrificed to the chaos gods, but being able to defend yourself against things right infront of you would be a godsend. You would still have to deal with the delay to enemies dying which is a huge pain, since obviously they continue to attack and damage you, like the gutter runner you shot midair will still pounce you for 30 damage before keeling over.