Bob369963
Ban Manager/Moderator
- Joined
- Apr 19, 2009
- Messages
- 5,968
From Here; latency, hit detection, and network smoothing factor - Battlefield 3: Technical Discussion - Symthic Forum
latency, hit detection, and network smoothing factor
there's been some recent discussion on this topic, including a mostly bogus "fix" as well as threads on various forums. then there's this video that i just watched, talking about the network smoothing factor:
How to Increase Bullet Registration | Battlefield 3 | Network Smoothing Factor - YouTube
<iframe width="560" height="315" src="http://www.youtube.com/embed/u64W8OT-bCQ" frameborder="0" allowfullscreen></iframe>
so this all got me thinking, and i think i might have some theories that are worth testing out.
hit detection
as most of you know, BF3 uses client-side hit detection. basically, this means that hit detection calculations are done purely on your own system, and the results are then sent out to the server and all relevant players. this means that if your client says to the server: "i hit player A on hitbox X dealing Y damage", that player gets on hitbox X and suffers Y damage. where player A ACTUALLY is, is irrelevant; as long as you can see him and your aim is good, you'll hit him. there are benefits for using such a system (lesser server requirements, better overall latency), as well as drawbacks (vulnerable to hacks, weird hits), but i'm not here to talk about them.
latency
continuing from above, latency plays a very interesting role in BF3 hit detection. traditionally, the higher your latency, the worse it is for you. however in BF3, as long as you aren't dropping packets, having slightly higher latency is actually beneficial. this is because while you are lagging, position information from other players are also reaching your game client slower. this means that in a firefight, your target might have dodged behind cover, but is still visible to you, allowing you to shoot him. THIS is the reason why people often complained of being hit even when they dropped to prone behind cover, or in some cases, had already run three meters away behind a wall. just because you've gone into cover, doesn't mean that the information of you going into cover had reached your opponent. this obviously means that your opponents would still be able to hit you, despite your actual position is somewhere else.
just remember that higher latency is a double edged sword. while opponents are easier to hit, YOU are also easier to hit. your positional changes, due to your high latency, are also reaching your opponents' clients slower, giving them more time to shoot at you. generally if you have consistently high latency, it is a good idea to shoot first, and shoot often.
NOTE: the following is based on possibly incomplete information. if anyone has more data on the matter, feel free to share and correct me.
network smoothing factor
as the video above mentioned, network smoothing factor determines the amount of interpolation on other players' movement data, sent to you by the server. the higher the setting, the greater the amount of interpolation done. what this means, is that with high network smoothing factor, your client is free to "guesstimate" the position data sent from the server. if player A runs from point X to point Y, but does a tiny stutter step (maybe he was pressing a button and moved his finger off of the run key for split second), your client simply renders player A running in a smooth speed from point X to point Y.
now how is this beneficial to you? for one thing smooth motion is easy to track. sudden and rapid changes in position gets smoothed over into a continuous motion, which makes hitting moving targets significantly easier. there's also the matter of rotation. a character's head leans slightly forward, meaning that from the side, the head hitbox is off center from the rest of the body. also, hitboxes are larger if the character is front or back facing you, and narrower if on the side. this means that a player can dodge hits purely by suddenly and rapidly turning his side to you, causing some of your hits to fly off beside him, or miss his head. in this situation, a high network smoothing factor will smooth over the turning animation and possibly blend it with some other action, giving you a bigger window to get a good hit.
lastly, there's the additional latency incurred by network smoothing factor. it's probably really small, but it is purely beneficial to you. your own movements are unaffected, but EVERYBODY else's movements are slightly delayed. this again, gives you more opportunity to hit, without making you vulnerable in any way.
so basically, i don't entirely agree with the video, in that you should match your network smoothing factor to your latency: it's more beneficial to turn it up to max at all the time.
hopefully my thought process is interesting and of benefit. like i said, feel free to correct me on my reasoning, especially if you know more on this topic than i do.
latency, hit detection, and network smoothing factor
there's been some recent discussion on this topic, including a mostly bogus "fix" as well as threads on various forums. then there's this video that i just watched, talking about the network smoothing factor:
How to Increase Bullet Registration | Battlefield 3 | Network Smoothing Factor - YouTube
<iframe width="560" height="315" src="http://www.youtube.com/embed/u64W8OT-bCQ" frameborder="0" allowfullscreen></iframe>
so this all got me thinking, and i think i might have some theories that are worth testing out.
hit detection
as most of you know, BF3 uses client-side hit detection. basically, this means that hit detection calculations are done purely on your own system, and the results are then sent out to the server and all relevant players. this means that if your client says to the server: "i hit player A on hitbox X dealing Y damage", that player gets on hitbox X and suffers Y damage. where player A ACTUALLY is, is irrelevant; as long as you can see him and your aim is good, you'll hit him. there are benefits for using such a system (lesser server requirements, better overall latency), as well as drawbacks (vulnerable to hacks, weird hits), but i'm not here to talk about them.
latency
continuing from above, latency plays a very interesting role in BF3 hit detection. traditionally, the higher your latency, the worse it is for you. however in BF3, as long as you aren't dropping packets, having slightly higher latency is actually beneficial. this is because while you are lagging, position information from other players are also reaching your game client slower. this means that in a firefight, your target might have dodged behind cover, but is still visible to you, allowing you to shoot him. THIS is the reason why people often complained of being hit even when they dropped to prone behind cover, or in some cases, had already run three meters away behind a wall. just because you've gone into cover, doesn't mean that the information of you going into cover had reached your opponent. this obviously means that your opponents would still be able to hit you, despite your actual position is somewhere else.
just remember that higher latency is a double edged sword. while opponents are easier to hit, YOU are also easier to hit. your positional changes, due to your high latency, are also reaching your opponents' clients slower, giving them more time to shoot at you. generally if you have consistently high latency, it is a good idea to shoot first, and shoot often.
NOTE: the following is based on possibly incomplete information. if anyone has more data on the matter, feel free to share and correct me.
network smoothing factor
as the video above mentioned, network smoothing factor determines the amount of interpolation on other players' movement data, sent to you by the server. the higher the setting, the greater the amount of interpolation done. what this means, is that with high network smoothing factor, your client is free to "guesstimate" the position data sent from the server. if player A runs from point X to point Y, but does a tiny stutter step (maybe he was pressing a button and moved his finger off of the run key for split second), your client simply renders player A running in a smooth speed from point X to point Y.
now how is this beneficial to you? for one thing smooth motion is easy to track. sudden and rapid changes in position gets smoothed over into a continuous motion, which makes hitting moving targets significantly easier. there's also the matter of rotation. a character's head leans slightly forward, meaning that from the side, the head hitbox is off center from the rest of the body. also, hitboxes are larger if the character is front or back facing you, and narrower if on the side. this means that a player can dodge hits purely by suddenly and rapidly turning his side to you, causing some of your hits to fly off beside him, or miss his head. in this situation, a high network smoothing factor will smooth over the turning animation and possibly blend it with some other action, giving you a bigger window to get a good hit.
lastly, there's the additional latency incurred by network smoothing factor. it's probably really small, but it is purely beneficial to you. your own movements are unaffected, but EVERYBODY else's movements are slightly delayed. this again, gives you more opportunity to hit, without making you vulnerable in any way.
so basically, i don't entirely agree with the video, in that you should match your network smoothing factor to your latency: it's more beneficial to turn it up to max at all the time.
hopefully my thought process is interesting and of benefit. like i said, feel free to correct me on my reasoning, especially if you know more on this topic than i do.