MAATRIX GAMES / Блог / Кастомные карты из Steam Workshop для CS2

Кастомные карты из Steam Workshop для CS2

MAATRIX GAMES

Ванильные de_dust2 и de_mirage рано или поздно надоедают, а комьюнити CS2 давно наштамповало тысячи кастомных карт под surf, bhop и retake-тренировки. Проблема в том, что раздавать карты игрокам вручную через FTP или архив в Discord — это боль из эпохи CS 1.6: половина забудет скачать, вторая половина скачает не ту версию. В CS2 на Source 2 это решается штатно через Steam Workshop, без единого файла на клиенте руками. Если сервер ещё не поднят — сначала загляните в инструкцию по установке CS2-сервера, а дальше разберём именно кастомные карты.

Как получить Workshop ID карты

Любая карта в Steam Workshop имеет числовой ID — он же ID предмета мастерской, зашитый в её URL. Заходите на страницу карты в Steam Workshop (через сам клиент CS2: In-game → Workshop, либо через браузер на steamcommunity.com), и смотрите на адресную строку:

https://steamcommunity.com/sharedfiles/filedetails/?id=3287654321

Число после id= — это и есть Workshop ID, 3287654321 в примере. Больше от карты ничего не нужно: ни скачивать вручную, ни распаковывать .vpk — сервер сам подтянет всё нужное при старте.

Важный нюанс: не все карты из старого Workshop CS:GO автоматически работают в CS2. Часть карт мастерская уже перекомпилировали под Source 2, часть — ещё нет (или заброшена автором). Перед тем как завязывать на карту продакшен-сервер, проверьте в описании или комментариях, что автор явно отметил совместимость с CS2 — иначе рискуете упереться в ошибку загрузки или сломанные текстуры.

host_workshop_map — одна карта на сервере

Самый простой способ подключить конкретную карту — команда host_workshop_map с Workshop ID. Работает и как параметр запуска, и как консольная команда на живом сервере.

Как параметр запуска (вместо привычного +map):

./cs2.sh -dedicated -console -usercon \
  -port 27015 \
  +host_workshop_map 3287654321 \
  +exec server.cfg

Или прямо в консоли уже работающего сервера — например, чтобы протестировать карту без перезапуска процесса:

host_workshop_map 3287654321

Сервер скачает карту с серверов Steam (если её ещё нет в кэше), распакует и загрузит — на это может уйти от нескольких секунд до пары минут, в зависимости от размера карты и скорости канала хостинга. Первая загрузка конкретной карты всегда медленнее — дальше она лежит в локальном кэше content/csgo и подгружается почти мгновенно при повторных сменах.

Сменить карту на другую воркшоп-карту можно и в рантайме той же командой — host_workshop_map <другой_ID> отработает как обычный changelevel, только с дозагрузкой при необходимости.

Поднять сервер Counter-Strike 2 за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

host_workshop_collection — коллекция и ротация

Если карт несколько и вы хотите нормальную ротацию — вручную перечислять host_workshop_map при каждой смене неудобно. Для этого в Steam Workshop есть коллекции: создаёте коллекцию (у любого Steam-аккаунта, не обязательно у владельца сервера), добавляете туда нужные карты, и берёте ID коллекции из её URL — точно так же, как ID карты.

host_workshop_collection 3298765432

При старте сервер скачает все карты коллекции разом и построит из них ротацию — фактически заменяет собой обычный mapcyclefile для воркшоп-контента. Это же значение можно прописать и как параметр запуска:

./cs2.sh -dedicated -console -usercon \
  -port 27015 \
  +host_workshop_collection 3298765432 \
  +exec server.cfg

Практический плюс: если позже добавить карту прямо в существующую коллекцию через сайт Steam Workshop, сервер подхватит новую карту при следующем рестарте — не нужно ничего менять в конфиге или на файловой системе сервера, вся логистика через Workshop.

Смешивать host_workshop_collection с обычными стоковыми картами в одной ротации из коробки не получится — команда полностью управляет циклом карт сама. Если хотите чередовать ванильные и кастомные карты, добавьте в саму коллекцию нужные стоковые карты (они там тоже есть, Valve публикует их через Workshop) либо переключайтесь между режимами через RCON вручную под конкретное событие.

Как клиенты скачивают карту (особенность Source 2)

Здесь у CS2 реально удобнее, чем было у Source 1. В CS:GO и тем более в CS 1.6 для кастомных карт админы поднимали отдельный FastDL-сервер (sv_downloadurl), на который заранее вручную заливали .bsp-файлы — без этого клиенты качали карту убийственно медленно напрямую с игрового сервера или не качали вовсе.

В CS2 на Source 2 этого слоя просто нет. Раз карта подключена через host_workshop_map или входит в коллекцию, при попытке зайти на сервер клиент CS2 сам определяет, что карты нет локально, и скачивает её напрямую с CDN Steam Workshop — быстро и без участия админа сервера. Никакого sv_downloadurl, никакого отдельного веб-хостинга под .bsp не нужно.

Единственное, что стоит держать в уме:

  • Скачивание идёт через тот же Steam-клиент игрока, так что зависит от его собственного канала, а не от сервера — на медленном интернете первое подключение к карте может занять минуту-другую.
  • Скачанная карта остаётся в кэше воркшопа у клиента локально, повторные заходы на тот же сервер с той же картой уже не требуют повторной загрузки.
  • Если карта была позже отозвана или удалена автором из Workshop, у клиентов без неё в локальном кэше подключение оборвётся с ошибкой — держите про запас альтернативную карту в ротации на такой случай.

Проверка что карта загрузилась

Перед тем как звать игроков, стоит убедиться, что карта реально поднялась, а не зависла в загрузке. Смотрите консоль сервера (или journalctl -u cs2server -f, если запускали через systemd по инструкции из базовой статьи) сразу после команды смены карты.

При штатной загрузке в логе идёт примерно такая последовательность: сообщение о запросе воркшоп-предмета, прогресс скачивания (если карты ещё нет в кэше), а затем стандартная инициализация карты — тот же вывод, что при загрузке обычной стоковой карты, но с путём вида maps/workshop/<workshop_id>/<имя_карты>.vpk вместо maps/de_dust2.vpk.

Дополнительно проверить текущее состояние можно прямо в консоли:

status

В блоке информации о карте будет видно имя загруженной карты — если это воркшоп-карта, имя обычно совпадает с тем, что задал автор в файле карты (не с числовым ID), так что заранее гляньте на странице Workshop, как карта называется внутри — по ID её не опознать на глаз в списке серверов.

Если сервер завис на загрузке дольше нескольких минут или откатился на предыдущую карту с ошибкой в логе — почти всегда причина одна из трёх: неверный Workshop ID (опечатка при копировании), карта реально несовместима с CS2 (старый CS:GO-контент без перекомпиляции), либо не хватило места на диске — Workshop-карты тоже пишутся на диск сервера, и при активной коллекции из десятков карт места уходит больше, чем закладывали при установке.

Популярные жанры кастомных карт

Мастерская CS2 не ограничивается конкурентными de_ и cs_ картами — вот основные жанры, которые реально стоит поискать под конкретный формат сервера:

  • Surf — карты с наклонными поверхностями, по которым игрок скользит на скорости за счёт грамотного управления воздушным ускорением (sv_airaccelerate). Отдельный жанр движения, почти не про стрельбу — под него обычно настраивают физику отдельно (например, снижают гравитацию или трение) и держат чистый сервер без другого игрового режима.
  • Bhop (bunny hop) — похожий принцип на скорости прыжков без потери инерции. Для комфортной игры на сервере обычно включают sv_enablebunnyhopping 1 и sv_staminajumpcost 0, иначе штатная система стамины CS2 гасит серию прыжков.
  • Deathmatch-арены — компактные карты (часто на базе aim_ и awp_ вариаций) под быстрый respawn-фарм и разогрев прицела перед конкурентными матчами, без раундовой структуры.
  • Retake-карты — усечённые версии стандартных карт с готовыми связками для отработки доигровок раунда: сразу расставленная бомба на точке, атака/защита без full-round экономики. Многие retake-сообщества дополнительно ставят плагин для авторасстановки раундов и статистики — это уже отдельная тема поверх базовой загрузки карты через Workshop.

Для surf и bhop карт обычно нужна отдельная настройка server.cfg под движение (её логично держать в отдельном конфиге и подключать через +exec), не смешивайте её с конфигом обычного competitive-сервера — иначе физика ломается для всех режимов сразу.

Поднять сервер Counter-Strike 2 за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Можно ли использовать host_workshop_map и обычный mapcyclefile вместе?

Технически можно указать воркшоп-карту как стартовую через host_workshop_map, а дальше переключаться командой changelevel на карты из своего mapcycle, но чистая ротация воркшоп-карт удобнее собирать именно коллекцией — меньше ручной синхронизации.

Сколько весит типичная кастомная карта?

Сильно зависит от карты — от пары сотен мегабайт у простых surf-карт до 1-2 ГБ у детализированных deathmatch-арен с кастомными текстурами. Заранее точную цифру не назовёте, смотрите размер прямо на странице карты в Workshop перед добавлением в коллекцию.

Нужно ли владельцу сервера самому подписываться на карту в Steam, чтобы её раздавать?

Нет, подписка не требуется — сервер обращается к Workshop API по ID напрямую, независимо от того, подписан ли на карту Steam-аккаунт, под которым запущен SteamCMD.

Что делать, если карта у части игроков не грузится, хотя у остальных всё нормально?

Чаще всего это старый локальный кэш воркшопа с повреждённым файлом на стороне клиента — игроку стоит попробовать переподключиться или почистить кэш загрузок Steam-Workshop контента в настройках клиента.

Как посмотреть, сколько места на сервере уже занято под воркшоп-карты?

Кэш карт лежит в подпапке content внутри директории установки — размер можно глянуть обычным du -sh по этой папке, полезно проверять периодически при активной коллекции из полусотни карт и больше.