Проблемы и оптимизация

Killing Floor: low-memory профиль клиента - фикс CreateTexture и out of video memory

Этот гайд для игроков, у которых клиент Killing Floor падает с ошибками памяти, особенно на кастомных картах, при смене карты или после нескольких карт подряд.

Меню настроек экрана Killing Floor Меню Display в Killing Floor: рендер, разрешение и уровни детализации. Скриншот: PCGamingWiki.

Цель профиля - стабильность. Настройки ниже уменьшают precache, давление текстур, нагрузку звука и тяжелую визуальную детализацию. Картинка станет проще, зато клиенту будет легче переживать загрузку и смену карт.

Какие ошибки лечит этот профиль

Ошибка или симптомЧто обычно означает
CreateTexture failed(8007000E)Клиент не смог выделить память под текстуру
D3DERR_OUTOFVIDEOMEMORYDirect3D не смог выделить достаточно видеопамяти
IDirect3DVertexBuffer9::Lock failedРендер не смог заблокировать или создать D3D buffer
CreateVertexBuffer failedНе удалось создать mesh/render buffer
Virtual memory exhausted32-bit процесс уперся в лимит адресного пространства
Виртуальная память исчерпанаТо же самое, но в русской локализации
General protection fault при загрузке texture, sound, static mesh или mapPackage не загрузился, пока клиент был под давлением памяти

Важно: Killing Floor работает на старом 32-bit движке Unreal Engine 2. Сервер может снизить шанс падений, убрав слишком тяжелые карты из ротации, но полностью убрать лимит памяти клиента сервер не может.

Короткий чеклист

  1. Закрой игру.
  2. Найди клиентский KillingFloor.ini.
  3. Сделай backup.
  4. Отключи precache звука и рендера.
  5. Понизь детализацию текстур до Normal.
  6. Включи bNeverPrecache=true.
  7. Сохрани файл и проверь несколько смен карт.

Где находится KillingFloor.ini

Тип установкиПуть
SteamC:\Program Files (x86)\Steam\steamapps\common\KillingFloor\System\KillingFloor.ini
Non-Steam или portable client<папка Killing Floor>\System\KillingFloor.ini
Windows VirtualStore%LOCALAPPDATA%\VirtualStore\Program Files (x86)\Steam\steamapps\common\KillingFloor\System\KillingFloor.ini

Если Steam установлен в другую папку, открой Steam, найди Killing Floor, выбери управление локальными файлами и перейди в папку System.

Backup перед изменениями

KillingFloor.ini
KillingFloor.ini.backup

Если что-то станет хуже или картинка окажется слишком плохой, верни backup и перезапусти игру.

Рекомендуемый low-memory профиль

Открой KillingFloor.ini, найди указанные секции и измени только перечисленные ключи. Если ключа нет, добавь его внутрь нужной секции.

1. Engine cache

[Engine.GameEngine]
CacheSizeMegs=32

Не повышай это значение для решения out-of-memory. Большой cache может ухудшить ситуацию, потому что 32-bit клиенту и так не хватает адресного пространства.

2. Audio precache

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

Что это дает:

  • UsePrecache=False уменьшает предварительную загрузку звуков.
  • LowQualitySound=True снижает нагрузку от аудио-ресурсов.
  • Channels=24 уменьшает число одновременных звуковых каналов.
Channels=32

3. Direct3D 9 renderer

Большинство игроков используют D3D9. Это самая важная секция для падений по текстурам и видеопамяти.

[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

Примечания:

  • UsePrecaching=False уменьшает предварительную загрузку render-ресурсов.
  • ReduceMouseLag=False может снизить давление на D3D buffers.
  • UseCompressedLightmaps=True обычно лучше для памяти, чем uncompressed lightmaps.
  • DefaultTexMipBias=0.0 - безопасное стартовое значение. Если клиент все еще падает, попробуй 0.5 или 1.0; текстуры станут заметно мыльнее.

4. OpenGL renderer

Меняй эту секцию только если точно играешь через OpenGL.

Переключить игру на OpenGL можно в KillingFloor.ini, секция [Engine.Engine]: закомментируйте текущую строку RenderDevice= точкой с запятой и раскомментируйте OpenGL. На форуме killingfloor.ru (тема «Оптимизация видео настроек для повышения FPS», по гайду для UT2004) это советовали как первый шаг для слабых ПК; проверяйте результат на своей машине.

;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

Если ты не знаешь, используешь ли OpenGL, скорее всего, у тебя D3D9. Тогда эту секцию можно не трогать.

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

Что это дает:

  • TextureDetail...=Normal снижает размер загружаемых texture resources.
  • Projectors=False и Decals=False помогают на картах с большим количеством следов, крови, проекций и эффектов.
  • WeatherEffects=False помогает на кастомных картах с тяжелыми погодными эффектами.
  • DrawDistanceLOD=0.700000 уменьшает дальнюю детализацию.
DrawDistanceLOD=0.850000

6. Level loading и preload

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

Она снижает риск out-of-memory на загрузке уровня. Возможный минус - микрофризы при первом появлении некоторых врагов, оружия или эффектов.

Полный copy-paste профиль

Не удаляй весь KillingFloor.ini. Найди существующие секции и выставь в них такие значения.

[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

Более агрессивный профиль

Используй только если рекомендуемый профиль помог, но не решил падения полностью.

[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

Минусы:

  • текстуры станут заметно мыльными;
  • дальние объекты будут хуже выглядеть;
  • возможен более заметный pop-in.

Экспериментальные NVIDIA и video memory настройки

Это необязательный шаг. Пробуй только если:

  • у тебя NVIDIA GPU;
  • основной low-memory профиль не помог;
  • ты понимаешь, как откатить изменения.
[Engine.Engine]
NVidiaGPU=True
DetectedVideoMemory=1024
DetectedVideoMemory=512

Не ставь огромное значение только потому, что у видеокарты много VRAM. 32-bit игра все равно может упереться в лимит памяти процесса.

Large Address Aware

Large Address Aware, или LAA, это флаг Windows executable, который может позволить 32-bit процессу использовать больше виртуального адресного пространства на 64-bit Windows.

Для старых Unreal Engine 2 игр это иногда помогает, но это не серверный фикс и не обычная настройка INI. Это изменение executable файла клиента.

Рассматривай LAA только если все пункты верны:

  • у тебя 64-bit Windows;
  • low-memory профиль уменьшил падения, но не убрал их полностью;
  • ты часто падаешь на тяжелых кастомных картах;
  • ты понимаешь, как восстановить оригинальный KillingFloor.exe.

Риски:

  • Steam может вернуть оригинальный executable при verify или update.
  • Некоторые anti-cheat или серверные конфигурации могут негативно относиться к измененному executable.
  • Non-Steam builds отличаются, поэтому универсальной инструкции для всех клиентов нет.
  • Сохраняй чистый backup оригинального executable.

Откат:

  1. Закрой игру.
  2. Для Steam запусти проверку файлов.
  3. Для Non-Steam верни backup executable или переустанови клиент из исходного архива/инсталлера.

Что этот профиль не исправит

Профиль уменьшает memory pressure. Он не превращает Killing Floor в 64-bit игру и не гарантирует фикс, если проблема в:

  • битой или плохо собранной кастомной карте;
  • отсутствующих redirect downloads;
  • поврежденном .utx, .uax, .usx, .ukx package;
  • отключенном или слишком маленьком Windows pagefile;
  • нестабильном GPU driver;
  • перегреве или нестабильном overclock;
  • слишком тяжелой карте, которая не помещается в лимиты клиента;
  • длинной игровой сессии без перезапуска клиента.

Дополнительные проверки Windows

Если падения остаются:

  1. Убедись, что Windows pagefile включен.
  2. Оставь несколько GB свободного места на системном диске.
  3. Закрой браузер, Discord overlay, запись видео, другие игры и тяжелые фоновые программы.
  4. Обнови GPU driver.
  5. Если новый driver нестабилен, попробуй одну из старых стабильных версий.
  6. Перезапускай Killing Floor после нескольких тяжелых кастомных карт.
  7. Не заходи сразу на тяжелую карту, если клиент уже долго запущен.

Как тестировать

После изменений:

  1. Запусти Killing Floor.
  2. Зайди на сервер с обычной картой.
  3. Сыграй одну карту.
  4. Смени карту на кастомную.
  5. Смени еще одну карту.
  6. Если все стабильно, зайди на сервер или карту, где раньше были падения.

Хороший результат - клиент переживает несколько смен карт без CreateTexture failed, D3DERR_OUTOFVIDEOMEMORY и Виртуальная память исчерпана.

Плохой результат - клиент падает на одной и той же карте при каждой загрузке, особенно если лог указывает на один и тот же texture, sound, static mesh или map package. В таком случае проблема может быть в конкретной карте или package.

Откат INI-настроек

Если картинка стала слишком плохой или стало хуже:

  1. Закрой Killing Floor.
  2. Удали измененный KillingFloor.ini.
  3. Переименуй KillingFloor.ini.backup обратно в KillingFloor.ini.
  4. Запусти игру.

Если backup не был сделан:

  • Steam: запусти verify game files.
  • Non-Steam: восстанови файл из инсталлера или архива.
  • В некоторых сборках можно удалить KillingFloor.ini, и игра создаст новый файл при старте.

Короткое сообщение для игроков

Если Killing Floor падает с CreateTexture failed, D3DERR_OUTOFVIDEOMEMORY или "Виртуальная память исчерпана":
1) Закрой игру
2) Сделай backup System\KillingFloor.ini
3) Поставь UsePrecache=False и UsePrecaching=False
4) Поставь bNeverPrecache=true
5) Понизь TextureDetail... до Normal
6) Перезапускай клиент после нескольких тяжелых кастомных карт