Свой сервер

Killing Floor Fast Download: Исправляем медленную загрузку

Ничего не бесит больше, чем подключение к серверу и надпись "Downloading package...", ползущая со скоростью улитки (10Кб/с). Разбираемся, почему это происходит и как исправить.

Техническая причина

По умолчанию движок Unreal Engine 2 качает файлы напрямую через игровой порт сервера (UDP). Этот протокол не предназначен для передачи файлов и работает ужасно медленно.

Решение: HTTP Redirect (FastDL)

Хорошие серверы (как наши) используют HTTP Redirect.

  1. При входе сервер говорит вашей игре: "Не качай с меня. Иди по этой ссылке".
  2. Игра подключается к скоростному веб-серверу.
  3. Карта скачивается за пару секунд на максимальной скорости вашего интернета.

Если у нас качает медленно:

  • Проверьте фаервол/антивирус. Он может блокировать HTTP-запросы от игры.
  • Проверьте KillingFloor.ini. Убедитесь, что AllowDownloads=True.

Загрузка уходит за 100%

По теме «компрессия файлов» на форуме killingfloor.ru (2012). После перехода на сжатые файлы на хостинге редиректа процент загрузки рос дальше 100% (49588% и выше). Объяснения из темы:

  • Файлы не совпадают. Клиент сначала смотрит файл на игровом сервере, а потом на хостинге быстрой загрузки. Если процент перевалил за 100%, клиент видит файл на редиректе, но считает, что он не совпадает: например, на сервере изменили ServerPerks, а новый сжатый файл на FTP так и не залили (warpel, Flame).
  • Регистр букв на Linux. Если файл лежит на FTP, но клиент его упорно не видит и качает с сервера до 100%, а FTP или сервер под Linux, проверьте регистр в названиях: и в именах файлов, и в написании файла мутатора и его класса (например, файл kfmutator, а класс KFMutator).

Как должно быть устроено (Flame): файл мутатора, например KFMutator.u (и KFMutator.ucl), лежит на сервере; из KFMutator.u делается архив KFMutator.u.uz2, он заливается на FTP, а путь к нему указывается в KillingFloor.ini:

[IpDrv.HTTPDownload]
RedirectToURL=http://ftp.*****.org/KillingFloor/

http:// или ftp:// в RedirectToURL. Из темы «Проблема подключения. Хостинг виноват?» на форуме killingfloor.ru: админ залил файлы .uz2 на бесплатный хостинг и прописал RedirectToURL=ftp://kf.besaba.com/kf/; ему советовали RedirectToURL=http://kf.besaba.com/kf/. Правило из темы: вписывать тот протокол, по которому папка реально открывается в браузере. В итоге у автора заработали оба варианта; по FTP браузер спрашивал логин и пароль, а по HTTP сразу открывался список файлов.

https:// в RedirectToURL. Из темы «Проблемы с Dropbox» (форум killingfloor.ru): редирект на https://dl.dropboxusercontent.com/... раньше работал, потом перестал, хотя в браузере ссылка открывалась. В логе клиента было видно, что игра подставляет к адресу порт 80:

Log: Download redirection to: https://dl.dropboxusercontent.com:80/u/187890151/killingfloor/DZMonsterPack.u.uz2

Порт :443, вписанный вручную, не помог - редирект всё равно шёл на 80. Такой адрес с :80 в браузере выдавал ошибку SSL, а с http вместо https ссылка открывалась. Решения в теме не нашли; в ответ автору дали ссылку на тему с бесплатным FTP/HTTP-хостингом для редиректа.

Что выкладывать на редирект, кроме карт

Из темы «Быстрая закачка» (форум killingfloor.ru, 2012). Остальные файлы ничем не отличаются от карт и выкладываются на быструю закачку так же:

  • Залейте на хостинг ресурсы из папок Animations, Maps, Sounds, StaticMeshes, Textures и System (из System только файлы .u).
  • Обязательно сжимайте их в .uz2, иначе клиенты будут качать с игрового сервера «со скоростью улитки».
  • kf_gore_trip_sm.usx - штатный файл игры, ставить его на редирект не нужно: он качается только тогда, когда версия клиента отличается от версии сервера.
  • Проверка, видит ли игра редирект: если пакет весит 1 МБ, а его .uz2 - 300 КБ, при скачивании должно показываться 300 КБ. Если показывает 300 КБ, но медленно, дело в веб-сервере; если полный размер - игра не видит редирект.

Установка карт вручную

Если загрузка зависла, можно установить карту самому.

  1. Найдите карту: Гуглите название (например, "KF-Defence-B2 download").
  2. Скачайте архив: Внутри будут файлы с расширениями .rom, .utx, .ukx и т.д.
  3. Раскидайте по папкам:
    • Карты (.rom) -> KillingFloor/Maps
    • Текстуры (.utx) -> KillingFloor/Textures
    • Звуки (.uax) -> KillingFloor/Sounds
    • Музыка (.ogg) -> KillingFloor/Music
    • Модели (.usx) -> KillingFloor/StaticMeshes
    • Скрипты (.u, .int) -> KillingFloor/System (Осторожно с заменой файлов в System!)

Секрет папки Cache

Когда вы качаете файлы с сервера автоматически, они попадают не в Maps, а в скрытую папку Cache.

  • Где находится: KillingFloor/Cache/
  • Как работает: Файлы там имеют имена вроде 45A2C39...xx. Файл cache.ini хранит таблицу соответствия.
  • Лайфхак: Существуют программы "KF Cache Extractor", которые вытаскивают файлы из кэша, переименовывают их нормально и кладут в папку игры, чтобы вы могли играть на этих картах в Одиночной игре.