Проблемы и оптимизация

KF2: больше FPS на больших модовых серверах (KFEngine.ini)

Руководство собирает правки KFEngine.ini и параметры запуска для одной проблемы: низкий и нестабильный FPS на поздних волнах больших серверов Killing Floor 2 с множеством модов. Автор сообщает о росте примерно с 40 до 75 FPS на больших волнах на GTX 1080 с 8 ГБ. Результат зависит от процессора, видеопамяти, ОЗУ и нагрузки на сервер, поэтому проверяйте изменения по одному. Все правки рассчитаны на Ultra; на слабом ПК лучше снизить настройки графики в игре. См. также расширенную настройку FPS для первой части.

Все файлы лежат в Documents\My Games\KillingFloor2\KFGame\Config\. Сначала сделайте их копии.

Шаг 1: кэш текстур (PoolSize)

В KFEngine.ini, секция [TextureStreaming], измените PoolSize (исходно от 160 до 2000) под объём VRAM в мегабайтах:

VRAMPoolSize
2 ГБ1000
4 ГБ2000
6 ГБ3000
8 ГБ4000
10 ГБ5000 (максимум 6000)

Если появились подтормаживания, значение слишком велико - уменьшите его.

PoolSize в KFEngine.ini PoolSize в секции [TextureStreaming].

Шаг 2: пул стриминга

В [SystemSettings] добавьте r.Streaming.PoolSize=4000 (4000 подходит для 8 ГБ; масштабируйте под свою карту). Движок будет держать в памяти больше потоковых текстур.

r.Streaming.PoolSize Строка пула стриминга в [SystemSettings].

Шаги 1 и 2 самые важные; обычно одних их хватает для основного прироста.

Шаг 3: отключение лимитов стриминга

Добавьте в [SystemSettings], чтобы использованные текстуры оставались в памяти и меньше было подгрузок и фризов:

r.Streaming.FullyLoadUsedTextures=1
r.Streaming.HLODStrategy=2
r.Streaming.UseFixedPoolSize=1

Строки лимитов стриминга Настройки лимитов стриминга.

Шаг 4: дополнительные параметры

Только для карт от 6 ГБ VRAM. В [TextureStreaming]:

MemoryMargin=128
MemoryLoss=0
HysteresisLimit=40
DropMipLevelsLimit=16
StopIncreasingLimit=12
UsePriorityStreaming=True
UseTextureFileCache=True

Приоритетный стриминг сглаживает загрузку и убирает скачки памяти при большом пуле, особенно на HDD. Кэш текстур важен на HDD, на SSD даёт лишь небольшой плюс.

Секция TextureStreaming Блок [TextureStreaming].

В [SystemSettings] можно также добавить r.OneFrameThreadLag=0 и r.Streaming.DefragDynamicBounds=1 (часть параметров ваша версия может игнорировать, это безвредно).

Чтобы убрать микрофризы от теней, создайте секцию [MemoryPools], если её нет, и задайте оба значения под свой ПК:

FLightPrimitiveInteractionInitialBlockSize=2048
FModShadowRenderPrimitiveInteractionInitialBlockSize=2048

По умолчанию 512. Рекомендации: 1024 для слабого ПК (8 ГБ ОЗУ, GTX 960 и ниже), 2048 для среднего (16 ГБ, GTX 1060-1070), 4096 для мощного (32 ГБ, GTX 1080 / RTX 3060 и выше), 8192 для экстремального, но это почти бессмысленно.

Шаг 5: параметры запуска Steam

Щёлкните правой кнопкой по Killing Floor 2 в Steam, откройте Свойства и впишите в параметры запуска:

-USEALLAVAILABLECORES -PREFERPROCESSOR=1

Параметры запуска Steam Поле параметров запуска в свойствах игры.

Настройки CPU и физики

Улучшают работу потоков и уменьшают микролаги PhysX, не меняя графику.

  • [SystemSettings]: r.OneFrameThreadLag=0, r.FinishCurrentFrame=0, r.Streaming.NumStaticComponentsProcessedPerFrame=500, r.Streaming.NumDynamicComponentsProcessedPerFrame=200. Убирает задержку в один кадр между CPU и GPU, быстрее подгружает оружие и эффекты.
  • [Core.System]: bUseBackgroundLevelStreaming=False, bDisableLogging=True. Снижает фоновую подгрузку, лишнюю на SSD.
  • [Engine.Physics]: bPhysicsAsyncScene=True, bEnableAsyncScene=True, PhysXGpuHeapSize=128, PhysXMeshCacheSize=32. Асинхронная физика разгружает основной поток.
  • [Engine.Engine]: bSmoothFrameRate=True, MinSmoothedFrameRate=60, MaxSmoothedFrameRate=120, bUseVSync=False, bUseThreadedRendering=True, bUseThreadedUpdate=True.
  • [MemoryPools]: FParticleRenderDataPoolSize=1024, FPrimitiveSceneProxyPoolSize=2048. Меньше перераспределений памяти на больших волнах с обилием крови.

Защита от вылетов

Для долгих сессий (2+ часа), тяжёлых модовых карт и множества модов установите в [Core.System] нули:

MaxObjectsNotConsideredByGC=0
SizeOfPermanentObjectPool=0
StaleCacheDays=0
MaxStaleCacheSize=0
MaxOverallCacheSize=0
PackageSizeSoftLimit=0

Это не даёт копиться устаревшим объектам и кэшам, снижая число вылетов из-за переполнения памяти и фризов в модовом мультиплеере.

Память Core.System Параметры памяти Core.System, выставленные в ноль.

Дополнительные советы

  • Отключите логирование: bDisableLogging=True в [Core.Log], небольшой выигрыш.
  • Звук: в [Audio] задайте MaxChannels=64, UseEffectsProcessing=True, Use3DSound=True, TimeBetweenHWUpdates=15, bUseThreadedAudio=True.
  • Асинхронная подгрузка: в [Engine.Streaming] задайте s.MinBulkDataSizeForAsyncLoading=0 и s.AsyncLoadingThreadEnabled=True, чтобы ресурсы грузились в фоне.

Профиль автора и результаты

Конфигурация: i7-5820K, GTX 1080 8 ГБ, 32 ГБ ОЗУ, Ultra, кровь включена, NVIDIA Flex выключен. Ключевые значения: r.Streaming.PoolSize=3500 и PoolSize=3500, r.Streaming.UseFixedPoolSize=0, куча PhysX 256 и кэш мешей 64, r.ShadowQuality=3, r.MotionBlurQuality=0, r.MaxAnisotropy=8, блоки memory pools 2048 и нули в Core.System, логирование оставлено для диагностики падений. FPS на ультра-модовом сервере:

ВолныМин/МаксСреднее
0-2540/6055
26-3030/6045
31-3525/5030

Частые вопросы

  • Игра не запускается после правок. Удалите изменённые ini, они пересоздадутся с настройками по умолчанию.
  • FPS не вырос. Проверяйте по одному изменению и не ставьте пул больше, чем позволяет VRAM (для 4 ГБ не выше примерно 2000-2500).
  • Как проверить? F3 в игре или оверлей FPS в Steam.
  • Вернуть как было. Удалите KFEngine.ini, KFSystemSettings.ini и KFGame.ini в папке Config.
  • Модовые серверы и кастомные карты. Правки полезнее всего там, где много ZED и тяжёлые эффекты.

Вопросы и ответы

Какие настройки ini важнее всего для FPS в KF2?
Шаги 1 и 2: PoolSize в [TextureStreaming] и r.Streaming.PoolSize в [SystemSettings], подобранные под объём видеопамяти.
Что делать, если игра сломалась после правки ini?
Удалите изменённые ini в Documents\My Games\KillingFloor2\KFGame\Config. При запуске игра создаст их заново. Делайте резервные копии.
Могут ли за это забанить?
По словам автора, правки меняют только локальную конфигурацию и не затрагивают исполняемый файл и сетевые файлы.