Итак дадим классическое определение - fps (Frames Per Second) — количество кадров в секунду. Хотелось бы конечно уточнить, что за кадров и каких. С точки зрения движка дод и прочих связанных игр, fps имеется ввиду количество просчетов состояний игрового мира в секунду. Следует отличать fps сервера и fps клиента, c абсолютной точки зрения это одно и тоже. Если бы не ограничения оборудования на стороне клиента.

Сервера бывают 250, 500, 1000 фпс с точки зрения команды stats (в консоли), соответственно параметр который задает значение данных фпс - 300, 600, 1000 (+fps_max <число 300\600\1000> FPS сервера). По умолчанию сервер запускается с 250 фпс или +fps_max 300, что собственно одно и тоже. Как уже упоминалось для работы сервера с фпс 500-1000 нужно другое Linux ядро (так называемое Real Time), более мощный процессор, и более быстрый интернет. Собственно фпс сервера, это его способность просчитывать поступающие команды от клиентов положенное раз в секунду, но под нагрузкой может происходить снижение фпс и тем сильнее, чем больше клиентов и команд в виде рейтов приходит от клиента. Таки образом фпс зависит от количества клиентов и их рейтов, и обратно от мощности сервера. Для просмотра динамики фпс сервера есть ресурс http://www.fpsmeter.org.

Рассмотрим фпс с точки зрения клиента. Если взять мощную рабочую машину, которая способна дать нам фпс не хуже сервера и пропускной способности интернета не хуже сервера, мы увидим на экране (команда в консоли net_graph 1) одинаковое количесво фпс - близкое к значению на сервере и клиентской машине. И если убрать ограничения для клиентской машины (fps_max "1000") просчета графики, мы будем видеть реально положение дел с фпс. Например, если реальный фпс сервера 250, то и в net_gtaph мы увидим значение фпс не выше 250. Если фпс сервера проседает, то проседает и клиентский фпс. Но не наоборот, фпс сервера может быть 250, а у клиента может быть например фпс 40. При таком раскладе причину падения фпс надо искать на стороне клиента, это возникает когда по какой то причине ПК клиента не способен делать расчет игрового мира с такой же эффективностью как сервер. Возможные причины: слабый компьютер клиента, криво работающий антивирус, слабая видео карта, недостаток оперативной памяти и т.д. Фпс на стороне клиента никак не связан с частотой видеокарты, это лишь скорость просчета игровой ситуации комьютером.

Переходим к практическому использованю наших новых знаний. Например, что нужно сделать, чтобы получить хорошую регистрацию и хороший фпс? Самое интересное, что однозначного ответа не существует. Существует лишь оптимальное решение, которое зависит от существующих ограничений на стороне клиента и конкретного сервера. Попробуем обрисовать как у нас обстоят дела. Ставим себе рейты 60-60-30000, это значит что общаемся мы сервером 60 раз в секунду отправляем принимаем элементарных команд 30000. А вот если поставить 100-100-30000, что собственно изменится? Будем общаться 100 раз в секунду отправляя-принимая те же 30000 команд, но у нас в данном случае уменьшится размер отправляемого сетевого фрагмента. Что нам это дает? Если на пути к серверу у нас сетевые пакеты пропадают, есть лосы и чоки, то пропадание пакетов для нас будет не так чувствительно, как при рейтах с частотой 60. Увеличим до 100-100-60000, получаем увеличение размера отправляемого сетевого фрагмента, как следствие увеличение сетевого трафика, так как нам уже надо отправлять 60000 команд за то же самое время. Сервер, получая увеличеный поток команд, должен потратить свое время на их обработку. Если сервер не успевает их обрабатывать, происходит падение фпс на сервере и как следствие падение фпс на клиенте. Таким образом, очень много не хорошо, очень мало тоже не есть хорошо.

Только учитывая все свои возможности можно подобрать правильные параметы. Не факт что, эти параметры будут исправно работать на другом клиенте. Поэтому скептически относитеcь к настройкам конфигов других игроков, смело экспериментируйте и подбирайте параметры для своей комфортной игры.

П.с. Наиболее оптимальным на мой взгляд будет установка фпс на сторне клиента близкой по значению к фпс сервера: fps_max 300 (в консоли) для сервера 300 фпс. Это позволит  на стороне клиента получать  состояние близкое к состоянию на самом сервере. Как следствие уменьшение лагов, увеличение регистрации.

 

Обновлено (11.09.2011 18:13)