65 годовщина Победы!
Меню сайта
Меню клана


Категории раздела
Мои статьи [14]
Мини-чат
Наш опрос
Что у вас?
Всего ответов: 9
No
часы
CLaN
Наш Баннер

Друзья сайта
Моды CSS,Развлечение,игры
Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Мои статьи

Что такое 1000fps и почему это "пыль в глаза"?
В теории.
Все события на серверах CS:S или CS1.6 скалькулированы по кадрам. Все положения, направления и скорости в один и тот же дискретный момент времени собраны все в один кадр. Кадр здесь значит то же самое, что и статическая картинка в видеофильме, поставленном на паузу. Чем больше кадров в секунду рассчитывает сервер, тем более точные его данные. При 1000 ФПС (FPS - Frames Per Second - Кадров в секунду (пер. с английского)) сервер считывает "мир” (или "среду") на скорости один кадр в одну миллисекунду. При 100 ФПС сервер рассчитывает "мир” на скорости один кадр в 10 миллисекунд. Пока, на данном этапе, словосочетание "более точный" еще применимо к серверу … но только пока рассматривается один лишь сервер по себе. На практике же это оказывается бесполезно для клиента.

На практике.
Безусловно необходимо принимать так же во внимание и клиента (игрока). Сервер может рассчитывать свой "мир" на 1000 ФПС. Это всего-лишь одна миллисекунда на рассчитанный кадр. На другом конце провода игроки не получают обновления на такой большой скорости, а на скорости значительно ниже. Насколько они быстро могут получать обновления задается переменной tickrate ("тикрейт"). Обычно тикрейт может составлять 33, 66 или 100, для высокопроизводительных серверов. Сервер замораживает свой "мир" на каждый "тик", а затем решает какому клиенту эту картинку передать. Но сервер не посылает всю имеющуюся у него информацию. Он посылает только изменения к последнему обновлению среды. Величина параметра "тикрейт" определяет как часто данные об обновлении среды будут посылаться игрокам. Таким образом, клиент получает только 100 кадров за одну секунду при тикрейте сервера, равным 100. С другой стороны, клиент тоже посылает команды. Здесь тикрейт опять определяет как часто сервер будет получать кадры или команды от клиентов. Это опять будет только 100 команд или кадров в одну секунду.

Вот в этом месте, как раз и рушатся «воздушные замки». Зачем серверу просчитывать свою среду каждую миллисекунду, если он получает команды от игроков только раз в 10 миллисекунд!? Все серверы просчитывают свою среду со старыми на 90% данными все время. Если еще взять в расчет различные задержки, которые влияют на скорость, с которой клиенты посылают команды на сервер, и то, что сервер сервер ставит эти команды потом в очередь, 500, 600 или тем более 1000 ФПС на сервере не имеет абсолютно никакого смысла. Сервер работает с данными, которые уже устарели на 50, а то и более, миллисекунд. В это время много могло измениться, в том числе и некоторые входные данные на стороне игрока (например движение мышкой). Поэтому сервер должен прогнозировать события - он должен угадать что игрок собирается сделать в следующий момент. Этот прогноз может сильно отличаться от тех движений, которые игрок на самом деле совершает … с точностью до 1000 кадров в секунду. Не важно какой именно ФПС на сервере — 333 или 1000! Неправильный прогноз так и будет неправильным прогнозом. При 1000 ФПС прогноз только становится «более точно неправильным».

Вы можете задать вопрос - "Но что если сервер делает правильный прогноз?” Действительно, если сервер правильно предсказывает положение игрока, то это лучше — но только для сервера! Никак не для клиента. Оба движка, как для CS:S так и для CS1.6 запрограммированы с предположением о том, что серверное и клиентское время синхронизированы. Серверное время определяет время у всех клиентов. Поэтому сервер сохраняет так называемое «время кадра» для каждого сделанного кадра. На хороших Linux (или Windows 2008) серверах он делает это раз в миллисекунду. Клиент использует время кадра, которое он получает для каждого обновления, как свое собственное. На 1000 ФПС сервере с тикрейтом 100 игрок должен получать обновления в которых время кадра различается на 10 миллисекунд. Даже если сервер определил положение игрока корректно, 1-ой или 2-ух миллисекунд задержки во времени получения пакета от сервера к клиенту достаточно, чтобы данные «устарели». Итак опять, не важно какой ФПС на сервере - 333 или 1000. Более того, задержки как правило бывают значительно больше чем 1 или 2 миллисекунды (как правило, от 10 до 30), если игрок сидит не в серверной комнате ;).

Некоторые могут сказать - "Но ведь сервер учитывает задержки при прогнозировании!” Опять они окажутся правы. Сервер действительно учитывает задержки клиента при составлении прогноза. Чтобы сосчитать задержки правильно, серверу необходим пакет с командой от клиента. Эта величина определяется только после получения от клиента целого ряда пакетов с командами, а только потом включается в серверные вычисления. Но даже подсчет среднего значения задержки делает такой расчет не точным, даже если сервер пытается считать это среднее значение более тщательно. И опять никакой разницы между 333 и 1000 ФПС.

Некоторые игроки думают, что если у себя в конфиге пропишут cl_cmdrate 100, cl_updaterate 100 и rate 30000, то получат именно это от сервера. Это опять не верно. И в CS:S и в CS1.6 сервер имеет большую власть. Это значит при любых условиях только сервер решает как много обновлений он посылает и как много команд он получает. Может быть клиент и декларирует получение 100 кадров, а на самом деле сервер посылает только 90 кадров в секунду. Здесь 1000 ФПС опять не продуктивен. Если сервер под большой нагрузкой и он не может считать со скоростью 1000 кадров в секунду, тогда он решает отдавать меньше обновлений и принимать меньше команд, чтобы «разгрузиться» и высчитывать максимально ФПС для себя, так как в движке запрограммирована цель достижения уровня ФПС. Это важно, так как движки и Source и Half-Life 1 считают кадры. Нет кадра — нет расчета и нет обновлений. Движки будут стараться «вырабатывать» установленный уровень ФПС и, просто-напросто, будут сбрасывать все команды от клиента и к клиенту, если это будет необходимо для разгрузки сервера. Вот почему в таком случае сервер с 333 ФПС будет даже более точным, чем сервер которому «приказали» держать 500 или 1000 ФПС все время - точно так же как некоторые хостеры «приказывают» своим серверам держать 1000 ФПС.

Заключение:
Не важно задано на сервере 333 или 500 или даже 1000 ФПС. Все эти скорости обновлений делают сервер достаточно быстрым. Куда более важно то, что сервер стоит в хорошем ЦОДе с хорошим подключением к сети Интернет и то как сервер достигает заданных ФПС (хорошее оборудование). Только программное обеспечение от компании Valve может сделать регистрацию попаданий более точной, улучшая алгоритмы, ответственные за прогнозирование, экстраполяцию и интерполяцию, таким образом делая прогнозы более точными.

Не позволяйте себя одурачивать заявлениями о сервере с "1000 ФПС”. Не позволяйте никому заставлять Вас играть на сервере с 1000 ФПС в матчах или кланварах, потому что он, якобы, лучше. Это только маркетинговый ход - не больше и не меньше!
Категория: Мои статьи | Добавил: Foggy_Fight (07.04.2012)
Просмотров: 647 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Информация
Клан на время закрыт!
Мини профиль
Личных сообщений:
Вы вошли как: Гость
IP : 18.190.253.56
Гости
Днюха:
Ты тут: Дня(ей)
Пол:
Профиль ЛС Выход
Статистика Cw
Победы (52)

Поражение (0)


Ничья (1)

Счета
Наши интернет кошельки


410011338225121



R201261961323

Календарь
Топ файловиков
AnDryHa
63
Foggy_Fight
2
антип
0
Aninew
0
startsmart
0
lexa1995
0
Beliar
0
HeroOFL0ve
0
wwwsasan86
0
KoIvI@P
0

 

RIP BY css-no-steam.ucoz.org © 2012 |   Копирование материалов с сайта возможно только с указанием прямой ссылки на css-no-steam.ucoz.org! С уважением by AL5#