В этой теме будут даваться, которые помогут улучшить производительность игры на вашем компьютере.
Сетевые настройки.
Три основные сетевые переменные это rate, cl_cmdrate, cl_updaterate.
Я заметил, что у всех игроков на сервере стоят неправильные значения этих переменных.
В подавляющем большинстве случаев эти значения занижены:
cl_cmdrate 20
cl_updaterate 10
Для того, чтобы посмотреть свои текущие значения этих переменных, откройте консоль, введите их название и нажмите Enter. Например:
cl_cmdrate
В консоли появиться вот такая надпись:
"cl_cmdrate" = "50" ( def. "30" ) min. 10.000000 max. 100.000000 archive
- Max number of command packets sent to server per second
50 это текущее значение, 30 это значение по умолчанию, т.е. стандартное заначение, 10 это минимальное значение и 100 это максимально возможное значение этой переменной.
Подобным образом можно посмотреть значение любой пременной, а количество их исчесляеться сотнями.
Как изменить значение переменной.
Открываете консоль, пишите название пременной, её значение и жмите Enter. Например:
cl_cmdrate 50 (не забывая про пробел между буквами и цифрами).
Затем проверяете, изменилось ли значение данной переменной, как написано выше.
Обновлённая и дополненная заметка из цикла полезных советов ( новый autoexec.cfg в аттаче).
В ней мы рассмотрим оптимизацию графики в CS:Source для повышения fps. Fps расшифровываеться, как frames per second (кадров в секунду).
Чем больше кадров в секунду прорисовываеться на вашем мониторе, тем
быстрее вы можете оценить окружающую обстановку и отреагировать на
её изменение.
Для комфортной игры значение fps не должно опускаться менее 50. Вполне достаточным можно признать значения от 50 до 100 кадров в секунду. Fps ниже 30 являеться практически неиграбельным для жанра онлайновых шутеров.
Посмотреть, какое именно значение имееться у вас во время игры, можно
выставив значение переменной cl_showfps в еденицу. В консоли:
cl_showfps 1
Другим вариантом для просмотра кол-ва fps являеться включение так называемого сетевого монитора. В консоли:
net_graph 1
Появиться он в правом нижнем углу, где среди прочей информации будет так же и счётчик fps.
ОПЦИИ ЗАПУСКА
Source engine имеет некоторые параметры командной строки, которые могут дать значительный прирост производительности.
Опции запуска могут добавлены следующим образом:
Правым кликом на ярлыке запуска (который находиться на рабочем столе) вызываете меню в котором выбираете самую нижнюю строчку Свойства. В появившемся окне в поле Объект добавляете необходимые значения.
Первое значение это -dxlevel, которое устанавливает уровень DirectX с которым запускаеться игра. Вы можете обнаружить, что значение ниже того, которое на самом деле поддерживает ваша видеокарта, может увеличивать производительность (fps). Например видеокарта, котоая поддерживает DirectX 9.0 на аппаратном уровне, может работать значительно быстрее в режиме DirectX 8.0.
Ниже представлены возможные варианты:
-dxlevel 90 для DirectX 9
-dxlevel 81 для DirectX 8.1
-dxlevel 80 для DirectX 8
-dxlevel 70 для DirectX 7
Следующее значение это -heapsize, которое устанавливает особый размер ОЗУ (оперативной памяти), выделяемой под игру. Увеличение выделяемой памяти может значительно увеличить производительность. Важно правильно указывать кол-во выделяемой памяти. Очень большие значения равно, как и очень маленькие могут привести к снижению производительности. Рекомендуеться указывать половину от общего числа вашей оперативной памяти. Ниже даны рекомендуемые значения:
Для систем с 512MB : -heapsize 262144
Для систем с 1GB : -heapsize 524288
Для систем с 2GB : -heapsize 1048576
В результате строка запуска должна выглядеть примерно так:
G:\Counter-Strike_Source\cssource.exe -dxlevel 80 -heapsize 262144
или так:
G:\Counter-Strike_Source\hl2.exe -steam -game cstrike -dxlevel 80 -heapsize 262144
лично у меня:
"D:\Program Files\Steam\Steam.exe" -applaunch 240 -dxlevel 90 -heapsize 1048576 -w 1280 -h 800Настройки в самой игре.
Собственно здесь всё очень просто.
Запускаем игру, заходим в Options и выбираем закладку Video. Выставляем значение Resolution - 800х600. В этом меню так же находиться кнопка Adjust brightness level, нажав которую можно отрегулировать уровень яркости.
Далее жмём кнопку Advanced и попадаем в меню расширенных настроек графики. В этом меню нужно выставить все значения в Low.
Пару слов о пункте Wait for vertical sinc.
В нём можно включить или выключить вертикальную синхронизацию частоты выдаваемой видеокартой с частотой обновления монитора.
Если Wait for vertical sinc в положении Enabled (включен), то fps у вас не будет подниматься выше того значения, которое выставлено в Свойствах экарана.
Иногда отключение этой функции (Disabled) может давать негативный эффект в виде плывущих горизонтальных полос по экрану.
Так же, если вы имеете встроенный звук на материнской плате, то возможно имеет смысл понизить качество звука на закладке Audio.
Нижеприведённые скриншоты помогут вам определиться, что и как нужно сделать.
Следующим шагом в борьбе за fps будет настройка конфига.
Вот, что следует сделать.
Скачать приаттаченный внизу файл (в архиве) autoexec.cfg.
Распаковать архив и поместить этот файл в папку:
с вашей игрой\cstrike\cfg\
Настройки в этом файле сделаны с учётом баланса между качеством картинки и производительностью, т.е. графику совсем уж убогой они не делают.
Вот и всё. Далее запустить игру, зайти на сервер и смотреть на сколько
увеличился fps.
P.S. Настройки в меню даны для слабых компьютеров. Вы можете изменять их по своему вкусу, ориентируясь по всё тому же значению fps в игре.
В борьбе за повышение кол-ва fps важна каждая мелочь. Поэтому, если у вас слабый компьютер, то нежелательны эти две дополнительные модели.
Движок позволяет отключить все лишние модели игроков переменной cl_minmodels. У вас будет так же, как и раньше по одному игроку за каждую команду. В добавок вы можете указать, какая именно модель из двух будет отображаться у каждой команды (Т и СТ). Это можно зделать переменными cl_min_ct и cl_min_t.
Если вы хотите задействовать ограничение кол-ва отображаемых моделей в игре, то нужно прописать в консоли (или добавить в конфиг) последовательно следующие переменные:
cl_minmodels 1
cl_min_ct 1
cl_min_t 1
============================
cl_minmodels 1 или 0 // 0- откл.; 1- вкл. ограничение кол-ва моделей
cl_min_ct 1 или 2 // -- 1 - SEALS 2 - GIGN
cl_min_t 1 или 2 // -- 1 - Phoenix 2 - Guerilla
P.S. Данные переменные уже добавлены в файл autoexec.cfg (см. предыдущий пост)
Некоторые игроки сталкиваються с ситуацией, когда при каждом запуске CS: Source приходиться по новой выставлять все настройки в опциях видео. Естественно, что это приносит некоторые неудобства. Как же от них избавиться?
Дело в том, что традиционно в движке игры имееться консоль, которая содержит массу всевозможных команд и переменных.
Вот с помощью этих переменных и можно указать игре, какие настройки она должна использовать при запуске. А для этого всего лишь необходимо указать в тестовом файлике нужные значения нужных переменных.
Файлик, который игра считает родным и считывает из него информацию при каждом запуске игры, называеться autoexec.bat. Обратите внимание на ключевое словосочетание "при каждом запуске игры", т.е. нужные нам настройки будут устанвливаться автоматически каждый раз, когда вы запускаете игру.
Поэтому следует создать такой файл в папке cstrike\cfg или же добавить
нижеуказанные переменные в этот файл в том случае, если вы используете autoexec.cfg о котором можно прочитать немногим выше.
Но сначала пару слов о том, как запускать CS: Source с нужным вам разрешением экрана. Для этого надо добавить в строку запуска одно из значений:
-w 640 -h 480
-w 800 -h 600
-w 1024 -h 768
-w 1280 -h 1024
Опции запуска могут быть добавлены следующим образом:
Правым кликом на ярлыке запуска (который находиться на рабочем столе) вызываете меню в котором выбираете самую нижнюю строчку Свойства. В появившемся окне в поле Объект добавляете необходимые значения.
В результате строка запуска должна выглядеть примерно так:
G:\Counter-Strike_Source\hl2.exe -steam -game cstrike -w 1024 -h 768
Вернёмся к настройкам видео.
Как вы уже могли догадаться настройки эти можно производить путём кликанья мышки в меню настроек или же указав нужные переменные в файле autoexec.bat.
Ниже дана картинка на которой каждому пункту настроек присвоен номер, а ещё ниже дана расшифровка, какие переменные и их значения за какие настройки отвечают.
Adjust brightness levels (Настройка уровня яркости)
mat_monitorgamma 1.6 - максимальная яркость (соответствует крайнему левому положению ползунка)
mat_monitorgamma 2.6 - минимальная яркость (соответствует крайнему правому положению ползунка)
Регулируеться с шагом 0.1, т.е. 1.6,1.7,1.8...2.4,2.5,2.6
1. Model Detail (Детализация моделей)
r_rootlod - значения от 0(макс.) до 7(мин.)
r_rootlod 0 - High
r_rootlod 1 - Medium
r_rootlod 2 - Low (при значениях 3-7 кач-во моделей понижаеться ещё больше)
2. Textur Detail (Детализация текстур)
mat_picmip - значения от 0(макс.) до 4(мин.)
mat_picmip 0 - High
mat_picmip 1 - Medium
mat_picmip 2 - Low (при значениях 3-4 кач-во текстур понижаеться ещё больше)
3. Shader Detail (Шейдеры)
mat_reducefillrate 0 - High
mat_reducefillrate 1 - Low
4. Water Detail (Отражения в воде)
r_waterforceexpensive 0 - Simple reflection
r_waterforceexpensive 1 - Reflect All
r_waterforcereflectentities 1 + r_waterforceexpensive 1 - Reflect All
r_waterforcereflectentities 0 + r_waterforceexpensive 1 - Reflect world
5. Shadow Detail (Прорисовка теней)
r_shadowrendertotexture 1 - High
r_shadowrendertotexture 0 - Low
r_shadowrendertotexture 0 + r_shadows 0 - тени выключены вообще
6. Color Correction (Коррекция гаммы)*
mat_colorcorrection 1 - Enabled
mat_colorcorrection 0 - Disabled
7. Antialising Mode (Антиализинг- сглаживание лесенок(гребенки) на границах текстур)*
mat_antialias 0 - None (выключено)
mat_antialias 2 - 2X
mat_antialias 4 - 4X
8. Filtering mode (Анизотропная фильтрация)*
mat_forceaniso 0 - Bilinear/Trilinear (см. ниже)
mat_forceaniso 2 - 2X
mat_forceaniso 4 - 4X
mat_forceaniso 8 - 8X
mat_forceaniso 16 - 16X
mat_forceaniso 0 + mat_trilinear 1 - Trilinear (трилинейная фильтрация)
mat_forceaniso 0 + mat_trilinear 0 - Bilinear (билинейная фильтрация - самая простая)
9. Wait for vertical sync (Вертикальная синхронизация)
mat_vsync 0 - Disabled (для владельцев ЭЛТ мониторов)
mat_vsync 1 - Enabled (для владельцев LCD/TFT мониторов)
10. High Dynamic Range (HDR)*
mat_hdr_level 0 - None (выключено)
mat_hdr_level 1 - bloom
mat_hdr_level 2 - full HDR
* Этим значком помечены настройки, которые стоит держать на минимуме
и увеличивать только в том случае, если вы обладаете современной, мощной видеокартой.
Ну и напоследок примерный список переменных и их значений (вы выставляете те значения, которые нужны вам, отталкиваясь от мощности вашего компьютера и видеокарты в частности):
mat_monitorgamma 1.7
r_rootlod 1
mat_picmip 1
mat_reducefillrate 1
r_waterforceexpensive 0
r_waterforcereflectentities 0
r_shadowrendertotexture 0
mat_colorcorrection 0
mat_antialias 0
mat_forceaniso 0
mat_trilinear 0
mat_vsync 0
mat_hdr_level 0
Ещё раз напомню, что эти настройки нужно добавить в файл autoexec.cfg.
Для начала стоит упомянуть о вопросе, которым возможно задавались многие из вас.
Почему в таблице результатов (по TAB) у меня пинг имеет одно значение, а в net_graph другое? Здесь нет никакого противоречия потому, что в таблице результатов отображается латенси (latency), а в net_graph пинг (ping), которые измеряются в миллисекундах (ms/мс; 1000 миллисекунд = 1 секунда):
1. Пинг показывает время прохождения сетевого пакета от компьютере игрока до сервера и ОБРАТНО
2. Латенси показывает время прохождения сетевого пакета только в ОДНУ сторону - от компьютера игрока до сервера
Далее давайте рассмотрим так называемые рейты.
Под это определение можно подвести три основные клиентские переменные - rate, cl_updaterate и cl_cmdrate.
Изменяя рейты вы скорее всего не сможете понизить свой пинг, а вот лаги могут быть устранены.
Rate - это так сказать ограничитель канала. Этой переменной игрок сообщает серверу о пропускной способности своего канала связи. Измеряется в байтах в секунду, т.е. например rate 20000 равняется 20 кб/сек. К слову канал 128 кбит/сек даёт максимум 16 кб/сек. Из этого следует, что для такого канала rate 20000 это много (максимум 15000/лучше не более 12000), а вот для 256 кбит/сек 20000 уже можно считать нормально. Важно выставить эту переменную в правильное значение для вашего интернет канала! Если что-то идёт не так не стесняйтесь уменьшать.
Для нормального канала значение rate можно ставить от 20000 и выше, но опять же не превышая его максимальную пропускную способность.
В принципе rate можно выставить один раз и больше его не трогать. Далее по тексту рейты означают связку сl_cmdrate/сl_updaterate.
Cl_updaterate - эта переменная задаёт частоту отсылки обновлений о состоянии игрового мира (см. ниже tickrate) от сервера к компьютеру игрока. Сюда входят перемещение других игроков, их стрельба и т.д.. Например Cl_updaterate 30 означает 30 обновлений в секунду. Отсюда следует, что, чем выше значение Cl_updaterate, тем более быстро и полно игрок получает информацию о ситуации на сервере.
Cl_cmdrate - эта переменная задаёт частоту отсылки данных от компьютера к серверу. Например вы нажали кнопку на клавиатуре или двинули мышью - создаётся снимок их текущего состояния и отправляется на сервер (который получив эту информацию, меняет вашу позицию на карте и отправляет эту обновлённую информацию другим игрокам (см. Cl_updaterate)). Увеличивая значение сl_cmdrate вы повышаете скорость вашего взаимодействия с игровым миром.
Важно понимать, что все эти три переменных тесно связаны между собой. Нельзя например выставить rate 3500, а сl_cmdrate/сl_updaterate в 100. Это не возымеет должного эффекта так, как задан слишком узкий канал для такой частоты обновлений. Более того неверные значения этих переменных могут стать причиной появления choke (см. ниже net_graph).
Прочитав о рейтах вы возможно подумали, что всё относительно просто. Так... да не совсем.
Дело в то, что на стороне сервера есть два фактора, которые определяют частоту обмена информацией с игроками:
Ограничение рейтов на сервере
На сервере существует механизм, который позволяет ограничивать максимальные и минимальные значения рейтов у игроков. Например, если на сервере выставлен maxupdaterate 60, то игрок может до усрачки выставлять у себя сl_updaterate 100, но реальное значение не будет выше 60. И обратный вариант, если на сервере выставлен minupdaterate 60, то игрок может делать у себя сl_updaterate 20 например, но реальное значение не уменьшится ниже 60. Оба варианта справедливы для rate и сl_cmdrate.
Tickrate
Сервер симулирует игровой мир в дискретные (состоящие из отдельных частей) промежутки времени, кототрые называются тиками (tick). То есть грубо говоря делаются моментальные снимки текущего положения дел на сервере (местоположение игроков, их стрельба, гранаты, объекты на карте). Затем эти снимки рассылаются игрокам, которые находятся на сервере. Частота получения этих снимков на стороне клиента регулируется переменной сl_updaterate.
На стороне сервера частота образования этих снимков (tickrate) также регулируется. По умолчанию для CSS tickrate равен 33 (для DoDs/TF2 66). Tickrate можно увеличивать до 66 или 100. Тем самым увеличивается точность симуляции игрового мира. Обратно стороной увеличения tickrate является увеличение же нагрузки на процессор (при 66 примерно в два раза/при 100 в три раза). Наверняка видели в названии многих серверов слова tick66 или tick100.
Так вот сервер не может отсылать игроку обновления игрового мира чаще, чем значение его tickrate. Иными словами нет смысла использовать на сервере tick66 значения сl_cmdrate/сl_updaterate равным 100 так, как сервер не сможет делать обновления чаще 66 раз в секунду. Точнее они могут быть выставлены в 100, но реальное их значение на таком сервере будет 66. Это очень хорошо можно проследить по net_graph.
Net_graph
Это самый популярный инструмент для измерения скорости и качества соединения с сервером, который даёт важную информацию.
На скриншоте приведён вариант net_graph 1.
1. Здесь отображается текущее значение FPS. Необходимо пояснить, если у вас слабый компьютер и средний fps менее 100, то значение сl_cmdrate/сl_updaterate желательно выставить соответсвенно этому fps. Если рейты будут выше, чем fps, то это способствует появлению choke. Сам же fps можно регулировать переменной max_fps (осмелюсь рекомендовать max_fps в пределах 100-150; для слабого компьютера можно и 60 поставить).
Ещё один момент относительно vsync (вертикальной синхронизации). Владельцам TFT мониторов рекомендуется включать vsync во избежания эффекта плывущих по экрану полос. Но при этом нужно знать, что cl_cmdrate не поднимается выше частоты обновления монитора (fps). Если частота 60, то и cl_cmdrate будет 60.
2. Показывает ваш пинг
3. Показывает размер в байтах последнего входящего/исходящего (in/out) пакетов
4. Показывает среднее значение входящего/исходящего траффика (килобайт в секунду)
5. Показывает текущее кол-во обновлений (пакетов) в секунду поступающее от сервера (cl_updaterate) и отправляемых на сервер (cl_cmdrate)
6. loss - показывает кол-во пакетов не дошедших до сервера (потерянных пакетов). Это важный пункт так, как появление loss означает, что часть информации с вашего компьютера не доходит до сервера. Нормальное значение loss равно нулю. Возможно в какие-то моменты там скажем до 5. Но если значение loss постоянно выше нуля, то это повод заняться выяснением причин. Возможно это результат грубой ошибки в рейтах. Или жунжо попинговать ip сервера и посмотреть теряются ли пакеты. Если есть потеря пакетов, то причина этого скорее всего находится где-то на пути между вашим компьютером и сервером.
7. choke - показывает кол-во сброшенных сервером пакетов. Сервер сбрасывает пакет данных если его посылка приведёт к превышению заданной клиентом полосы пропускания. Это наверное самый важный пункт. Сброшенный пакет это недошедшая по назначению информация, результатом которой является "плохая стрельба" или по другому плохая регистрация попаданий. Choke оборачивается тем, что вы не получаете верной информации о местоположении противника и продолжаете стрелять в никуда. В результате вы можете быть убиты так и не попав ни разу в противника.
Нормальное значение choke равно нулю. Допускается его поднятие до 10-20 в начале и конце раунда. Если choke есть только на некторых "тяжёлых" картах или при активных перестрелках с участием нескольких игроков в поле вашего зрения (такое может быть и на маленьких картах), то рейты можно сделать чуть ниже. Если есть устойчивый choke, то нужно понижать рейты. Если низкий fps, то ставить значение рейтов равным fps или ниже его.
Хочется упомянуть о серверах tick100.
Логично использовать на них значения сl_cmdrate/сl_updaterate в 100.
Но они не всем подходят. Во-первых не подходят игрокам с узким каналом - надо не менее 256 кбит/сек, а лучше от 512 кбит/сек. Думаю лишним будет говорить, что на время игры нужны выключить всякие закачки и p2p приложения, сетевое радио и т.д.!?
Во-вторых не подходят владельцам слабых компьютеров. Если fps у таких игроков менее 100, то они скорее всего не смогут полноценно играть. Это не значит, что игрок будет испытывать какие-то титанические трудности. Просто результативность игры будет ниже, чем могла бы быть. Здесь нужно либо ухудшать графику (в том числе с помощью конфига из вышерасположенного сообщения), либо приобретать более мощное железо.
Очень странно что тема никем необсуждалась ранее.
Добавлено спустя 6 минут 59 секунд: комментарии на русском, так что проблем возникнуть не должно... Экспериментируйте...