Оптимизация Killing Floor Dedicated Server - настройки KillingFloor.ini

Оптимизация Killing Floor Dedicated Server - настройки KillingFloor.ini

  • Тема закрыта
  • Вы не можете ответить в тему

Оптимизация Killing Floor Dedicated Server - настройки KillingFloor.ini Практичный гайд по оптимизации Killing Floor Dedicated Server: кеш, tickrate, сетевые лимиты, HTTP redirect, precache и стабильная эксплуатация сервера.

Geekrainian #1

    • Группа: Администратор
    • Сообщений: 974

    Отправлено:

    Оптимизация Killing Floor Dedicated Server

    Killing Floor Dedicated Server обычно упирается не в “секретные” параметры, а в стабильную сеть, аккуратный KillingFloor.ini, быстрый redirect для кастомных файлов и разумный tickrate. Этот гайд собирает рабочий baseline для KF1-сервера и объясняет, какие значения стоит менять первыми.

    Перед правками остановите сервер и сохраните копию System/KillingFloor.ini. Меняйте параметры по одному блоку и проверяйте сервер после каждой группы изменений.

    Быстрый baseline

    Что настраиваемРекомендуемое началоКогда менять
    CacheSizeMegs128 или 256Если много кастомных карт, mutators и долгие смены карты
    NetServerMaxTickRate25 или 30Если есть запас CPU и стабильный ping
    MaxInternetClientRate10000 или 15000Если игрокам не хватает пропускной способности
    HTTP redirectВключитьЕсли игроки скачивают карты с самого сервера
    PrecacheСначала оставить как естьМенять только при стабильных фризах или долгих загрузках

    Для публичного интернет-сервера обычно лучше стабильные 25-30 tickrate, чем завышенный tickrate с рывками и потерей пакетов.

    1. Кеш и память

    В KillingFloor.ini найдите секцию [Engine.GameEngine]. Для выделенного сервера с 1 GB RAM и больше можно начать с CacheSizeMegs=256:

    [Engine.GameEngine]
    CacheSizeMegs=256

    Практичная таблица:

    RAM сервераЗначение
    256 MB или меньшеCacheSizeMegs=32
    512 MBCacheSizeMegs=64
    768 MBCacheSizeMegs=128
    1 GB и большеCacheSizeMegs=256

    Не ставьте огромное значение “на всякий случай”. Для старого UE2.5 важнее предсказуемая работа процесса, чем агрессивный кеш.

    2. Сетевые лимиты и tickrate

    Основной блок для интернет-сервера:

    [IpDrv.TcpNetDriver]
    MaxClientRate=15000
    MaxInternetClientRate=10000
    NetServerMaxTickRate=30
    LanServerMaxTickRate=35
    ServerTravelPause=4.0
    SpawnPrioritySeconds=1.0
    RelevantTimeout=5.0
    KeepAliveTime=0.2
    InitialConnectTimeout=200.0
    ConnectionTimeout=15.0
    AckTimeout=1.0
    DownloadManagers=IpDrv.HTTPDownload
    AllowDownloads=True

    Что важно

    • NetServerMaxTickRate=30 - частота обновления сервера. Для публичных серверов обычно достаточно 25-30.
    • LanServerMaxTickRate=35 - можно держать выше для LAN или закрытых серверов с низким ping.
    • MaxClientRate и MaxInternetClientRate - верхний лимит пропускной способности на игрока.
    • AllowDownloads=True - нужно для выдачи кастомных файлов, но лучше не раздавать большие карты напрямую с игрового процесса.

    Если сервер начинает лагать во время плотных волн, сначала снизьте tickrate до 25, а не урезайте все сетевые лимиты сразу.

    3. HTTP redirect для карт и mutators

    Когда игроки качают кастомные карты с самого игрового сервера, это забирает канал и может портить ping всем остальным. Для production-сервера лучше настроить HTTP redirect.

    [IpDrv.HTTPDownload]
    RedirectToURL=https://example.com/kf-redirect/
    UseCompression=True

    Проверочный список:

    1. Файлы на redirect должны совпадать с файлами сервера.
    2. Имена и расширения должны быть такими же, как ожидает клиент.
    3. После обновления карты или mutator обновляйте redirect одновременно с сервером.
    4. Если игроки получают Package version mismatch, сначала проверьте redirect и кеш клиента.

    Смежная инструкция: ошибка Package version mismatch.

    4. Precache: включать или отключать

    Отключение precache в нескольких подсистемах может ускорить старт или смену карты, но иногда переносит фризы на первый спавн оружия, zed или эффекта.

    Тестовый вариант:

    [ALAudio.ALAudioSubsystem]
    UsePrecache=False
    
    [Engine.LevelInfo]
    bNeverPrecache=True
    
    [Engine.NullRenderDevice]
    UsePrecaching=False
    
    [D3DDrv.D3DRenderDevice]
    UsePrecaching=False
    
    [D3D9Drv.D3D9RenderDevice]
    UsePrecaching=False
    
    [OpenGLDrv.OpenGLRenderDevice]
    UsePrecaching=False
    
    [PixoDrv.PixoRenderDevice]
    UsePrecaching=False

    Для dedicated server обычно важнее стабильность. Если после отключения precache появились микрофризы в начале волны или при первом появлении контента, верните прежние значения.

    5. Трупы, гибы и лишняя физика

    Для KF1 не копируйте блоки вида [KFGame.KFGoreManager] из KF2-гайдов. В Killing Floor 1 чаще смотрят на параметры игрового типа и mutator-настройки, которые реально есть в вашем KillingFloor.ini.

    Если в конфиге есть секция [KFMod.KFGameType], можно аккуратно уменьшить время жизни трупов:

    [KFMod.KFGameType]
    TimeUntilVanished=5.0

    Слишком низкие значения выглядят странно для игроков, но могут помочь слабому серверу на больших волнах и custom-картах.

    Проверьте, что query включен, а сервер не спрятан настройками NAT или broadcast:

    [IpServer.UdpServerQuery]
    bEnabled=True
    
    [IpDrv.MasterServerUplink]
    DoUplink=True
    SendStats=True
    ServerBehindNAT=False
    DoLANBroadcast=True

    Если сервер за NAT, значение ServerBehindNAT зависит от вашей схемы сети. Важнее всего корректно открыть game/query порты и проверить сервер из внешней сети.

    7. Пути и базовая целостность

    Секция [Core.System] обычно не является “ускорителем”, но помогает быстро увидеть сломанные пути после переноса сервера:

    [Core.System]
    CachePath=..\Cache
    CacheExt=.uxx
    Paths=..\System\*.u
    Paths=..\Maps\*.rom
    Paths=..\StaticMeshes\*.usx
    SavePath=..\Save

    Не удаляйте Paths ради оптимизации. Если сервер перестал видеть карты, mutators или пакеты, проверьте этот блок первым.

    8. Логи и эксплуатация

    Полностью выключать полезные логи не стоит. Лучше держать отдельный файл лога на каждый инстанс и периодически чистить старые файлы.

    Практика для нескольких серверов на одной машине:

    • отдельная папка или отдельный конфиг на каждый инстанс
    • разные game/query ports
    • отдельные log-файлы
    • регулярная очистка старых логов и временных файлов
    • мониторинг CPU во время поздних волн, а не только на пустом сервере

    UE2.5 ограниченно использует несколько ядер. Если один процесс упирается в CPU, часто эффективнее разнести несколько серверов по разным ядрам/инстансам, чем искать один магический параметр.

    Готовый минимальный профиль

    Для стандартного публичного KF1-сервера можно начать так:

    [Engine.GameEngine]
    CacheSizeMegs=256
    
    [IpDrv.TcpNetDriver]
    MaxClientRate=15000
    MaxInternetClientRate=10000
    NetServerMaxTickRate=30
    LanServerMaxTickRate=35
    ServerTravelPause=4.0
    SpawnPrioritySeconds=1.0
    RelevantTimeout=5.0
    KeepAliveTime=0.2
    InitialConnectTimeout=200.0
    ConnectionTimeout=15.0
    AckTimeout=1.0
    DownloadManagers=IpDrv.HTTPDownload
    AllowDownloads=True
    
    [IpServer.UdpServerQuery]
    bEnabled=True
    
    [IpDrv.MasterServerUplink]
    DoUplink=True
    SendStats=True
    ServerBehindNAT=False
    DoLANBroadcast=True

    После этого настройте HTTP redirect, проверьте поздние волны на 6 игроках и только потом экспериментируйте с precache, временем жизни трупов и более высоким tickrate.

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

    Назад