Binds & Console

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)

SettingNotes
ProcBuildingLODColorTexelsPerWorldUnitTexels per world unit for building LOD color; default 0.075, ultra 0.095, low 0.55
ProcBuildingLODLightingTexelsPerWorldUnitBuilding LOD lighting; default 0.015, ultra 0.025, low 0.010
ImageReflectionTextureSizeDefault 1024, ultra 2048, low 64
TerrainMaterialMaxTextureCountTerrain texture quality; default 16, ultra 32, low 8
TerrainTessellationCheckDistanceNever set 0.0 (infinite check); the author uses 1.0 for everyone
bStaticDecalsEnabled, bDynamicDecalsEnabledTrue for quality, False for performance; if black squares appear, set dynamic decals back to True
bForceStaticTerrainCan help FPS, may cause artifacts
MaxPixelShaderAdditiveComplexityCountDefault 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
bUseBackgroundLevelStreamingOnly affects load time; keep True
bDisablePhysXHardwareSupportAMD: keep True. NVIDIA GTX 560 or better, or a weak CPU: try False
MaxFluidNumVertsGPU heavy; default 104857, ultra 54428, low 64
FluidSimulationTimeLimitDefault 30; ultra 240, low 90
MaxParticleVertexMemory262144 for 3 GB+ VRAM, 900 for less
PhysXGpuHeapSize, PhysXMeshCacheSizeRaise on NVIDIA; leave alone on AMD
MaxObjectsNotConsideredByGCDefault 80000; 0 gave about 3 FPS
SizeOfPermanentObjectPoolDo not touch; the author broke the game by accident
DisplayGamma2.2 is a good all-round value
MinDesiredFrameRateSet to your monitor refresh rate
MaxLightComponentsLower helps FPS; too low gives dark areas
FLightPrimitiveInteractionInitialBlockSizeRAM in MB divided by 8 on systems with 4 GB or less
FModShadowPrimitiveInteractionInitialBlockSizeDefault 2048; ultra 1024, low 512
MemBudgetMbDefault 512 is low; 1024 on 32-bit Windows, much higher on 64-bit
FreeCoreLeave 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=True only 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=0 gave 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.