Повышение FPS, боремся с лагами

Company of Heroes 24 · 113 ratings6.7k views183 favorites16 min readRussianby DREDNOUT_571Updated Jun 20View on Steam ↗

средний fps и расход ресурсов

Сначала нужно собрать информацию, сколько и каких ресурсов потребляет система и игра.
Ставим MSI Afterburner, сайт: https://www.msi.com/Landing/afterburner/graphics-cards
В ее состав входит Riva tunner Statistic server. Это настраиваемая программа, которая выводит в виде оверлея поверх приложения информацию о ресурсах вашей системы(загруженность памяти, температура, частоты, и.т.д.)

Гайдов по настройке достаточно на youtobe. https://www.youtube.com/watch?v=kn1Qa56iSQ8

Бенчмарк от разработчиков

не имитирует боевую обстановку, а нужен тот который имитирует. Идем в режим зрителя. Находим бой 4х4 на самой лагучей карте(Эссенские заводы или Летний Ситтард), наблюдаем за боем и смотрим средний фпс.

Настройка системы

Эти настройки повысят производительность на любой системе.

Настройки Nvidia:
(Как у амд не знаю. У них должно быть всё то же самое, только называется по другому.)
1) Жмём Пуск, в поисковике находим панель управления Nvidia
2) Управление параметрами 3D->Программные настройки.
3) Находим СОН2 в выпадающем списке.

4) Меняем флажки как написано далее:

Анизатропная фильтрация - x16
Вертикальный синхроимпульс(или вертикальная синхронизация) - ВЫКЛ
Заранее подготовленные кадры виртуальной реальности - 1
Макс частота кадров - 60 (или 144 под герцовку монитора)
Потоковая оптимизация - ВЫКЛ
Тройная буферизация - ВЫКЛ
Фильтрация текстур — анизотропная оптимизация по выборке - ВКЛ
Фильтрация текстур - отрицательное отклонение УД - Привязка (или block)

Режим низкой задержки - ВКЛ

отключаем "полезности" от microsoft: - будет полезно всем
Заходим в шестеренку

Идем в раздел "Игры"
Гейм бар - выкл
Запись в фоновом режиме - ВЫКЛ
Игровой режим - вкл
Теперь идем в "Экран"
Применять прозрачность виндовс - выкл

Выставляем файл подкачки: - если у вас менее 16гб Если у вас меньше 16гб, нужно выставить подкачку, если 16+ пропускаем пункт.
СОН использует 10гб памяти, вин10-2гб, вин11 и того больше.
1) Win+R
2) Вводим SystemPropertiesAdvanced
3) Быстродействие->Параметры->Дополнительно->Виртуальная память->Изменить.
4) Выставляем файл подкачки на самый быстрый диск
Алгоритм определения таков: Минимальный размер должен быть в 2 раза больше чем объём ОЗУ, а максимальный в 2 раза больше чем минимальный.
4096 Mb оперативной памяти, - оптимальный размер файла подкачки от 8192-16384 Mb;
8 Гб оперативной памяти, - оптимальный размер файла подкачки от 16000-32000 Mb;
16 Гб оперативной памяти (и больше), - чаще всего, без файла подкачки, но некоторые приложения его требуют, поставим символический 8192-16384 Mb.

5) Жмём "задать" и перезагружаемся.

Ниже, в этом разделе приведены настройки для совсем слабых пк до 16 года. Если пк новее 16года, не тратьте время.

Чистка автозагрузки: - будет полезно всем, кто давно не менял ОС
1) Win+R
2) Вводим resmon (Там есть справка по использованию)
3) Ресмоном смотрим какие пользовательские приложения больше всего жрут.
4) Жмём на клве Win+r
5) В строчку вводим msconfig
6) Переходим в раздел "автозагрузка"

4) Снимаем галочки с всего что вам ИЗВЕСТНО, и не нужно при старте ОС и во время игры (НЕ СНИМИТЕ ЛИШНЕГО!)

Отключаем оверлеи Steam и Discord(если процессор меньше 4ГГц):
А как вы думали, они тоже жрут ресурсы.
1) В стиме Steam->Настройки->В игре, снимаем галку с "Оверлей стим в игре".
2) Дискорд-> Настройки пользователя->Игровой оверлей. Выключаем.
В идеале, если вы играете соло, то лучше будет выйти из дискорда. В простое он хавает ~5%, но при минимальном голосовом обмене начинает грузить цп от 10 до 20%. Я говорю не про свой дряхлый комп, а про нормальные конфигурации(гуглите эту тему). Скорей всего, чтобы минимизировать нагрузку на сервера, дискорд использует какой то упоротый кодек, чтобы сжимать передаваемый голос до минимума. Если вы играете с другом, попросите его поменьше ипздеть)) Как вариант, можно запустить диск на телефоне, или сменить переговорник на встроенный переговорник steam.

Настройки электропитания: - если ноутбук
1) Жмём на клве Win+r
2) В строчку вводим powercfg.cpl
3) В открывшемся окне выставляем "сбалансированный", или "макс. производительность"

Антивирус/защитник
1) Если стоит антивирус, озаботьтесь тем, чтобы он обновлялся по расписанию, когда мы НЕ играем, но не отключайте полностью.

Телеметрия Microsoft ОС:
Последние операционки Майкрософт стали грешить кучей ненужных служб типа кортаны, отправкой чего то куда то, и.т.д. Отключите телеметрию и лишние службы в вашей ОС, и высвободите немного ЦП. В интернете полно гайдов, перепечатывать их сюда, и приводить полный порядок действий, список служб не буду. НЕ ОТКЛЮЧИТЕ ЛИШНЕГО.

Манипуляции с клиентом COH

Параметры запуска COH:
1) Идём в Steam Company Of Heroes 2-> Свойства-> Общие



Прописываем параметры запуска в строчку:
-nomovies - нет вступительных роликов
-novsync - отвязать fps от частоты обновления вашего монитора. Этот параметр нужен!
-refresh 60 - ограничить лимит кадров/сек
-notriplebuffer - убирает необходимость видеокарте держать в памяти один дополнительный кадр «про запас». Без этого параметра курсор и скроллинг в игре начинает казаться тяжелым и «ватным».
-notexturestreaming - заставляет игру загружать все текстуры в видеопамять сразу при старте матча, а не подгружать их «на лету» в процессе боя. У вас должно быть 4+ гб видеопамяти.
-window -fullwindow -lockmouse - полноэкранный режим в окне.

ИТОГО(скопировать-вставить):
-nomovies -novsync -notexturestreaming -notriplebuffer -window -fullwindow -lockmouse

Отключаем деморекорд(если у вас система стоит не на nvme 3g/sec):
Было замечено, что при деморекорде идет обращение к диску.
Заходим C:\Users\Admin1\Documents\My Games\Company of Heroes 2
Папка playback правой кнопкой-> свойства-> безопасность -> изменить

Запрещаем запись в папку поставив галочку как на скрине. Теперь COH не сможет записывать реплеи т.к. не имеет доступа к папке.

Как делаю я: Т.к. у меня компани стоит на nvme а система на hdd, я переадресовываю расположение playback и logfiles в RAMдиск который у меня создан через cmd командой mklink. Вы можете для этих нужд создать отдельный рамдиск на 50-100мб. Как это делать не буду расписывать, инфы по cmd достаточно.

Важная мелочь
В настройках стоит отключить не исторические раскраски. Это должно уменьшить расход ОЗУ и время загрузки боя. Также, все моды на рескин дополнительно висят в памяти. Если у вас 8гб и меньше лучше будет от них отписаться.

Настройка конфига


Разработчики сделали меню, где объединили несколько настроек в одну. Это не дает настраивать нужные настройки отдельно от других, будем делать это через конфиг.

Идём в : C:\Users\Admin1\Documents\My Games\Company of Heroes 2
Находим файл configuration_system.lua
Открываем блокнотом, видим около 50 параметров состоящих из 3х строчек каждый:

setting = "window", - сам параметр
value = 0, - его переменная, с помощью которой делается регулировка.
valueType = 1, - не трогаем

Вот тут выкладываю свой конфиг https://pastebin.com/9cDKWRix
Можете выставить в него свое разрешение, количество кадров равное герцовке монитора, и попробовать с ним запуститься. Если что то не так, можете поробовать настроить свой на основе моего.
Теперь по самим параметрам. Будут идти по порядку, от более важных к менее важным:

effectsdensity(0-3) - плотность эффектов. При изменении визуально ничего не меняется, но КРИТИЧЕСКИ влияет на ЦП.

effectsfidelity(0-3) - Разрешение текстуры эффекта и длительность самого эффекта (огня, дыма, и.т.д). КРИТИЧЕСКИ влияет на ЦП.
0 - минимум 3 - максимум

physics(0-3) - рагдолы убитых солдат и разлет всяких частиц от подбитых танков и зданий. Критически влияет на ЦП. Если 0, то упавшие объекты исчезают касаясь земли.

snowdetail(0-3) - Каждый шаг каждого пехотинца на зимней карте заставляет процессор пересчитывать деформацию сетки снега. Нагружает ЦП.

modeldetail (0-511) - Радиус окружности(центром которой является камера игрока), за пределами которой перестают отрисовываться объекты мира. Если Alt повернуть камеру набок, и полететь в перёд, увидите как на параметре 0 появляются и исчезают объекты. Можно смело ставить 0, т.к. при нормальном положении камеры это никак не влияет, но очень сильно разгружает ГП и ЦП. Вы можете заметить разницу, только если используете мод на отдаление камеры.

antialiasing(0-3) - на этом движке старый тяжелый алгоритм сглаживания создает дополнительный поток команд (Draw Calls) от процессора к видеокарте. Отключаем сглаживание в конфиге, но добавляем внешнее сглаживание в панели Nvidia.

modelanimationdetail (Внимание: 2- минимум 0 - максимум, тут всё наоборот) - отвечает за частоту обновления (рейт) и сложность скелетной анимации моделей С минимальным значением 3, при близком рассмотрении анимации могут быть с едва заметной механичностью, но значительно разгружает ЦП.

soundreverb (0-2) - объемный звук и эхо. На нуле звуки становятся более плоскими и «сухими», разгружает ЦП.

soundfrequency (44100, 22050) - На низких значениях звук режется по высоким частотам, становится слегка глуховатым (как из старого радио). должно строго совпадать с настройками вашей звуковой карты

raindetail - детализация дождя. Обрабатывается на видеокарте, но косвенно влияет на ЦП, т.к. генерирует брызги при падении. А это уже объект.

showunitocclusion(0-1) - когда юнит забегает за дом, рисуется обводка его силуэта. В теории создает мелкую паразитную нагрузку на ЦП, но не критично.

Почти не влияющие в спойлере:
shadows(0-3) Тени. Обсчитывается на видеокарте.

texturedetail (Внимание: 3- минимум 0 - максимум, тут всё наоборот) - качество всех текстур мира. Обсчитывается на видеокарте. Если лагов нет, поднимайте качество.
0 - у вас 32гб озу, >5гб видеопамяти (не дает значительного улучшения картинки)
1 - у вас >20 гб озу >4гб видеопамяти (оптимально)
2 - у вас 16гб озу и 2-4 видеопамяти
3 - все остальные

ambocclquality(0-2) - создание реалистичных мягких теней в местах стыков объектов, складках местности, углах зданий и под гусеницами танков. Критически влияет на видеокарту

shrubsdetail - детализация деревьев и кустарников(возможно кол-во веток на деревьях, или что то такое) Разницы не заметил. Ставьте 0, нет влияния на картинку.

shaderquality(0-2) - карты рельефа и доп источники света. Без них всё выглядит плоским, а с ними поверхности выглядят рельефными и шероховатыми. Считается на видеокарте. Требует уточнения. На пресете LOW и ULTRA почему то 0. Пока ставим 0.

terraindetail(0-3) - Уровень детализации местности. Количество травы, кустов, мелких объектов и разрешение текстуры земли. Эта настройка привязана к texturedetail. terraindetail всегда должен стоять 3. Используйте texturedetail чтобы изменять качество текстур.

postprocessing(0-1) - глубина резкости, блюр, цветокор, блюм, считается на видеокарте.

graphicsquality(0-5) - эта настройка меняет пачку настроек, оставляем как есть.


Закрываем, сохраняем, ставим на файл "только чтение", загружаем повтор, и тестируем.
===========================================================================
Если не поставить "только чтение" или попытаться сменить настройки через игру, они СЛЕТЯТ. Таким образом, чтобы редактировать конфиг блокнотом, нужно каждый раз ставить и снимать галочку.
===========================================================================

Подключаем VULCAN и многопоточность

В COH2 всего один отрисовщик: дх11. Есть более современный отрисовщик AMD Vulcan. Чтобы включить в игре вулкан, разработчики игры должны прописать поддержку, и дать такую возможность в меню игры, чего в компани нет.

На Гитхабе есть фикс, который добавляет поддержку вулкана вместо DX11, путем подмены файлов в клиенте. Гораздо более значительный профит по fps получат именно обладатели карт AMD, но и на картах Nvidia уменьшатся рывки, статоры и будет некоторый прирост. Вы можете одновременно подключить один из модов, либо ReShade либо Vulcan потому что оба способа используют файл d3dx11!


график показывает что после статора возврат к нормальному фпс происходит быстрее

Как установить вулкан?
1) идем по ссылке на гитхаб: https://gitlab.com/Ph42oN/dxvk-gplasync/-/blob/main/releases/dxvk-gplasync-v2.7-1.tar.gz?ref_type=heads
2) качаем файл dxvk-gplasync-v2.7-1.tar.gz
3) Т.к. это архив, извлекаем его винраром через "открыть с помощью".
4) в папке x64 нам нужно 2 файла d3d11.dll и dxgi.dll
5) перемещаем эти 2 файла в папку с компани ...\steamapps\common\Company of Heroes 2

6) В папке с COH2 создаем файл dxvk.conf Чтобы сделать расширение файла CONF вместо TXT, включите отображение формата файлов:


Пишем в него строчки:
dxvk.enableAsync = true
dxvk.asyncPresent = true
dxvk.numCompilerThreads=4


7) Заходм Steam->Настройки->Загрузки потоковая оптимизация шейдеров(или кеш шейдеров) для Vulcan - вкл

8) После входа в игру видим что отрисовщик стал вулкан:

9) заходим меню->параметры->графика и прогоняем тест:

10) Выходим из игры, и смотрим в файл RelicCoH2_dxgi.log, который должен появиться. Если там появились строчки:
info: dxvk.numCompilerThreads = 4
info: dxvk.asyncPresent = true
info: dxvk.enableAsync = true

Значит всё сделано правильно. Если что то не получается, более подробная информация по настройке этого мода ТУТ: https://github.com/doitsujin/dxvk

Сначала может показаться что ничего особо не изменилось. Но нужно сыграть несколько игр с разными фракциями на поле боя, чтобы вулкан единожды перекешировал все шейдеры. Когда выходит новый не кешированный юнит, пк может призадуматься. Самый простой способ быстро всё откешировать, запустить рейплей 4х4 для всех фракций, или режим зрителя. Желательно активно двигать камерой, во все уголки карты. Если у вас достаточно мощный ЦП, вы даже не заметите процесса кеширования. Если вы играете на новой некешированной карте(в частности из мастерской), в начале катки могут быть просадки, пока не откешируется весь ландшафт карты.

У вас обязательно должны быть выключены режим низкой задержки, вертикальная синхронизация и тройная буферизация. Они мешают вулкану, проверьте ещё раз.

9) Удаление происходит в обратном порядке

Косвенные способы повышения FPS

1) Не играть 4х4
2) Добавить в исключения поиска самые лагучие карты.
3) Избегать карт с мостами, и карт где идет долбежка в какую то одну точку интереса.
4) Избегать карт-мясных коридоров
5) Изьегать летних карт с пыльным ландшафтом. Каждое поднятое с земли облачко пыли просчитывается как отдельный объект. Когда 8 армий начинает бегать по карте, они генерируют много этих облачков. Любые взрывы на пыльном ландшафте тоже поднимают пыль, которая долго висит в воздухе.
6) Ломайте корпуса техники. Они генерируют дым. Это ещё халявный опыт для экипажей машин.
7) Можно замаскировать лаги ограничением fps.
Если после всех манипуляций мы наблюдаем картину, что в начале катки у нас 60 кадров, а в середине и конце 50 с просадкой до 40, делаем следующее:
Идем в параметры запуска в steam, и убираем параметр -refresh 60
Идём опять в панель nvidia.
Там находим параметр:
Макс частота кадров - ставим 50

Не знаю кто как, но я начинаю видеть как неразрывную картинку изображение с частотой в 50 кадров. По дефолту у нас стоит 60, перепад с 60 до 45 вы сразу видите. Если поставить 50, глазу сложнее заметить разницу в перепадах с 60 до 45 кадров. Картинка просто будет получаться чуть плавнее, но есстессна в более низком фреймрейте. Если вы на 50 начинаете видеть разрывы между кадрами, поставьте 55.

Что я планирую для ПВЕ:
1) Сделать wincondition мод который снижает прирост боеприпасов, увеличивает откат абилок на 33%(можно будет выбрать%). Всё просто: меньше боеприпасов и дольше откат абилок - меньше эффектов.
2) Поэкспериментирую с модом, который увеличивает длительность перезарядки и пропорционально точность всех юнитов на 33%(можно будет выбрать%). Юниты будут стрелять реже но точнее, а значит генерировать меньше эффектов(в частности танки, минометы, пто). Просто сократится количество бессмысленной пальбы в никуда.
3) Распаковать стандартные карты, в редакторе заменить пыльный ландшафт на непыльный. Убрать эффекты пыли, дыма и горения от всяких разрушенных построек. Эти фпс-френдли копии карт можно будет использовать только в своем бою против ИИ. Для пвп проблему с пылью никак не решить, т.к. клиент проверяет контрольную сумму архивов.
Если что то из этого получится, ссылки будут тут же. Готов послушать идеи.

Fix HPET

Читать только если у вас LGA2011, 2011-3, 1155, 1150, 1151, AM3/AM3+

Движкам игр нужен таймер для того, чтобы понимать, сколько времени прошло между кадрами, и правильно рассчитывать скорость движения объектов, анимацию и физику.
Игры, созданные в период с 2005 по 2018 год, используют старые методы замера дельты времени, которые постоянно спамят запросами к таймеру Windows.
По умолчанию Windows сама решает, какой аппаратный таймер использовать для этой функции. Если в BIOS материнской платы включен HPET (High Precision Event Timer), операционная система часто переводит игру на него.

В чём проблема HPET: Это физический чип-таймер, распаянный на самой материнской плате (внутри южного моста). Когда ядро цп хочет узнать время, оно вынуждено делать внешний запрос через системную шину к этому чипу, ждать ответа и возвращаться назад. Иногда ответ идет долго, и получается статор.

Если вы отключаете HPET, Windows принудительно переводит всю систему и игру на встроенный таймер самого процессора — TSC (Time Stamp Counter). Почему же Windows не использует TSC, раз он такая имба? Это сделано для перестраховки, чтобы банкоматы и медицинские серверы на старых процессорах 20-летней давности, где нет TSC не обращались в пустоту. А я напоминаю, платформы 2011 и 2011-3 на которых многие сидят, это как раз перепил с серверных плат.

Microsoft на самом деле указали это разработчикам игр. В официальной документации MSDN для функции QueryPerformanceCounter написано: для замера времени в играх нужно использовать TSC, и начиная с Windows 10 система сама старается переводить его на TSC процессора, если это возможно. Но если на материнке есть чип HPET, и движок старый, для совместимости предпочтение отдается ему.

Перевод с HPET на TSC работает не на всех платах, а только где он есть: LGA2011, 2011-3, 1155, 1150, 1151, AM3/AM3+
Где то он даже вредит, поэтому я не буду давать прямых инструкций как это делать, спрашивайте у ИИ надо ли это на вашей конкретной платформе, и как это делать. (Делать это не сложно, просто команда для windows в терминале.)

Если у вашего ЦП малая по современным меркам частота на ядро, любая игра, которая сильно нагружает основной поток, выигрывает от отключения HPET. Это также может помочь: Conan Exiles, серия Battlefield, Stalker все оригинальные части, Escape from Tarkov, DayZ и Arma 3.

Лаги связанные с сетью

Если проблем с сетью нет, не тратьте время. Это не слишком относится к делу, решил не удалять а просто поместить в спойлер.

Лаги на стороне сервера
Стоит ознакомиться вот с этой статьей целиком:
https://help.relic.com/hc/en-us/articles/36080656057363-CoH-2-Network-Connection-Troubleshooting

Я лично наблюдал 2 проблемы:
Первая, это когда в главном меню не получается подключиться к серверу с профилем, и загрузить прогресс, награды, кол-во манет, и.т.д.
Нужно пройти по ссылке на реликовский сервис проверки доступности серверов: https://coh2-lobby.reliclink.com/gam...on/checkstatus
Если вас перебросило на страницу где написано "OK" значит всё ок.
Если страница недоступна, значит значит либо релики остановили сервер, либо надо открыть на роутере TCP port 443
Проверить доступность любым сервисом проверки доступности портов.

Вторая, это когда заходишь в лобби, и вверху в списке серверов указано например EU -1 вместо пинга.


С помощью сервисов проверить доступность к этому адресу 54.209.64.161 Если он не доступен ниоткуда, значит релики остановили сервера, либо ваш провайдер попал под блокировку CloudFlare на, котором находятся сервера.
Также это может быть из за закрытых портов. Откройте на роутере диапазон портов TCP Ports: 27015 – 27030
Проверить доступность этих портов любым сервисом проверки доступности портов.

Возможные лаги на стороне клиента
Помимо лагов сервера могут быть лаги на стороне сети клиента. Если в матче всё на долго зависает, а потом сильно ускоряется на секунду, и частые "выкидыши" из матча нужно проделать следующие действия:
1) проверить потерю пакетов:
Жмем Win+R вводим cmd
В консоль вводим ping -n 100 8.8.8.8
ждем 10 минут, и нажимаем Ctrl+C - появится статистика потери пакетов. Если он 1% или меньше, тогда всё в порядке.
2) потрогать роутер. Если он очень горячий, и у вас кто то фоном всё время смотрит 4к видео, роутер нужно заменить на более пропускной.
3) Если пк подключен к роутеру по Wi-Fi, подключиться через кабель, это решит половину проблем.
4) В прошивке роутера настроить плановую перезагрузку в 4 часа утра раз в 3 дня.

Улучшеная графика на картах RTX

Для тех у кого без всяких конфигов и фиксов fps 100+, можно добавить постпроцессинг средствами ReShade. Постобработка - это любые изменения изображения после его рендеринга. ReShade - это надстройка на DX11.
1) https://reshade.me/
2) Выбираем Download ReShade х.х.х, ту которая без аддонов.

3) Сдедуем инструкциям установщика, если он спросит где компани - показываем, если спросит какой DX, указываем 10+, никакие галочки не ставим и не снимаем.
4) В игре нажимаем Home
5) Открывается панель, в ней выбираем AMD FidelityFX, Luma Sharpen, HDR, FXAA(если выбираем FXAA через ReShade, лучше отключить игровое сглаживание через конфиг)

6) Удаление происходит в обратном порядке. Запускаем установщик ReShade, выбираем папку компани, и выбираем пункт "Удалить".

ВЫ ДЕЛАЕТЕ ВСЁ ЭТО НА СВОЙ СТРАХ И РИСК!

Заключение

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

Отписывайтесь о использовании. Потом буду корректировать и дополнять.
Добавляйтесь в стиме, можем вместе покатать.

This guide was created by its original author on the Steam Community. Are you the author and want it removed? Request removal.