Showing posts with label BF3 Hit Detection. Show all posts
Showing posts with label BF3 Hit Detection. Show all posts
Friday, October 28, 2011
Thank You, DICE
Thank you, DICE. You actually did it. You actually fixed a lot of the bugs from beta, including the netcode for hit registration. It feels as if you improved the hit detection from BC2. A solid improvement on your most anticipated game ever.
BF3 is not just a game, its a visual and acoustic thrill ride. The maps are visually stunning, making it difficult to remember that it's graphic art and not an interactive film of some sort. The sounds are convincing, the bullet tracers at night are a spectacle, and the water drops on your character's face make it feel as close to reality as possible. And those are just a few things that make this game win.
There are only a few more things to iron out, like the lag that is experienced on servers once they go above 40-50 players. The squad interface needs to be more clear: the join button is not obvious, but masked when it appears. Just to name a couple. Quite frankly, I'm having a hard time thinking of any more, because I'm so impressed with how the game performs now.
Labels:
BF3 Hit Detection
Monday, October 17, 2011
BF3 Hit Detection Part 3: Responses from DICE Part 1
Response on October 6th, 2011 by HBrun, "Top 10 Battlefield 3 Open Beta issues and how we are addressing them"
Response on October 11, 2011 by Lars Gustavsson in a Gamespy interview entitled, "Battlefield 3 Beta Interview" by Bennet Ring:10. Why is the hit detection seemingly different from Battlefield: Bad Company 2?The netcode is one of the many things that we are testing as part of the Open Beta and is not necessarily reflective of the final retail game. The DICE team appreciates and has heard the feedback you’ve provided and is further optimizing online play.
We've done a lot of tweaking and tuning, everyone needs to understand that the beta was early code. Everything from hit detection to damage, flashlights that people have been mentioning – a lot of the issues that people have raised have already been fixed.Response by Arthur Gles from joystiq.com on October 10, 2011 from his experience playing the closer-to-final build of BF3 in "The Beta and Battlefield 3":
As it stands now, Battlefield 3's beta is a wellspring of misinformation about what your final Battlefield 3 experience will be. I'm glad for that – I enjoyed what I've played of this more-final build of Battlefield 3 much more than any time I've spent with the game throughout the year. DICE and EA told me last week that they've been taking player feedback from the beta into account, though I have a hard time comprehending how they could make such sweeping changes based entirely on player feedback.David Stellmack reiterates Ring's comments from the Gamespy interview in his article, "Beta BF3 bugs swatted, according to DICE"
Lars Gustavsson, has been telling everyone who will listen that the beta does not represent what they will see when the code is released.Stellmack further notes:
While DICE has admitted that the beta did uncover some new things, DICE has apparently put a significant amount of energy into planning the post-launch support for the game. This is an area when many Battlefield fans feel that DICE has previously fallen down over the years.This is some encouraging news, since DICE has a reputation of abandoning their titles to launch new ones. For this reason alone I may rethink cancelling my BF3 pre-order, because this would mean that intend to further fix bugs as they become apparent (i.e. hit detection improvements).
Labels:
BF3 Hit Detection
BF3 Hit Detection Part 2: Client vs. Server-Side Collision Reporting
After visiting quite a few forums, it seems there is a common question being asked in regards to BF3's client-side hit detection, "What is the difference between server-side and client-side hit detection?" So, I figured I'd do some reading and take a stab at answering.
Server-side hit detection is where one, authoritative server decides whether or not a hit has registered. The server knows the exact location of each player and is responsible for processing the bulk of the gaming logic. Since the client is behind the server in time, a server-side system requires the player to predict enemy movements and therefore lead targets when firing.
A client-side model allows the player's client to determine whether or not hits have registered. This allows the player to shoot at what he sees, instead of leading a target. Client-side hit registration, however, is more susceptible to hacks and cheats as the server is depending on the honesty of the client. Most games use a modification of the two, allowing the client to report hits, while the server polices the data reported from the clients.
Client side hit detection is also effected by lag compensation methods, such as interpolation and extrapolation.
Interpolation is where the client operating in a buffered state (slightly in the past). The client receives updates in intervals from the server and fills in the gaps, so to speak, in between the intervals. This prevents jerky movements from point A to B, providing a smoother graphical experience. The problem with this method is that where a player sees an object on his screen is not necessarily where it is on the server, making objects more difficult to hit.
Extrapolation is where the client predicts the location of an object. This works well with ballistics, but with player movements it can be far from accurate, as players do not move in a deterministic fashion.
The main problem with hit detection is that what the player sees happening and what the server sees happening will always be out of sync by the time it takes for the data to transmit from the client to the server. This video does an excellent job demonstrating this discrepancy.
So, should the game determine hits based on what the server sees or what the player sees? Some ways to rectify this are as follows:
No! Let me figure it out.
Allow the players to do the predictions themselves by leading their targets. Problem with this is the lower ping players will generally see lagging players first and have a time advantage when responding.
Yes! I want to shoot at what I see!
Rewinding time by using time stamps from client data, the server compares the data and decides whether a hit should be registered. This allows the players to shoot at what they see, instead of having to lead their targets to compensate for lag. The effects of this can be seen when a player runs behind cover and then dies because the server is adjusting for the lag of the shooter. It can also be seen when a shooter registers a kill after a player has run behind cover.
Yes! My connection sucks but I still want to play!
Extrapolation allows the client to compensate for its lag and extrapolate the location of objects. The problem with this method is that, as noted before, players do not move in a ballistic or linear fashion. Often, players make erratic movements. The effects of this method can be seen when a player gets shot and killed before exiting a doorway or before breaking cover.
It appears to me that BF3 does a combination of rewinding time and extrapolating depending on the player's latency (???). The effects of both can be seen in the video below. It is also important to note that in the BF3 beta hit damage is increased on moving players. DICE has promised that this will be corrected in their final release.
Sources:
1. Lag (online gaming), Wikipedia.
2. Bernier, Yahn. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization, Valve.
Labels:
BF3 Hit Detection
Sunday, October 16, 2011
BF3 Hit Detection Part 1: Good Grief, Someone Fix This
Battlefield 3 has yet to be released officially, and yet it has already turned my gleeful anticipation into frustration and disgust. BF3 is the game that I have been waiting for, a game that delivers a full scale war experience. There is no other game I want to play, but after playing the beta, it has become a source of frustration and disappointment, like many of today's children are to their parents.
Allow me to begin by saying, I'm not a programmer or an expert on net-code. However, I have played 7 DICE online multiplayer shooters for a total of over 2200 hours in the last few years, and that says a few things about me:
(1) my social life is little to non-existent,
(2) I have a lot of free time, and
(3) I have a depth of experience to draw from in my analysis.
It would be presumptuous on my part to tell the decision makers at DICE how to make their game, but what I CAN tell them is whether or not their current system is working and how their product performs from a player's perspective. After all, the end goal of their product is to produce a favorable experience to as many players as possible.
Now to the willfully ignorant BF fan boys whose lame excuse to this issue is, "It's the beta, dude, they're going to fix it," go watch reruns of Bevis and Butthead or Southpark, or better yet, go watch Dragonball Z: Evolution, they're more your speed.
My experience with BF3 after playing both Metro and Caspian maps was that the game has engaging features, amazing graphics and animations only to be ruined by faulty hit detection. Wait, before you say it was lag, allow me to say:
1. I chose servers that were low ping and close proximity to my physical location,
2. My internet connection is A rated on speedtest.net with little or no packet loss and a low ping,
3. My computer specs are higher than the recommended (not minimum) requirements to run BF3.
So, the problem is not my connection or rig, and more than likely the problem is not the server. The problem is how BF3 calculates its collisions. There are several ways faulty hit detection can affect gameplay experience, which I will explain in more detail on my next post.
1. Dying before leaving cover,
2. Dying after hiding behind cover,
3. Dying before being notified of taking damage,
4. Shooting a target and no damage or reticule (x) is displayed or recorded,
5. Shooting a target and damage is displayed but not recorded
6. Having to shoot ahead of or behind a target to register damage
7. Shooting a target and the animation shows a hit, but no damage reticule is displayed
and no damage is recorded.
All of these symptoms occur with far too great of frequency in BF3 and are in desperate need of correction. So far DICE has offered little consulation that they have a remedy in place for launch. The only thing we have seen so far is a mere admission that there is a problem from DICE's creative manager, Lars Gustavsson, when he said, “And we’re tightening a lot of things up, too, like hit detection, which is a big thing for us right now.” (See article for more details).
The fact that there were problems in beta is not what concerns me, nor is it the reason why I cancelled my pre-order. It's DICE's response to the problem and their failure to demonstrate a solution that urks me.
Next post: Client Side vs. Server Side Hit Detection.
Allow me to begin by saying, I'm not a programmer or an expert on net-code. However, I have played 7 DICE online multiplayer shooters for a total of over 2200 hours in the last few years, and that says a few things about me:
(1) my social life is little to non-existent,
(2) I have a lot of free time, and
(3) I have a depth of experience to draw from in my analysis.
It would be presumptuous on my part to tell the decision makers at DICE how to make their game, but what I CAN tell them is whether or not their current system is working and how their product performs from a player's perspective. After all, the end goal of their product is to produce a favorable experience to as many players as possible.
Now to the willfully ignorant BF fan boys whose lame excuse to this issue is, "It's the beta, dude, they're going to fix it," go watch reruns of Bevis and Butthead or Southpark, or better yet, go watch Dragonball Z: Evolution, they're more your speed.
My experience with BF3 after playing both Metro and Caspian maps was that the game has engaging features, amazing graphics and animations only to be ruined by faulty hit detection. Wait, before you say it was lag, allow me to say:
1. I chose servers that were low ping and close proximity to my physical location,
2. My internet connection is A rated on speedtest.net with little or no packet loss and a low ping,
3. My computer specs are higher than the recommended (not minimum) requirements to run BF3.
So, the problem is not my connection or rig, and more than likely the problem is not the server. The problem is how BF3 calculates its collisions. There are several ways faulty hit detection can affect gameplay experience, which I will explain in more detail on my next post.
1. Dying before leaving cover,
2. Dying after hiding behind cover,
3. Dying before being notified of taking damage,
4. Shooting a target and no damage or reticule (x) is displayed or recorded,
5. Shooting a target and damage is displayed but not recorded
6. Having to shoot ahead of or behind a target to register damage
7. Shooting a target and the animation shows a hit, but no damage reticule is displayed
and no damage is recorded.
All of these symptoms occur with far too great of frequency in BF3 and are in desperate need of correction. So far DICE has offered little consulation that they have a remedy in place for launch. The only thing we have seen so far is a mere admission that there is a problem from DICE's creative manager, Lars Gustavsson, when he said, “And we’re tightening a lot of things up, too, like hit detection, which is a big thing for us right now.” (See article for more details).
The fact that there were problems in beta is not what concerns me, nor is it the reason why I cancelled my pre-order. It's DICE's response to the problem and their failure to demonstrate a solution that urks me.
Next post: Client Side vs. Server Side Hit Detection.
Labels:
BF3 Hit Detection
Subscribe to:
Posts (Atom)