Бинды и консоль

KF2 Tweaks and Improvements: полный гайд по ini (FPS, текстуры, gore)

Это одно из давних руководств по твикам Killing Floor 2, написанное в 2015 году и дополнявшееся до 2017-го. Его можно использовать как для повышения FPS, так и для красивой картинки: вы просто увеличиваете или уменьшаете значения и включаете или отключаете настройки в нескольких ini-файлах. Прочитайте каждый раздел целиком, прежде чем править файлы: ошибки могут сломать конфиг. Короткие списки твиков - здесь и в материале про texture streaming.

Перед началом

Не меняйте файлы DefaultXXX.ini. Они сбрасываются при каждом обновлении KF2, потому что игра считает, что что-то заменено, и Steam скачивает их заново. Правьте только пользовательские файлы в папке:

C:\Users\<ваше имя>\Documents\My Games\KillingFloor2\KFGame\Config

Если какой-то команды нет или производительность упала, удалите ini-файлы и дайте игре создать их заново. В руководстве правятся KFEngine.ini, KFGame.ini и KFSystemSettings.ini.

Снятие лимита FPS

В KFEngine.ini найдите bSmoothFrameRate и задайте:

bSmoothFrameRate=FALSE
MinSmoothedFrameRate=22
MaxSmoothedFrameRate=144
  • bSmoothFrameRate: FALSE - лимит снят.
  • MinSmoothedFrameRate: оставьте по умолчанию.
  • MaxSmoothedFrameRate: желаемый максимум, например 144 для монитора 144 Гц.

Эти строки встречаются в файле дважды - меняйте обе. Есть и третья настройка SmoothFrameRate в KFGame.ini; если кадры всё ещё ограничены, поменяйте и её. (В другом руководстве советуют оставлять TRUE для сетевой игры; проверьте, что работает у вас.)

PhysX Flex (только GeForce 970 и выше)

В KFSystemSettings.ini найдите FlexInvisibleFramesBeforeSleep:

FlexInvisibleFramesBeforeSleep=60
FlexDistanceBeforeSleep=1500.000000
AllowSPHFluidMipmap=True
FlexRigidBodiesCollisionAtHighLevel=False
  • FlexInvisibleFramesBeforeSleep: сколько невидимая жидкость или кровь живёт до исчезновения.
  • FlexDistanceBeforeSleep: расстояние, после которого жидкость перестаёт двигаться.
  • AllowSPHFluidMipmap: разрешить mipmap для жидкости.
  • FlexRigidBodiesCollisionAtHighLevel: части тел сталкиваются друг с другом.

PhysX Flex снова включён 14 апреля 2016 года и помечен разработчиками как Stable.

Качество звука и заикания

В KFEngine.ini, раздел [XAudio2.XAudio2Device]:

MaxChannels=32
CommonAudioPoolSize=0
  • MaxChannels: сколько звуков играет одновременно. 32 подходит почти любой карте; допустимо 16, 32, 48, 64, 96 и 128 (звуковая карта автора Asus Xonar Essence STX держит 128). При странных шумах уменьшите значение.
  • CommonAudioPoolSize: память под постоянно загруженные звуки (32, 64, 128 или 256). Предварительная буферизация может устранить заикание звука.

Качество теней

Применяйте, только если средний FPS в игре от 80. В KFSystemSettings.ini найдите по одной эти записи:

MaxShadowResolution=1024
MaxWholeSceneDominantShadowResolution=1280
UseHighQualityReflections=False
bEnableForegroundShadowsOnWorld=False
bEnableForegroundSelfShadowing=False
MaxDrawDistanceScale=1.0
MinShadowResolution=64
MinPreShadowResolution=24
MobileShadowTextureResolution=1280
ShadowFadeResolution=64
PreShadowFadeResolution=16
UnbuiltNumWholeSceneDynamicShadowCascades=9
ShadowFadeExponent=0.5
WholeSceneShadowCutoffDistance=1400
WholeSceneShadowFadeOutDistance=1200
GlobalShadowDistanceScale=1.5

Исходные значения у вас могут отличаться. bEnableForegroundShadowsOnWorld не рекомендуется (видны только руки и оружие), а bEnableForegroundSelfShadowing включает тени на руках, кистях и оружии. Часть дополнительных команд для теней нашёл Dobes.

Качество отражений

Тоже при среднем FPS от 80. В KFEngine.ini найдите ImageReflectionTextureSize и поставьте большее значение, от 1024 до 4096.

Качество текстур

Только при 80+ FPS. В KFSystemSettings.ini ближе к началу найдите строки групп текстур (в Notepad++ примерно строки 181-207 и 247-254, у вас может отличаться). В каждой строке, где есть MaxLODSize=XXXX, поставьте 4096.

Строки групп текстур в KFSystemSettings.ini, первый блок Первый блок строк текстур (примерно строки 181-207).

Строки групп текстур в KFSystemSettings.ini, второй блок Второй блок (примерно строки 247-254).

TEXTUREGROUP_ProcBuilding_Face и TEXTUREGROUP_ProcBuilding_LightMap связаны с MaxProcBuildingLODColorTextureSize и MaxProcBuildingLODLightingTextureSize в KFEngine.ini, поэтому задайте там такие же размеры, как в KFSystemSettings.ini.

Для моделей и частиц более высокого качества в KFSystemSettings.ini замените:

SkeletalMeshLODBias=0   ->  -5
ParticleLODBias=0       ->  -5

а в KFGame.ini поменяйте MeshLODRange=0 на -5, чтобы качественные модели были видны дальше.

Улучшение texture streaming

В отличие от советов отключить стриминг текстур, здесь он остаётся включённым и улучшается. В KFEngine.ini, раздел TextureStreaming:

PoolSize=3072
MemoryMargin=768
  • PoolSize: объём VRAM вашей видеокарты в МБ.
  • MemoryMargin: запас памяти под новые текстуры, около 10-20% VRAM.

Примеры пар: 1 ГБ = 1024 / 128, 2 ГБ = 2048 / 256, 3 ГБ = 3072 / 768.

Если текстуры «выскакивают», сделайте стриминг агрессивнее:

MipFadeInSpeed0=0.2
MipFadeOutSpeed0=0.1
MipFadeInSpeed1=1.0
MipFadeOutSpeed1=0.5

Значения 0 - режим от первого лица, значения 1 - наблюдение или смерть. Если опустить всё до 0.0, стриминг перестанет работать. При появлении текстур в SLI (автор проверял на двух GTX 970) задайте в MemoryPools:

FLightPrimitiveInteractionInitialBlockSize=2048
FModShadowPrimitiveInteractionInitialBlockSize=2048

Эти два значения должны составлять около 10-20% вашей ОЗУ. Если вы раньше отключили texture streaming, верните bUseTextureStreaming в True.

Отключение texture streaming (на свой риск)

Кто-то говорит, что это помогает, кто-то - что становится хуже. В KFEngine.ini поставьте False: bUseTextureStreaming, bUseBackgroundLevelStreaming (есть и в KFGame.ini), AllowStreamingLightmaps, UsePriorityStreaming, UseDynamicStreaming. Нужна мощная видеокарта минимум с 6 ГБ VRAM; если не помогло, верните True.

Больше gore и трупов

Не выставляйте слишком большие значения - игра может вылететь. В KFGame.ini найдите [KFGame.KFGoreManager] и настройте:

ПараметрЧто делает
MaxImpactEffectDecalsМаксимум декалей попаданий на объектах (дыры от пуль, порезы)
GoreFXLifetimeMultiplierКак долго остаются куски и gore
BodyWoundDecalLifetimeВремя жизни следов попаданий
BloodSplatterLifetimeВремя жизни брызг на земле и стенах
BloodPoolLifetimeВремя жизни луж крови
GibletLifetimeЧерез сколько исчезают мелкие ошмётки
MaxBodyWoundDecalsСколько декалей ран применяется к врагам
MaxBloodSplatterDecalsДекалей в одной брызге
MaxBloodPoolDecalsСколько луж крови одновременно
BloodSplatSize / BloodPoolSizeРазмеры (не ставьте слишком большими)
MaxDeadBodiesМаксимум регдоллов; таймера нет, только этот предел
MaxBloodEffectsМаксимум эффектов крови
MaxGoreEffectsМаксимум отрубленных частей тел до исчезновения
AllowBloodSplatterDecals / bAllowBloodSplatterDecalsДополнительные непостоянные брызги
PersistentSplatTraceLengthДлина следов
MaxPersistentSplatsPerFrameПостоянных следов за кадр

Блок KFGoreManager Настройки gore в KFGame.ini.

Чтобы декали жили дольше, измените DecalLifeSpan=10.0 в разделе [Engine.DecalManager] файла KFGame.ini (секунды).

FOV как в Quake

В KFEngine.ini, раздел [Engine.LocalPlayer], замените AspectRatioAxisConstraint=AspectRatio_MaintainXFOV на AspectRatio_MaintainYFOV. Так FOV переключается с Vert- на Hor+. На 1920x1080 при 90 градусах по горизонтали в режиме Vert- по вертикали выходит около 59 градусов, а в Hor+ - около 106, при 74 градусах на экране 4:3. Обзор становится шире, с лёгким эффектом «рыбьего глаза» по краям, поэтому это по желанию. Смотрите также короткое руководство по FOV.

Схема Vert- и Hor+ Разница между Vert- и Hor+.

Скриншот Vert-, первый вид Настройка Vert-.

Скриншот Vert-, второй вид Vert-, второй вид.

Скриншот Hor+, первый вид Настройка Hor+.

Скриншот Hor+, второй вид Hor+, второй вид.

Пропуск вступительных роликов

В библиотеке Steam нажмите на Killing Floor 2 правой кнопкой, откройте «Свойства», затем «Установить параметры запуска» и введите -nostartupmovies.

Присланные исправления

  • Появление текстур на ходу: снимите лимит кадров и отключите VSync в игре. Проблема особенно проявлялась на SLI и Crossfire.
  • Вылет при запуске с DxTory (версия 2.0.130 и выше): на вкладке Advanced в разделе Hook Option включите Delay Hook и поставьте около 7 секунд или больше. Так игра успеет запуститься, прежде чем подключится счётчик FPS. Это лечит большинство вылетов при запуске с DxTory, но не помогает, если работает SweetFX или ReShade.

Параметр Delay Hook в DxTory Настройка Delay Hook в DxTory.

История обновлений

  • 02.09.2015: обновление Incinerate N Detonate, добавлены настройки PhysX Flex.
  • 29.03.2016: обновление по PhysX Flex, информация о DxTory, совет по появлению текстур в SLI и Crossfire.
  • 08.05.2016: вновь добавлены твики PhysX Flex и новый материал.
  • 25.08.2016: раздел пользовательских руководств.
  • 05.01.2017: больше команд, в том числе по качеству текстур.

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

Какие файлы правятся в этом руководстве?
Только пользовательские копии в Documents\My Games\KillingFloor2\KFGame\Config: KFEngine.ini, KFGame.ini и KFSystemSettings.ini. Файлы DefaultXXX.ini не трогаются.
Почему нельзя править Default-файлы?
Они сбрасываются при каждом обновлении игры; изменения в пользовательских файлах легко откатить - удалите их, и Steam создаст стандартные.
Стоит ли отключать texture streaming?
Автор предпочитает оставить его включённым и улучшить. Полное отключение - на свой риск и только для видеокарт минимум с 6 ГБ VRAM.