KF2 Graphics INI Tweaks Explained: KFEngine and KFSystemSettings
This long community guide from the early beta days explains, line by line, what the Killing Floor 2 settings in KFEngine.ini and KFSystemSettings.ini do and gives the author's suggested values for an "Ultra" and a "Low" setup. It is more explanatory than a plain list of tweaks, and some advice is dated, so test every change. Newer, shorter takes are lowest graphics via INI and graphics settings optimization.
Before you edit
Config files live in C:\Users\<name>\Documents\My Games\KillingFloor2\KFGame\Config. Back them up. Search each setting with Ctrl+F by copying the start of the line. Settings not mentioned were either not graphical or risky to touch. Test the game after finishing each file.
KFEngine.ini highlights (Default / Ultra / Low as given by the author)
| Setting | Notes |
|---|---|
| ProcBuildingLODColorTexelsPerWorldUnit | Texels per world unit for building LOD color; default 0.075, ultra 0.095, low 0.55 |
| ProcBuildingLODLightingTexelsPerWorldUnit | Building LOD lighting; default 0.015, ultra 0.025, low 0.010 |
| ImageReflectionTextureSize | Default 1024, ultra 2048, low 64 |
| TerrainMaterialMaxTextureCount | Terrain texture quality; default 16, ultra 32, low 8 |
| TerrainTessellationCheckDistance | Never set 0.0 (infinite check); the author uses 1.0 for everyone |
| bStaticDecalsEnabled, bDynamicDecalsEnabled | True for quality, False for performance; if black squares appear, set dynamic decals back to True |
| bForceStaticTerrain | Can help FPS, may cause artifacts |
| MaxPixelShaderAdditiveComplexityCount | Default 900; 256 gave a clear FPS boost in testing |
| TimeBetweenPurgingPendingKillObjects | -1 stops memory flushing: fewer FPS drops but a long pause at the memory ceiling |
| bUseBackgroundLevelStreaming | Only affects load time; keep True |
| bDisablePhysXHardwareSupport | AMD: keep True. NVIDIA GTX 560 or better, or a weak CPU: try False |
| MaxFluidNumVerts | GPU heavy; default 104857, ultra 54428, low 64 |
| FluidSimulationTimeLimit | Default 30; ultra 240, low 90 |
| MaxParticleVertexMemory | 262144 for 3 GB+ VRAM, 900 for less |
| PhysXGpuHeapSize, PhysXMeshCacheSize | Raise on NVIDIA; leave alone on AMD |
| MaxObjectsNotConsideredByGC | Default 80000; 0 gave about 3 FPS |
| SizeOfPermanentObjectPool | Do not touch; the author broke the game by accident |
| DisplayGamma | 2.2 is a good all-round value |
| MinDesiredFrameRate | Set to your monitor refresh rate |
| MaxLightComponents | Lower helps FPS; too low gives dark areas |
| FLightPrimitiveInteractionInitialBlockSize | RAM in MB divided by 8 on systems with 4 GB or less |
| FModShadowPrimitiveInteractionInitialBlockSize | Default 2048; ultra 1024, low 512 |
| MemBudgetMb | Default 512 is low; 1024 on 32-bit Windows, much higher on 64-bit |
| FreeCore | Leave a core free on true 6 or 8 core CPUs |
On smoothing: bSmoothFrameRate appears twice in the file and both must match; with Min/MaxSmoothedFrameRate at 999 the author saw no real difference from False.
[TextureStreaming]
Poolsize: 512 for 4 GB RAM, 1024 for 8 GB, 2048 for 12 GB or more (min 150, max 2048); this follows system RAM, not VRAM.UseTextureFileCache=Trueonly with 1 GB+ video memory; it reduced texture pop-in.LoadMapTimeLimit: default 2.2, ultra 2.0, low 20.0.MaxLightmapRadius,AllowStreamingLightmaps,UsePriorityStreaming(off gives more FPS but lag spikes),UseDynamicStreaming(False needs lots of RAM and VRAM).BoostPlayerTextures=0gave about 10 FPS at the cost of duller player models.
KFSystemSettings.ini highlights
Low setup recommendations from the author: StaticDecals, DynamicDecals, DynamicShadows, MotionBlur, AmbientOcclusion, Bloom, light shafts, Distortion, DropParticleDistortion, LensFlares, FogVolumes, AllowRadialBlur, AllowImageReflections and AllowImageReflectionShadowing set to False; UseVsync False. Keep DynamicLights=True, because the Unreal Engine 3 look depends on it and turning it off makes everything black. Ambient occlusion alone cost the author about 15 FPS. Other values: SkeletalMeshLODBias 2 or 3 for better performance (-1 best quality), ParticleLODBias -1 to 0, DetailMode 1 to 4, MaxDrawDistanceScale 1.0 on ultra and 0.8 low, MaxAnisotropy 4 on ultra and 0 on low, bAllowWholeSceneDominantShadows=False always, and shadow resolutions lowered for the Low profile (MaxShadowResolution 512, MinShadowResolution 32, ShadowTexelsPerPixel 1.1). The APEX section was left untouched.
KFGame.ini
The last section is a copy-and-paste block of a full KFGame.ini section with notes on how to scale it to low, medium and high PC specs. The original gives the block as a single paste, so adapt it to your hardware instead of copying blindly.
FAQ
- Should I disable DynamicLights?
- No, the author warns that turning it off makes the game look horrible because the engine relies on dynamic lighting.
- What texture Poolsize should I use?
- 512 for 4 GB RAM, 1024 for 8 GB and 2048 for 12 GB or more.