Christmas Patriarch

Killing Floor: low-memory профиль клиента

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

Цель профиля - стабильность. Настройки ниже уменьшают 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

Что это дает:

Если звук начинает слишком часто пропадать, попробуй вернуть:

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

Примечания:

4. OpenGL renderer

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

Секция:

[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

Что это дает:

Если картинка стала слишком плохой, можно попробовать:

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

Минусы:

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

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

Секция:

[Engine.Engine]

Экспериментально:

NVidiaGPU=True
DetectedVideoMemory=1024

Для старых или слабых GPU лучше:

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 только если все пункты верны:

Риски:

Откат:

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

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

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

Дополнительные проверки 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 не был сделан:

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

Админ сервера может отправлять игрокам такой текст:

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

Связанные страницы