Original Post — Direct link

I thought it was just me, but it's not. Upon looking through my captures of "weird" gunfights, I've noticed a consistent issue- prediction errors are present in every single clip. For the unaware, this error is indicated by one of the four red icons in the top right corner of the screen. I wanted to see if it was just me, so I took to Twitch to see if any other players were getting this error during gunfights. Every single streamer I viewed was getting this icon/error during every in-close gunfight. Then, I looked at some clips posted on this subreddit. Again, that icon was present in those as well. It often goes unnoticed because you're obviously not going to be looking at the corner of your screen during a fight, so I figured I would draw attention to it.

We are literally playing a game that is currently rewarding randomness and not skill. This is a HUGE issue that needs to be brought to light and corrected. Capture your next gunfight or have a look around on Twitch, I almost guarantee you that it will be present. It's f*cking with the entire core functionality of the game.

External link →
over 5 years ago - /u/thezilch - Direct link

Originally posted by AlcatorSK

Prediction Error

Basically, the servers distribute information about all players and their actions to all connected players of a match. But it takes a while for the data to reach each player, so in the meantime, the client machines "predict" what each of those other players is going to do. if [enemy] is running in a straight line, it's very likely that they will keep running in a straight line, so your machine can animate [enemy] running even if it doesn't know where [enemy] is.

However, if the server has difficulty providing enough updates at high enough speed, your machine will be "starved" of information and realize it is very likely going to draw enemies in wrong positions. For instance, if the server cannot push packets every 50 ms for whatever reason, but only every 150 ms, that's a lot of time during which enemies are routinely going to change direction or do something unexpected. This makes it harder to hit enemies, because you are firing at "predicted" positions, but your shot will be evaluated by the server against their actual position.

The symbol for Prediction Error is 2 dotted lines (3 dots on each), with the second line being shifted against the first, illustrative of how the game displays an enemy at different position from where they actually are (think footsteps in snow).

Packet Loss

Server distributes information about players' actions in packets. Each packet is numbered. Your machine receives these packets, but they are distributed using an internet protocol that doesn't require your machine to confirm receiving each packet, nor does that protocol re-send packets that your machine never received. So, if your machine notices that it received packets 37, 38, 42, 43, 44, 48, 49... it will realize that several packets were lost, and will indicate such using the packet loss symbol (three squares, with the middle one being "partially missing")

Correction edit: Replaced original numerical values with ones which are more appropriate for Apex Legends.

You're not describing prediction. Apex predicts only your clients actions and nothing more. You are describing extrapolation.

You fire your gun. Your client predicts it can fire [you're not dead yet], the shot's trajectory [you weren't dead when firing, nor shot and had no flinch], and hits a target / sprays blood from flesh [you weren't dead, no flinch, and trajectory intersected target from last server-snapshot's interpolation]. All of these -- your client's actions -- are predicted.

Where can mispredictions occur in the above?

  1. You died before firing; you will have mispredicted a shot coming out of your gun.
  2. You were shot before firing and could be in the middle of a flinch; you will mispredict your shot's trajectory.
  3. Some other moving object intersects your shot's trajectory (eg. teammate or deployable).
  4. Any of the above can cause hit FX (eg. blood / audio) to predict wrong.

When you shoot, it follows its trajectory, and hits. All of that is predicted. Everything else is taking snapshots from the server and interpolating any positions, angles, etc changes other entities take between snapshots. When you shoot, the server is sent a timestamp that the server can roll back to [a snapshot] and run the same routines your client ran when predicting yourself and interpolating between snapshots. Of course, that's a very simplified description, and there have been bugs fixed in getting the client / server to agree on animation poses, cycles, etc to have their interpolation match exactly.

Of note, not just your shots are predicted. Your movement, interactions (eg. opening doors, looting, etc), and more are predicted. Again, not true for anything else; that would be extrapolation. So, for example, you might mispredict your movement if being hit (eg. by bullets or ordnance that slow or impulse). Or you might have predicted looting something, only for the server to authoritatively tell you someone next to you sent their click first.