Быстрая загрузка файлов игры Counter-Strike: Source
18 апреля 2011
Каждый индивидуальный выделенный сервер Counter-Strike: Source может включать в себя разнообразные дополнения, карты, которые клиент скачивает при подключении к игре, но, в этом есть один большой минус — сервер в это время сжимает файл и отдает его, то есть тратится время на сжатие, а здесь и повышение нагрузки на сервер, возможные лаги когда большинство слотов занято, да и сама загрузка таким образом происходит значительно дольше, чем вы бы скачали такой же файл по http протоколу.
Благо, что разработчики Valve предусмотрели обходной путь для этой проблемы, разработав серверную команду sv_downloadurl в которой мы можем указать путь к сайту, с размещенных игровым контентом. Таким образом мы избавимся от долгой загрузки файлов, так как клиент будет скачивать файл напрямую с сайта. Для начала необходимо создать директорию с нашим игровым модом (используйте FTP), например вот так —
Обратите внимание на отсутствие завершающего слеша (/), напомню, эту команду мы пишем в серверный конфигурационный файл server.cfg. Все, после этого клиент будет в курсе, откуда ему скачивать файлы, однако нужно еще разрешить ему это делать, пример —
Эту команду мы пишем сразу после sv_downloadurl. Все, сервер настроен. Теперь нам нужно подготовить файлы, которые будем передавать по http. Может вы уже в курсе, а быть может и нет — движок игры поддерживает сжатие и распаковку архивов bzip2, поэтому крупные файлы обязательно сжимаем архиватором bzip2, который можно загрузить здесь.
После установки архиватора на компьютер, мы можем приступать к работе. Для примера мы сожмем директорию с нашими картами. Я разместил список нестандартных карт на диске «E» в директории «maps». Ну, что же, откроем консоль «cmd» и перейдем в директорию с картами Counter-Strike: Source —
Как вы видите, используется многословный режим -v (verbose) и маска *.bsp, благодаря которой нам не нужно указывать какую именно карту — архиватор сожмет все файлы с расширением .bsp находящиеся в рабочей директории, в нашем случае это «E:\maps». Результат выполнения работы bzip2 можете видеть на рисунке ниже —
Для примера, de_nightfever.bsp до сжатия весил 46 МБ, неплохой результат, не правда ли? Теперь создайте на веб сервере поддиректорию maps в директории cstrike и загрузите в нее все сжатые карты. Перезапускайте сервер, и проверяем, удалим с клиента любую уже имеющуюся карту например туже de_nightfever.bsp и попробуем присоединиться к игре. Я сразу заметил, что скорость загрузки карты существенно повысилась, для пущей уверенности проверил лог веб-сервера, чтобы быть уверенным в том, что карта действительно загрузилась с http протокола. Что же видим в логах —
Остались вопросы? Без проблем поможем с ними на нашем форуме администраторов выделенных серверов Counter-Strike: Source.
Руководства по теме
Настройка TickRate 100 в обход ограничения Valve
Благо, что разработчики Valve предусмотрели обходной путь для этой проблемы, разработав серверную команду sv_downloadurl в которой мы можем указать путь к сайту, с размещенных игровым контентом. Таким образом мы избавимся от долгой загрузки файлов, так как клиент будет скачивать файл напрямую с сайта. Для начала необходимо создать директорию с нашим игровым модом (используйте FTP), например вот так —
sv_downloadurl "httр://play.zone-game.info/cstrike"
Обратите внимание на отсутствие завершающего слеша (/), напомню, эту команду мы пишем в серверный конфигурационный файл server.cfg. Все, после этого клиент будет в курсе, откуда ему скачивать файлы, однако нужно еще разрешить ему это делать, пример —
sv_allowdownload 1
Эту команду мы пишем сразу после sv_downloadurl. Все, сервер настроен. Теперь нам нужно подготовить файлы, которые будем передавать по http. Может вы уже в курсе, а быть может и нет — движок игры поддерживает сжатие и распаковку архивов bzip2, поэтому крупные файлы обязательно сжимаем архиватором bzip2, который можно загрузить здесь.
После установки архиватора на компьютер, мы можем приступать к работе. Для примера мы сожмем директорию с нашими картами. Я разместил список нестандартных карт на диске «E» в директории «maps». Ну, что же, откроем консоль «cmd» и перейдем в директорию с картами Counter-Strike: Source —
E:
E:\ cd maps
E:\maps>"C:\Program Files (x86)\GnuWin32\bin\bzip2" -v *.bsp
E:\ cd maps
E:\maps>"C:\Program Files (x86)\GnuWin32\bin\bzip2" -v *.bsp
Как вы видите, используется многословный режим -v (verbose) и маска *.bsp, благодаря которой нам не нужно указывать какую именно карту — архиватор сожмет все файлы с расширением .bsp находящиеся в рабочей директории, в нашем случае это «E:\maps». Результат выполнения работы bzip2 можете видеть на рисунке ниже —
Для примера, de_nightfever.bsp до сжатия весил 46 МБ, неплохой результат, не правда ли? Теперь создайте на веб сервере поддиректорию maps в директории cstrike и загрузите в нее все сжатые карты. Перезапускайте сервер, и проверяем, удалим с клиента любую уже имеющуюся карту например туже de_nightfever.bsp и попробуем присоединиться к игре. Я сразу заметил, что скорость загрузки карты существенно повысилась, для пущей уверенности проверил лог веб-сервера, чтобы быть уверенным в том, что карта действительно загрузилась с http протокола. Что же видим в логах —
[18/Apr/2011:08:00:25 +0400] "GET /cstrike/maps/de_nightfever.bsp.bz2 HTTP/1.1" 200 3814747 "hl2://CLIENT_IP:27015" "Half-Life 2"
Остались вопросы? Без проблем поможем с ними на нашем форуме администраторов выделенных серверов Counter-Strike: Source.
Руководства по теме
Настройка TickRate 100 в обход ограничения Valve