Новый Киберспортивный проект приветствует вас! На нашем проекте Afree.at.ua - имеется множество файлов для мега-популярной среди молодёжи игры Counter-Strike 1.6. Читы, патчи, steam программы, карты, тактики - это ещё не полный список тех файлов, что есть на нашем Киберспортивном проекте! Смотрите мувики CS 1.6, находите нужные вам конфиги, скачивайте готовые сервера, ищите патчи CS 1.6 для своих версий Counter-Strike 1.6. Множество различных модов в, интерестных программ, изменённые модели всех оружий, боты на любой вкус и цвет - только на нашем сайте. Ждём вас ещё на нашем Киберспортивном проекте!
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню
Сounter Strike
Скачать CStrike
Юзербары CStrike
Меню для CStrike
Готовые сервера
Модели игроков
Модели оружия
HLTV Демки
Программы
Плагины
Логотипы
Античиты
Прицелы
Выстрелы
Взрывы
Радары
Кровь
Карты
Патчи
Моды
Боты
Звуки и Музыка
Чат
Голосование
Как вам проект Action Free?
Архив
Результаты
Опрос на форуме
Всего голосовало: 570
Баннер
Киберспортивный проект - Action Free




Счетчики
Информер тиц pr
Главная » Статьи » Статьи » Материалы

Что такое PING и с чем его едят?

Ниже описаны три ситуации, которые я сейчас поясню. 
Вы выходите из-за угла стены/ящика и тут же быстро уходите назад. Вы не видите врага, но при этом получаете повреждения.
Вы выбегаете из-за угла на врага, высаживаете в него всю обойму и умираете. После чего открываете консоль и видите, что попали в него всего дважды, не смотря на то, что выпустили в него всю обойму в упор.
Вы стреляетесь с врагом, попадаете - видите, что на его теле и вокруг есть кровь, но в итоге попадание не были зарегистрированы и враг не получил ни одного повреждения.
Я потратил на тесты около недели, чтобы понять, почему случаются такие ситуации и являются ли они ошибками Valve. Описанные ниже заключения и наблюдения, к которым я пришел на протяжении недельного теста игры, я постараюсь изложить в максимально доступной форме для обыкновенного читателя.

Итак, для начала несколько определений:
Latency (ping) – пинг - временной промежуток, за который пакет, отосланный от вашего компьютера проходит до сервера (и наоборот). В миллисекундах
Server - Сервер – Выделенный сервер в Интернете, расположенный на каком-нибудь компьютере.
Client Клиент – Игра, запущенная на вашем компьютере. Клиент подключается к Серверу. На сервере может выставляться количество возможных подключаемых клиентов.
Shot Trajectory - Траектория выстрела – Линия между концом дула вашего оружия и местом, куда попала ваша пуля.
Hitbox – Хитбокс – модели игроков в Counter-Strike: Source поделены на так называемые Хитбоксы (hitboxes), которые блокируют различные участки моделей. В одной моделе существует множество хитбоксов . Если выстрелить в хитбокс, то значение здоровья и броняи игрока уменьшается. 

Немного информации
На карте Ваша позиция у Вас на мониторе относительно вас же на сервере и вас же на экранах других клиентов никогда не будет одинаковой. Это происходит по причине задержки, из-за того, что Ваш компьютер отсылает серверу пакет с информацией о Вашем местоположении, сервер симулирует как бы кадр игры, обновляет у себя о Вас информацию, после чего отправляет информацию о Вас другим клиентам, а они получают и обновляют уже о Вас информацию у себя. Эта проблема в связке с тем, что у вас на экране все выглядит плавно, составляет неприятную картину.


Такая картина иногда видна в самой игре, зачастую приводя к недоумению игроков. 
1 Ситуация «Слайдшоу из хитбоксов»:
«Вы выходите из-за угла стены/ящика и тут же быстро уходите назад. Вы не видите врага ,но при этом вы получаете повреждение.»

Объяснение:
Чтобы объяснить причину такого поведения игры, мы должны принять во внимание все, что происходит на Вашем компьютере, на компьютере сервера и на компьютерах других игроков. 
Вещи, о которых Вам надо знать, перед тем, как я продолжу 
Фактические повреждения (ну или расположения хитбоксов, если так понятнее) просчитываются на стороне сервера. Но на стороне клиента также отслеживается положение хитбоксов, но чисто для визуализации (скажем, искры от пуль при поподании в броню, брызги крови из тела и тд.), но об этом мы подробнее поговорим, когда дойдем до третьей ситуации.
В идеале обмен пакетами происходит в течении 30 миллисекунд. Это то время за которое сервер успевает обновить информацию о Вас, а Вы – о сервере. Но на практике эта цифра в разы больше, судя по пингу.
Время, которое тратится клиентом и сервером на обработку полученной информации столь мало, что его даже не имеет смысла брать во внимание.
Проблема в данной ситуации наблюдается в случае, если происходит так называемая «коррекция задержек (лагов)», которая встроена в движок Source. Чтобы полностью понять, зачем это нужно, для начала мы посмотрим, что происходит с игрой, если нет никакой корректировки лагов.

0 миллисекунда (Сцена 1)
Игрок 1: резко выходит из-за угла, видит Игрока 2, который находится в неподвижном состоянии.
Сервер: Ничего не происходит (Пакет не успел еще дойти)
Игрок 2: Стоит и никого не наблюдает

30 миллисекунд (Сцена 2)
Игрок 1: Уходит обратно в укрытие.
Сервер: получает пакет с информацией из Сцены 1 о том, что Игрок 1 вышел из-за своего укрытия и отправляет эту информацию Игроку 2.
Игрок 2: Ничего не происходит (помните? Пакет идет 30 миллисекунд, как от игрока до сервера, так и наоборот).

60 миллисекунд (Сцена 3)
Игрок 1: у себя на компьютере он спрятался в своем укрытии.
Сервер: Получает пакет из Ситуации 3 с информацией о том, что Игрок 1 находится опять за укрытием (так что данные сервера и Игрока 1 синхронизированы) 
Игрок 2: Получает пакет с Ситуацией 1, видит Игрока 1, стреляет по нему, но естественно стреляет по пустому месту, так как игрок уже как 60 миллисекунд назад оказался опять в своем укрытии.

Давайте для наглядности рассмотрим такую визуальную схему

Ну и получается в итоге следующая картина: Сервер получает информацию о выстрелах Игрока 2 по Игроку 1, в то время как Игрок 1 находится уже совсем в другом месте, следовательно, повреждения от выстрелов не учитываются. Это не очень-то справедливо, по отношению к Игроку 2, так как он-то как раз видит в это время Игрока 1.

И вполне резонный вопрос возникает: как решать эту проблему? Движок Source делает следующее. А именно программа просчитывает траекторию выстрела Игрока 2 и переносит ее так, как будто он стрелял в реального Игрока 1, независимо от того, где последний находится сейчас.
Сервер высчитывает идеальное значение переноса траекторий выстрелов, основываясь на пинге всех игроков.

На картинке: красный хитбокс показывает нам, где находился клиент, когда я стрелял по нему. Синий же показывает, где находился клиент на сервере, когда тот (сервер) получил информацию о моих выстрелах . Обратите внимание на красный цельный кубик в красном хитбоксе. Это то место, куда попал мой выстрел у меня на клиенте. Синий же кубик в синем хитбоксе – это же место положения попадания от моего выстрела, но с поправкой на мой пинг. Но не исключено, что траектория выстрела на мониторах других игроков так и осталась старой. Сбивает с толку! 

Теперь рассмотрим Сцены с «коррекцией Пинга» 
0 миллисекунд (Сцена 1)
Игрок 1: резко выходит из-за угла, видит игрока 2, который находится в неподвижном состоянии. 
Сервер: Ничего не происходит (Пакет не успел дойти)
Игрок 2: Стоит и никого не наблюдает

30 миллисекунд (Сцена 2) 
Игрок 1: уходит обратно в укрытие
Сервер: получает пакет с информацией о сцене 1, Игрок 1 на открытом пространстве, но еще никто об этом не знает.
Игрок 2: Стоит и никого не наблюдает

60 миллисекунд (Сцена 3) 
Игрок 1: спрятался
Сервер: получает пакет с информацией о сцене 2 (то есть сервер синхронизируется с клиентом 1: и там и там игрок 1 сидит в укрытии)
Игрок 2: Игрок 2 получает пакет с информацией о Сцене 1, видит Игрока 1, стреляет по нему. Но при получении информации о выстрелах, сервер делает коррекцию относительно пинга Игрока 2 и отнимает здоровье у Игрока 1, который в это время уже, как мы сказали, находится в укрытии. Игрок 1 в недоумении.

Теперь ситуация становится более справедливой, несмотря на то что, Игрок 1 находился уже в укрытии, Игрок 2, заметив его, выстрелил, тем самым сервер насчитал первому повреждения. Проблема только в том, что Первый игрок получает повреждения уже после того, как высунулся, то есть уже в укрытии и по этому скорее всего он напишет что-то знакомое всем типа «как меня достали эти лаги!» =). Итак, «корректировка лагов» заключается в том, что у Игрока 2 появляется возможность наносить повреждения Игроку 1 не обращая внимания на задержки между тем, пока движется Игрок 1 и тем пока его не заметит Игрок 2. Неплохое начало.

Другая польза от коррекции лагов заключается в том, что теперь вам не надо вести прицел за целью, чтобы попасть по ней, и когда два игрока встречаются нос к носу, то игрок с более низким пингом не получает приемуществ.

Взглянем на эти скриншоты (полученные благодаря sv_showimpacts 1). На них показана разница между позициями игрока на сервере (синий хитбокс) и на клиенте (красный), и траектория выстрела, которая показана красным и синим кубиком. Обратим внимание – сервер откорректировал траекторию выстрела относительно врага.

Категория: Материалы | Добавил: Maklay (20.06.2009)
Просмотров: 1145 | Теги: Что такое PING и с чем его едят?
Что такое PING и с чем его едят?
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Профайл
Гость


Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!

Поиск
Статистика
Зарег на сайте:
Всего: 3784
Новых за месяц: 0
Новых за неделю: 0
Новых вчера: 0
Новых сегодня: 0
Из них: Парней: 3661
Девушек: 123
uCoz счетчик:
Онлайн:
Онлайн всего: 1
Спектаторов: 1
Пользователей: 0
Сегодня посетили:
|
Популярные новости

Навыки владения пистолетами в CS 1.6

Как отключить акселерацию в Windows 7

Киевский турнир Counter-Strike:Source - FUNLAN Tournament #1

Config для CS 1.6 за 2010 год

Превью игры War of the Vikings

Обзор игры Prime World

Репортаж с Arbalet Cup: СНГ

Интервью с GeT_RiGhT

Cs 1.6 war3FT 9.6 + боты

TeamSpeak3 Client

Counter-Strike v.1.6 (Version Pack 4)

Zombie Plague 4.3 + CSO

Counter-Strike 1.6 CD Key Generator

Ammo Packs!

Public server by Sm[ok]ers

Patch v29

~Just4Fun~.VS.SGO-AF

Готовый сервер Zombie Plague Mod 4.3 для CS 1.6 (+боты, +DM)

WES Cyber School

Полный FAQ по Counter Strike 1.6

RD Portal

|-Добро пожаловать-|-=Казань<-=->Сайт=-

Last Chaos

Троецарствие

Веселая ферма 3

Сокровища Монтесумы

Zbot patch by BeNNY BLaNCO v 1.1

logo10

Хостинг от uCoz | ForumSiteMap | SiteMap |