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.
Первый блок строк текстур (примерно строки 181-207).
Второй блок (примерно строки 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 | Постоянных следов за кадр |
Настройки 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-.
Vert-, второй вид.
Настройка 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.
История обновлений
- 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.