Ситуация «Что за бред! Я в него выпустил всю обойму!»:
«Вы
выбегаете из-за угла на врага, высаживаете в него всю обойму и
умираете. После чего открываете консоль и видите, что попали в него
всего дважды, не смотря на то, что выпустили в него всю обойму в упор.»
Объяснение: Такая
ситуация происходит (аналогично первому примеру) из-за задержки между
вещами, происходящими на сервере и вашим компьютером.
Главная
вещь, которую следует понять, это то, что вещи, которые происходят на
сервере, происходят раньше, чем у вас на компьютере – вашем клиенте.
Для облегчения понимания ситуации, условимся, что на обоих клиентах
лаги (пинг) одинаковые, так что не надо утруждаться и высчитывать
коррекцию между двумя машинами.
Итак, когда Игрок 1 подходит к
углу, то оба клиента (и Игрок 1 и Игрок 2) знают об этом, тут нет
задержек, у обоих синхронизированная информация. Выходя, оба начинают
стрелять. Теперь, из-за задержки (идет обмен информацией о выстрелах)
каждому, чтобы увидеть другого стреляющего клиента, потребуется 60
миллисекунд (вспомните первую ситуацию, так же и для отсылки
повреждений. Это значит, что за время пока дет обмен этой информацией,
вы сможете выстрелять кучу патронов. И если Ваш оппонент начал стрелять
на какую-то долю секунды раньше Вас (или даже если раньше, но он попал
Вам, скажем, в голову), и Вы уже возможно мертвы, но Ваш клиент не
знает еще пока об этом, ведь для этого надо 60 миллисекунд с момента
как Вы увидели врага! В итоге сервер просто игнорирует все Ваши
выстрелы, выпущенные до момента пока Вас не убили, и убивает Вас. А у
Вас создается иллюзия, что Вы выпустили целую обойму, перед тем как Вас
убил