Вместо скачивания при соединении дополнительных ресурсов (карт, моделей, звуков и т.д.) напрямую с игрового сервера, в Half-Life теперь поддерживается скачивание с HTTP-сервера (т.е. с веб-сервера).

Преимущества
Скачивание через HTTP имеет три важных преимущества:

  1. Скачивание дополнительных ресурсов не оказывает влияния на игровой сервер, так как передачу файлов осуществляет отдельный веб-сервер с дополнительными ресурсами
  2. Игроки будут закачивать дополнительные ресурсы на максимально возможной для них скорости, что существенно ускорит процесс закачки
  3. Игроки, закачивающие дополнительные ресурсы, не занимают слот на сервере
Описание процесса
Что будут видеть игроки, соединяющиеся с сервером, имеющим дополнительные или недостающие у игрока ресурсы.
Когда игрок соединяется с сервером, имеющим дополнительные ресурсы, произойдет одно из двух:

  1. Если сервер не сконфигурирован на скачивание через HTTP, будет использоваться обычный метод скачивания "струйкой" ;
  2. Если сервер сконфигурирован на скачивание через HTTP, игрок увидит расширенный диалог закачки, и получит гораздо более быстрое скачивание. Пока идет закачка, игрок не соединен с игровым сервером. Как только закачка завершена, игрок автоматически пересоединяется с сервером и может играть.
Настройка сервера для использования быстрого скачивания через HTTP:
1) Создайте список всех нестандартных файлов (bsp, wav, mdl, etc), использующихся на вашем сервере
2) Скопируйте эти файлы на веб-сервер, сохраняя структуру каталогов
3) Необязательно: Для показа баннера игрокам, закачивающим дополнительные ресурсы, положите рисунок в формате GIF (340x56) в директорию путь которой:
Код:
<custom content directory>/gfx/banner.gif
4) Установите серверную переменную sv_downloadurl в
"http://yourserver/custom_content_directory/"
Пример:
Ваш сервер использует нестандартную карту "cs_mansion_bftw_day", которая требует наличия следующих файлов:

Код:
C:\Steam\Valve\cstrike\maps\cs_mansion_bftw_day.map
C:\Steam\Valve\cstrike\cs_mansion_bftw_day.wad
C:\Steam\Valve\cstrike\sound\ambience\cs_mansion_bftw_day_a.wav
C:\Steam\Valve\cstrike\sound\ambience\cs_mansion_bftw_day_b.wav
C:\Steam\Valve\cstrike\sound\ambience\cs_mansion_bftw_day_c.wav
Предположим, у вас есть место на веб-сервере с адресом: https://megaboom.pro/~dir, которое вы хотите использовать для хостинга ваших дополнительных ресурсов.
Чтобы сделать это, закачайте файлы, требующиеся для карты cs_mansion_bftw_day на ваш веб-сервер, в созданную директорию cs16, сохраняя структуру подкаталогов.
Теперь на вашем веб-сервере вы имеете следующие файлы:

Теперь игроки, соединяющиеся с вашим сервером, автоматически скачают карту cs_mansion_bftw_day и требующиеся для нее дополнительные файлы с вашего веб-сервера (конечно, если только они еще не имеют этой карты и необходимых файлов)

Также рекомендуется сжимать файлы с помощью архиватора bZip2 который можно скачать по ссылке: http://www.bzip.org
Это намного увеличит скорость скачивания, что безусловно будет приятно игрокам и облегчит нагрузку на ваш сервер.

Технические детали

  • Максимальная длина значения переменной sv_downloadurl - 127 символов
  • Имеется возможность указать имя и пароль для доступа к веб-серверу, в значении переменной sv_downloadurl
  • http://username:[email protected]/
    • username - имя пользователя
    • password - пароль
      • Замечание - последние заплатки для IE могут отключить эту функциональность
  • Если соединяющийся игрок имеет файл с тем же именем, этот файл не будет переписан, скачивание этого файла будет пропущено
  • Некоторые критические и/или опасные файлы не могут быть скачаны (например: *.exe, *.vbs, etc)
Использование нескольких веб-серверов
В переменную sv_downloadurl можно добавить только один адрес, но имеются возможности делать редиректы с этого адреса если правильно настроить веб-сервер, что существенно снизит нагрузку путем балансировки по нескольким веб-серверам.
Если вам это интересно ознакомьтесь со следующими статьями содержащими примеры:

  1. Для HLDS сервера плагин: Multi FastDownload
  2. [SNIPPET] Multiple Fast Download URLs