Fixes & Performance

Killing Floor Low-Memory Client Profile - Fix Texture and Video Memory Crashes

This guide is for Killing Floor players whose client crashes with memory-related errors, especially on custom maps, during a map change, or after several maps in one session.

Killing Floor Display settings menu The Killing Floor Display menu: render device, resolution and detail levels. Screenshot: PCGamingWiki.

The goal is stability. The profile below reduces precaching, texture pressure, sound pressure, and heavy visual detail. The game will look simpler, but it should survive more map loads on older or memory-limited clients.

Symptoms This Profile Targets

Error or symptomWhat it usually means
CreateTexture failed(8007000E)The client failed to allocate texture memory
D3DERR_OUTOFVIDEOMEMORYDirect3D could not allocate enough video memory
IDirect3DVertexBuffer9::Lock failedThe renderer failed to lock or allocate a D3D buffer
CreateVertexBuffer failedMesh or render buffers could not be created
Virtual memory exhaustedThe 32-bit process ran out of address space
General protection fault during texture, sound, static mesh, or map loadingA package load failed while the client was under memory pressure

Killing Floor is an older 32-bit Unreal Engine 2 game. A server can reduce crashes by avoiding extremely heavy maps, but it cannot remove the client's memory limit completely. The client configuration still matters.

Quick Checklist

  1. Close Killing Floor.
  2. Find your client KillingFloor.ini.
  3. Make a backup.
  4. Disable sound and renderer precaching.
  5. Lower texture detail to Normal.
  6. Enable bNeverPrecache=true.
  7. Save the file and test several map changes.

Where To Find KillingFloor.ini

Install typePath
SteamC:\Program Files (x86)\Steam\steamapps\common\KillingFloor\System\KillingFloor.ini
Non-Steam or portable client<Killing Floor folder>\System\KillingFloor.ini
Windows VirtualStore fallback%LOCALAPPDATA%\VirtualStore\Program Files (x86)\Steam\steamapps\common\KillingFloor\System\KillingFloor.ini

If Steam is installed somewhere else, open Steam, find Killing Floor, use the local files option, and go to the System folder.

Make A Backup First

KillingFloor.ini
KillingFloor.ini.backup

If the result is worse or the visuals become too poor, restore the backup and restart the game.

Open KillingFloor.ini, find each section, and change only the listed keys. If a key is missing, add it under the correct section.

1. Engine Cache

[Engine.GameEngine]
CacheSizeMegs=32

Do not raise this value to solve out-of-memory crashes. A larger cache can make the situation worse because the 32-bit client already has limited address space.

2. Audio Precache

[ALAudio.ALAudioSubsystem]
UsePrecache=False
LowQualitySound=True
Channels=24

What it does:

  • UsePrecache=False reduces up-front sound loading.
  • LowQualitySound=True lowers pressure from audio assets.
  • Channels=24 lowers the number of simultaneous sound channels.
Channels=32

3. Direct3D 9 Renderer

Most players use the D3D9 renderer. This is the most important section for texture and video memory crashes.

[D3D9Drv.D3D9RenderDevice]
DetailTextures=False
HighDetailActors=False
SuperHighDetailActors=False
UsePrecaching=False
UseTrilinear=False
ReduceMouseLag=False
UseCubemaps=False
UseCompressedLightmaps=True
UseVSync=False
LevelOfAnisotropy=0
DetailTexMipBias=0.0
DefaultTexMipBias=0.0
UsePrecaching=False
HighDetailActors=False
SuperHighDetailActors=False
ReduceMouseLag=False

Notes:

  • UsePrecaching=False reduces up-front renderer resource loading.
  • ReduceMouseLag=False can reduce pressure on D3D buffers.
  • UseCompressedLightmaps=True is usually better for memory than uncompressed lightmaps.
  • DefaultTexMipBias=0.0 is the safe starting point. If the client still crashes, try 0.5 or 1.0; textures will become blurrier.

4. OpenGL Renderer

Only edit this section if you know you are using OpenGL.

To switch the game to OpenGL, open KillingFloor.ini, section [Engine.Engine]: comment out the current RenderDevice= line with a semicolon and uncomment the OpenGL one. The killingfloor.ru forum ("Optimising video settings for FPS" thread, based on a UT2004 guide) suggested it as the first step for weak PCs; check the result on your own machine.

;RenderDevice=D3DDrv.D3DRenderDevice
;RenderDevice=D3D9Drv.D3D9RenderDevice
RenderDevice=OpenGLDrv.OpenGLRenderDevice
[OpenGLDrv.OpenGLRenderDevice]
DetailTextures=False
HighDetailActors=False
SuperHighDetailActors=False
UsePrecaching=False
UseCompressedLightmaps=True
UseTrilinear=False
ReduceMouseLag=False
LevelOfAnisotropy=0

If you are not sure, you are probably using D3D9 and can leave this section alone.

5. Visual Detail

[WinDrv.WindowsClient]
Decals=False
Coronas=False
DecoLayers=False
Projectors=False
NoDynamicLights=True
TextureDetailInterface=Normal
TextureDetailTerrain=Normal
TextureDetailWeaponSkin=Normal
TextureDetailPlayerSkin=Normal
TextureDetailWorld=Normal
TextureDetailRenderMap=Normal
TextureDetailLightmap=Normal
WeatherEffects=False
DrawDistanceLOD=0.700000

What it does:

  • TextureDetail...=Normal lowers the size of loaded texture resources.
  • Projectors=False and Decals=False help on maps with many blood marks, bullet marks, and projected effects.
  • WeatherEffects=False helps on custom maps with heavy weather effects.
  • DrawDistanceLOD=0.700000 lowers far-distance detail.
DrawDistanceLOD=0.850000

6. Level Loading And Preload

[Engine.LevelInfo]
PhysicsDetailLevel=PDL_Medium
MeshLODDetailLevel=MDL_Medium
bLowSoundDetail=True
DecalStayScale=0.0
bNeverPrecache=true
bShouldPreload=False
bDesireSkinPreload=False
bNeverPrecache=true

This reduces the risk of out-of-memory crashes during level loading. The tradeoff is that you may see small stutters when some enemies, weapons, or effects appear for the first time.

Full Copy-Paste Profile

Do not delete your whole KillingFloor.ini. Find the existing sections and set these values inside them.

[Engine.GameEngine]
CacheSizeMegs=32

[ALAudio.ALAudioSubsystem]
UsePrecache=False
LowQualitySound=True
Channels=24

[D3D9Drv.D3D9RenderDevice]
DetailTextures=False
HighDetailActors=False
SuperHighDetailActors=False
UsePrecaching=False
UseTrilinear=False
ReduceMouseLag=False
UseCubemaps=False
UseCompressedLightmaps=True
UseVSync=False
LevelOfAnisotropy=0
DetailTexMipBias=0.0
DefaultTexMipBias=0.0

[WinDrv.WindowsClient]
Decals=False
Coronas=False
DecoLayers=False
Projectors=False
NoDynamicLights=True
TextureDetailInterface=Normal
TextureDetailTerrain=Normal
TextureDetailWeaponSkin=Normal
TextureDetailPlayerSkin=Normal
TextureDetailWorld=Normal
TextureDetailRenderMap=Normal
TextureDetailLightmap=Normal
WeatherEffects=False
DrawDistanceLOD=0.700000

[Engine.LevelInfo]
PhysicsDetailLevel=PDL_Medium
MeshLODDetailLevel=MDL_Medium
bLowSoundDetail=True
DecalStayScale=0.0
bNeverPrecache=true
bShouldPreload=False
bDesireSkinPreload=False

More Aggressive Profile

Use this only if the recommended profile helped but did not solve the crashes.

[WinDrv.WindowsClient]
TextureDetailInterface=Lower
TextureDetailTerrain=Lower
TextureDetailWeaponSkin=Lower
TextureDetailPlayerSkin=Lower
TextureDetailWorld=Lower
TextureDetailRenderMap=Lower
TextureDetailLightmap=Lower
DrawDistanceLOD=0.500000
MinDesiredFrameRate=45.000000

[D3D9Drv.D3D9RenderDevice]
DefaultTexMipBias=1.0
DetailTexMipBias=1.0

Tradeoffs:

  • textures become noticeably blurrier;
  • far objects look worse;
  • object pop-in can become more visible.

Experimental NVIDIA And Video Memory Settings

This is optional. Try it only if:

  • you use an NVIDIA GPU;
  • the main low-memory profile did not help enough;
  • you know how to roll back the change.
[Engine.Engine]
NVidiaGPU=True
DetectedVideoMemory=1024
DetectedVideoMemory=512

Do not set a huge value just because your GPU has more VRAM. The 32-bit client can still hit the process memory limit.

Large Address Aware

Large Address Aware, or LAA, is a Windows executable flag that can let a 32-bit process use more virtual address space on 64-bit Windows.

For older Unreal Engine 2 games it can sometimes help, but it is not a server-side fix and it is not a normal INI setting. It modifies the client executable.

Consider LAA only if all of these are true:

  • you use 64-bit Windows;
  • the low-memory profile reduced crashes but did not remove them;
  • you often crash on heavy custom maps;
  • you understand how to restore the original KillingFloor.exe.

Risks:

  • Steam can restore the original executable during verify or update.
  • Some anti-cheat setups or server configurations may dislike modified executables.
  • Non-Steam builds differ, so there is no universal instruction for every client.
  • Keep a clean backup of the original executable.

Rollback:

  1. Close the game.
  2. For Steam, verify game files.
  3. For Non-Steam clients, restore the backed-up executable or reinstall from the original installer/archive.

What This Profile Will Not Fix

This profile reduces memory pressure. It does not turn Killing Floor into a 64-bit game and it cannot guarantee a fix when the real problem is:

  • a broken or poorly packed custom map;
  • missing redirect downloads;
  • a corrupted .utx, .uax, .usx, or .ukx package;
  • a disabled or tiny Windows pagefile;
  • an unstable GPU driver;
  • overheating or unstable overclocking;
  • a map that is too heavy for the client;
  • a long session without restarting the game.

Additional Windows Checks

If crashes continue:

  1. Make sure the Windows pagefile is enabled.
  2. Keep several GB free on the system drive.
  3. Close browser tabs, Discord overlay, recording software, other games, and heavy background apps.
  4. Update the GPU driver.
  5. If a new driver is unstable, try an older stable driver version.
  6. Restart Killing Floor after several heavy custom maps.
  7. Avoid joining a heavy map immediately after the client has been running for hours.

How To Test

After editing:

  1. Start Killing Floor.
  2. Join a server on a normal map.
  3. Play one map.
  4. Change to a custom map.
  5. Change to one more map.
  6. If stable, test the server or map that used to crash.

A good result is several map changes without CreateTexture failed, D3DERR_OUTOFVIDEOMEMORY, or Virtual memory exhausted.

A bad result is a crash on the same map every time, especially when the crash log points to the same texture, sound, static mesh, or map package. In that case, the map or package may be the root cause.

Roll Back INI Changes

If the game looks too bad or becomes less stable:

  1. Close Killing Floor.
  2. Delete the modified KillingFloor.ini.
  3. Rename KillingFloor.ini.backup back to KillingFloor.ini.
  4. Start the game again.

If you did not make a backup:

  • Steam: verify game files.
  • Non-Steam: restore the file from the installer or archive.
  • Some builds can recreate KillingFloor.ini after you delete it and launch the game.

Short Message For Players

If Killing Floor crashes with CreateTexture failed, D3DERR_OUTOFVIDEOMEMORY, or "Virtual memory exhausted":
1) Close the game
2) Back up System\KillingFloor.ini
3) Set UsePrecache=False and UsePrecaching=False
4) Set bNeverPrecache=true
5) Lower TextureDetail... values to Normal
6) Restart the client after several heavy custom maps