Jump to content

Take and deal damage from your own screen


Recommended Posts

I don't really know how network stuff works in this game, but a lot of people seem to be complaining about lag, especially when kiting. I guessing that's because when they dodge an enemy, they will see on their screen that they are out of range of an attack, however because there is a delay before the information of the player running from one position to another is sent to the server, the server will think that the player is still in range of the attack and therefore should take damage.

Spoiler

hob8q6t.png

In other multiplayer games, the same thing happens because lag is unavoidable. For example in TF2, let's say, somebody is chasing you while you are backpedaling. You both have your melee weapons out and take swings at each other, however only his hits register. The game makes you take damage from where you are and deal damage from where you were. That is because while you know your real position, where you see yourself on your screen, the server only knows your delayed position. How outdated your position is to the server depends on your ping. If you have 200 ping, then the server only takes into account your position from 0.2 seconds ago. 50 ping means a 0.05 second delay, 1000 ping means a 1 second delay, etc.

Spoiler

jIXKXvr.png

kZur4ai.png

CjTaRHO.png

luI9EIE.png

TF2 actually uses collision hulls for melee hit registration instead of hitboxes, but "hitbox" is a more familiar term for most players. Also here's the video which made me learn this.

Currently, DST makes you take damage from where you were, even if the attack animation of the mob doesn't match up. This usually gives the illusion that mobs have doubled attack range and quicker attack wind-ups, which I can understand is frustrating. What if the game only let you take damage from where you are? This means the game only checks if you were in attack range or not when the mob performs its attack on your own screen instead of the server. I believe that would be a more reliable way to decide if a player should take damage or not.

Again, I don't know how network stuff works in this game. If somebody with proper knowledge can provide a better solution, then that would be delightful.

Note that I'm not saying I'm completely correct, this is all just guesses based on my limited knowledge. Also, don't laugh at the terrible drawings.

Game is server based on like 95% to prevent cheating. Disabling lag compensation could be done via video configurations or via console command ThePlayer:EnableMovementPrediction(false). It even is labeled as "predictive" lag compensation. To understand fully how it works you just have to toggle it a few times. Explaining it via text has no point since its obvious.

// Also,  speaking of 3D shooters, those I know of use linear interpolation by default, creating additional lag (just google how lerp works). Though some games are compensating this artificial lag entirely. Always gotta check if shooter you are playing at does that :>

Yeah, disabling the prediction is the best route as it's just a client-sided predictor that makes no attempt at fixing discrepancies on the server while the server doesn't actually compensate for the lag.

 

Having the server trust the client with important gameplay effecting things such as being hit or hitting others isn't a good way of doing things because it opens up the door for cheaters to gain unfair/physics-breaking advantages over others.

For instance, having the client teleport its prediction away from targets when the client sees an attack happen to negate all damage.

Ah, I guess they made hit detection server-sided to prevent cheating. Sounds reasonable.

17 hours ago, Diaboliko said:

// Also,  speaking of 3D shooters, those I know of use linear interpolation by default, creating additional lag (just google how lerp works). Though some games are compensating this artificial lag entirely. Always gotta check if shooter you are playing at does that :>

Yes, I believe TF2 applies that by default. Though, there are console commands which allow you to disable it.

Yeah, combat in DST is a horrible experience. You'd think that in a SURVIVAL game you'd be able to actually survive with enough skill. But nope, unless you disable movement prediction.

And even with movement prediction turned off you can screw up, since input gets reset when actual 'lag' happens, so you have to spam/hold your keys to kite properly. And it takes time to get used to play like that.

Some complain that it's "horrible lag", some say that it's "horrible game engine".

I'd say it's just networking done badly, but hey, I may be wrong.

You'd think that ironing this out would be a top priority. But nope, we're out of beta, and it's still horrible.

3 minutes ago, PanAzej said:

Yeah, combat in DST is a horrible experience. You'd think that in a SURVIVAL game you'd be able to actually survive with enough skill. But nope, unless you disable movement prediction.

And even with movement prediction turned off you can screw up, since input gets reset when actual 'lag' happens, so you have to spam/hold your keys to kite properly. And it takes time to get used to play like that.

Some complain that it's "horrible lag", some say that it's "horrible game engine".

I'd say it's just networking done badly, but hey, I may be wrong.

You'd think that ironing this out would be a top priority. But nope, we're out of beta, and it's still horrible.

There is, however, very little amount of content that can get you out of guard, so its currently not too big of an issue. Though surely grinds my gears.

Unfortunately there isn't likely much that can be done about this at all.  In a multiplayer game like this, prediction is used to keep the game looking smooth, when in reality it is not.  The sync issues that are described here are generally unavoidable if you are actually experiencing reasonable lag between you and the server.

You cannot trust the client to manage the positioning, as that would leave the game wide open to exploits.  The general rule of thumb when developing anything multiplayer is to never trust the client.  As prediction cannot actually read the player's mind, there is no method for it to truly determine what action you will take at any given time and correctly compensate for lag issues.

The only real solution is to only play on servers with low ping, to prevent yourself from the lag issues to begin with.

1 hour ago, Ecu said:

The general rule of thumb when developing anything multiplayer is to never trust the client.

I know nothing about these things, but what about an optional trust for clients? It would work well in private games, because a pack of friends won't care about cheaters since they won't invite any strange people anyway.

12 minutes ago, Maslak said:

I know nothing about these things, but what about an optional trust for clients? It would work well in private games, because a pack of friends won't care about cheaters since they won't invite any strange people anyway.

That would require running async servers, and here comes the problem of some stuff being random in this game(and this random is calculated whenever the time comes, it doesn't come from some "seed" variable) and the problem of one user possibly having a lag. If one does not give any hecks about smooth and non senseless look - that can be done with mods (e.g. TES5:Skyrim has that kind of mode), but devs are unlikely to bother with that.

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...