Обновление CS2 (1 окт. 2026 г.)
Rush 001 получил глубокую переработку скриптов и документации, настройки прицела расширены новым квадрантным стилем и управлением цветом обводки, Vulkan-шейдеры пополнились, а данные капсул Cologne 2026 реструктурированы для volatile‑ценообразования и интегра‑
Кратко
- Скрипт Rush 001 (логика башен, туман, звуки и UI) серьёзно рефакторен и документирован, при этом основные правила tug-of-war не изменились.
- Настройки прицела расширены: добавлен стиль Static Quadrant, значительно увеличены диапазоны gap и thickness, а также введено отдельное управление цветом и прозрачностью обводки в конварах и UI.
- Ретикл-арт для друзей/наблюдателей удалён, сосредоточив разработку вокруг основного настраиваемого прицела и связанных шейдеров.
- Наборы наклеек и хайлайтов Cologne 2026 теперь проходят через новый volatile-префаб капсул, что централизует поведение volatile контейнеров и убирает устаревшие поля spray.
- Добавлен и обновлён большой набор Vulkan-шейдеров и дефолтов компилятора ресурсов, стандартизирующий рендер персонажей, оружия, перчаток, декалей и UI для игроков и создателей.
- `gameinfo.gi` расширен, объединив настройки движка, рендера, инструментов, nav и аудио в одну конфигурацию, что делает работу Hammer и resourcecompiler более предсказуемой.
Это обновление перезапускает скрипты и UI режима Rush 001, добавляет новый набор Vulkan-шейдеров, значительно расширяет настройки прицела (включая новый квадрантный стиль и управление цветом обводки) и упрощает как конвейер инструментов, так и данные турнирных предметов.
Обновления прицела и HUD
- Новый стиль и лимиты прицела:
cl_crosshairstyleтеперь допускает значения до9; стиль9в UI обозначен как Static Quadrant. Стиль7в тексте переименован в Dynamic Quadrant для более точного описания визуала. - Значительно расширенный диапазон gap:
cl_crosshair_gapтеперь принимает значения от-3840до3840(ранее 0–128), что даёт крайне тонкую настройку для очень компактных или наоборот широко разнесённых прицелов, включая нетипичные конфигурации на высоких разрешениях. - Небольшое увеличение верхней границы толщины:
cl_crosshair_thicknessтеперь поддерживает до32(ранее максимум 31), давая чуть больше свободы для жирных линий. - Управление цветом обводки прицела: Новые per-user-конвары
cl_crosshairoutline_r,_g,_bи_a(0–255) задают RGB-цвет и прозрачность обводки. Меню опций теперь показывает это как “Outline Color and Transparency”, позволяя отделять внутренний цвет от обводки для лучшей видимости на разных картах. - Тонкая настройка квадрантов: Для квадрантных прицелов добавлен слайдер “Quadrant Size” (
GameUI_StaticQuadSplitRatio), который позволяет точнее регулировать размер каждой четверти. - Удалена отдельная ретикл-артка для друзей/наблюдателей: Старые HUD-ресурсы ретикла и XML-записи для специальных изображений друзей и наблюдателей удалены из макета HUD и связанных изображений. Это указывает на консолидацию вокруг основного настраиваемого прицела вместо дополнительных наложенных артов.
- Очистка логики панели победы: Логика и график вероятности выигрыша в конце раунда и панель MVP (
hudwinpanel.js/hudwinpanel_background_map.js) получили большой внутренний рефакторинг и комментарии. Поведение не изменилось, но код теперь чётче документирует последовательность обработки хитов, изменения шансов, звуков и фонов MVP. - Хуки для отчёта урона после раунда: Скрипт учёта команды теперь явно логирует и управляет панелями Post-Round Damage Report, связывая их с существующими классами анимаций. Поведение сохранено, но рефакторинг упростит будущие правки таймингов и видимости попапов.
- UX-правки контроллера демо: Скрипт UI демо добавляет более описательные комментарии и улучшает внутреннее состояние для:
- переключателя highlights vs. round playback и текста,
- расположение маркеров интервала под таймлайном,
- обработки переключателей TrueView и DOA. Эти изменения направлены на надёжность и ясность, а не на видимые новые функции.
Rush 001: глубокий перепис скриптов и улучшения удобства
Скрипт режима Rush 001 (maps/scripts/rush_001.js) был глубоко переписан, с более понятной логикой и подробной внутристрочной документацией. Правила геймплея остались прежними, но поток выполнения стал гораздо явнее.
Подтверждённые детали поведения из обновлённого скрипта:
- Линейная «перетягивание каната»: Режим описан как семи-комнатный tug-of-war, где террористы толкают в сторону индекса комнаты 6, а CT — в сторону индекса 0. Специальная decider room («Convoy») зарезервирована для ситуаций 9–9 и не участвует в обычном случайном выборе комнаты.
- Выбор комнат и идентичности: Комнаты организованы по индексам с определёнными наборами ID для каждого слота (напр., базовые комнаты с ID 301/401, стартовый кластер 101–104, пул средних комнат 201–212). Комментарии маркируют комнаты по именам (Spire, Trainyard, Crane, Hydra и т.д.), но практическое поведение — выбор из фиксированного списка допустимых ID для каждого индекса.
- Отслеживание матчей и раундов:
- Скрипт внутренне отслеживает выигрыши раундов по командам, поскольку API скриптинга не даёт прямого доступа к счёту команд.
- Он аккуратно детектирует перезапуск матча движком (например,
mp_restartgameили окончание матча) и пересеивает расположение комнат и счётчики, чтобы избежать рассинхронов. - В режиме разогрева (warmup) логика конца раунда обходится, чтобы ничьи в разогреве не портили состояние tug-of-war.
- Логика фронта и победы:
- В конце раунда индекс frontline room сдвигается в сторону победившей команды.
- Если фронт пересекает крайнюю базу (вне первого или последнего играбельного индекса), матч немедленно завершается в пользу соответствующей команды.
- Если максимальное число раундов исчерпано, но обе базы всё ещё стоят, победитель определяется сначала по сумме выигрышей раундов, а при равенстве — по тому, какая сторона сдвинула фронт ближе к базе противника. При полном балансе результат трактуется как ничья.
- Поведение решающего раунда: Когда обе команды находятся на одну победу от финала (например, 9–9 в гонке до 19) или при форсированном включении, скрипт подставляет Convoy в слот фронта; эта комната затем гарантированно решит матч.
- Тайминги раундов по типам комнат: Базовые комнаты имеют более длительные таймеры раунда, чем средние. Скрипт заранее настраивает
mp_roundtimeна следующий раунд так, чтобы движок зафиксировал нужную длительность. - Обработка уничтожения команды:
- Скрипт детектирует, если команда была полностью уничтожена, при этом учитывает тестовые ситуации с пустыми командами, чтобы они не проигрывали автоматически.
- Если обе команды выбыли, победителя решает текущий контроллер комнаты; в остальных случаях побеждает последняя выжившая команда.
- Случаи «wipe без убийств» (напр., отключения) обрабатываются дополнительной проверкой после захватов кнопок.
- Опциональный флаг
END_ROUND_ON_TEAM_ELIMINATIONостаётся, но по умолчанию выключен.
- Отсчёт после элиминирования: Если элиминация не завершает раунд мгновенно, скрипт может запустить отсчёт с финальным сигналом и звуком конца времени, оставляя возможность захватов комнат до окончательной фазы.
Антенна, маяки и звуки
Система башни/антенны в Rush была прояснена и отделена от особенностей авторинга карт:
- Одна общая антенна на карту: Вместо копий по комнатам используется одна сборка антенны, которой телепортируется в активную комнату каждый раунд на основании маркеров сущностей (
ant.base.<id>,ant.top.<id>). Это упрощает визуалы и снижает расходы на управление. - Высокие и низкие вершины антенн: Для некоторых ID комнат используется короткий мачт (низкие потолки), для других — высокий. Оба «топа» телепортируются, а неиспользуемый явно скрывается и у него отключена коллизия, чтобы игроки не сталкивались с невидимой геометрией.
- Боковые огни для комнат: В каждой комнате есть пара
light_barn(например,ant.side.light.201.a/b), окрашиваемых в цвет команды, контролирующей комнату. Скрипт:- Итерирует все комнаты и включает огни только в активной комнате, выключая везде прочих, что снижает стоимость динамического освещения в неиспользуемых областях.
- Использует центральную таблицу цветов команд, чтобы антенна, флаги и свечения были цветово согласованы.
- Свечение антенны во freezetime:
- В начале раунда антенна светится в цвете владеющей команды во время freeze, чтобы выделить цель.
- Как только раунд становится live (конец freeze), свечение убирается. Отдельного callback для freezetime нет, скрипт отслеживает
IsFreezePeriod()и переключает состояние при переходе.
- Глобальное vs визуальное состояние антенны:
- Скрипт отличает логическое владение комнатой (
_roomStates) от визуального цвета антенны (_antennaTeam), особенно на конце раунда. - При окончании раунда скрипт обновляет владение комнатой, но откладывает перерисовку антенны до следующего раунда, чтобы последний живой цвет оставался ассоциирован с реальным присутствием игроков.
- Скрипт отличает логическое владение комнатой (
- Поведение кнопки и маяков:
- Единственная общая кнопка на антенне испускает события
OnPressed, которые скрипт переподключает каждый раунд. - Нажатия кнопки:
- воспроизводят либо сигнал «press», либо «error» в зависимости от того, принадлежит ли башня уже нажавшей команде или раунд уже решён;
- обновляют контроль комнаты, антенновые огни и UI при валидном действии.
- Звуковые сущности для «idle hum», press, error, countdown beeps и time expiry динамически перенаправляются на кнопку текущей комнаты, чтобы авторам карт не требовалось дублировать их по комнатам.
- Единственная общая кнопка на антенне испускает события
Тиканье таймера и аудио окончания раунда
- Система терминального отсчёта теперь имеет явные темповые стадии и правила планирования:
- Несколько темповых стадий, каждая для фиксированного числа звуков (напр., интервалы 1.0с, 0.5с, 0.25с, 0.125с), используются по мере приближения таймера к нулю.
- Скрипт отслеживает время следующего тика и количество уже проигранных тиканий, продвигаясь по стадиям по мере исчерпания счётов.
- Заложена небольшая толерантность, чтобы думающий тик чуть раньше запланированного всё равно воспроизвёл звук, а не отложил его на следующий тик и не вызвал дрейф.
- Если сервер подвисает и отстаёт более чем на интервал, расписание перепривязывается к текущему времени, чтобы оставшиеся тики не накладывались плотной пачкой.
- Звук конца таймера воспроизводится только если раунд реально закончился по таймеру; выигрыши через элиминацию подавляют этот звук, чтобы избежать вводящей в заблуждение аудиоинформации.
Туман и атмосфера карт в Rush
- Скрипт централизует преднастройки тумана и сопоставления комнаты → пресет тумана:
- Ожидается сущность
env_gradient_fogс именемfog, которой управляют скриптовыми вводами. - Пресеты (например,
exterior,interior,tunnel,base) задают цвет, начальную и конечную дистанции, непрозрачность и спад. - Каждый ID комнаты мапится на пресет тумана (напр., интерьер для тесных комнат, tunnel для канализаций, base-style для замков).
- Комнаты, отсутствующие на карте, откатываются к дефолтному пресету.
- Ожидается сущность
- Эта система делает читаемость Rush более последовательной и упрощает тонкую настройку видимости и настроения покомнатно без ручной правки сущностей.
UI Rush и обратная связь для игроков
- HUD, специфичный для Rush (
rush_uipanorama layout), теперь управляется точнее:- Канонический список классов панелей комнат (напр.,
room_101) позволяет скрипту аккуратно чистить старые классы и применять новые при показе прогресса. - На старте раунда скрипт:
- обновляет индикаторы владения для текущей фронтовой комнаты,
- решает, показывать анимацию вперёд или назад в зависимости от прогресса команды, либо нейтральную анимацию «без прогресса», если никто не сдвинулся.
- Одна и та же панель прогресса переиспользуется для обеих команд с классами вроде
view-tиview-ct, чтобы каждая сторона видела ориентацию со своей точки зрения.
- Канонический список классов панелей комнат (напр.,
- Для каждого игрока подсказка «атаковать/защищать» обновляется в зависимости от того, какая команда контролирует башню, с вариантами CT/T и нейтральным описанием для наблюдателей.
- UI-код устойчив к разогреву и отсутствию сущностей (например, если Rush UI отсутствует, скрипт тихо пропускает вызовы вместо ошибок).
Турнирная экономика: логика капсул Cologne 2026
В items_game.txt внесены сосредоточенные изменения, касающиеся наклеек и наборов хайлайтов Cologne 2026:
- Новый префаб volatile capsule: Введён
cologne2026_sticker_capsule_prefab_volatile, унаследованный от основного префаба капсулы Cologne 2026 и определяющий атрибут"volatile container" "3". - Ящики теперь ссылаются на volatile-префаб: Несколько паков Cologne 2026 (напр., all-team, champion, rankings и highlights стадии 1–6) теперь используют
_volatileпрефаб плюс соответствующие модификаторыvolatile_pricing_*, вместо того чтобы прямо добавлятьvolatile containerв сами предметы:- Примеры:
crate_sticker_pack_cologne2026_all,crate_sticker_pack_cologne2026_champion, и несколькоcrate_highlights_pack_cologne2026_Xтеперь ссылаются наcologne2026_sticker_capsule_prefab_volatile.
- Примеры:
- Консолидация volatile-атрибутов: Прямые
"volatile container" "2"атрибуты были убраны из индивидуальных ящиков и перемещены в_volatileпрефаб, что указывает на централизацию поведения по volatile-ценообразованию или снабжению для этих капсул. - Поля, связанные со спреями, удалены: В одном из префабов Cologne 2026 были
"type" "spraypaint", вторичнаяitem_slot2/item_sub_position2какsprayиinv_graphic_artкакgraffiti. Эти поля удалены, что сигнализирует, что данный турнирный предмет больше не обрабатывается как spray-подобный инструмент.
По сути, это выглядит как бэкенд-подготовка к тому, как будут продаваться и ценообразоваться капсулы Cologne 2026. Поведение рынка или UI при продаже может измениться при публикации Valve, но само обновление в основном реструктурирует данные и не вводит предметы напрямую игрокам.
Питомцы и косметика: Pet Book и подсказки
Panorama-скрипты и ресурсы, связанные с питомцами и функцией pet book, также обновлены:
- Добавлены новые VTex-записи изображений для нескольких страниц pet book (например, «early days», «road trip», «park life», «balloons») для визуального наполнение фотокниги.
- Английская локализация расширила несколько строк подсказок pet book:
- Предыдущая единичная строка
pet_book_hint_adolescent_road_tripтеперь разделена на два варианта, каждый явно перечисляет набор карт, например «Dust II, Baggage, Inferno, or Train» и «Mirage, Nuke, Cache, or Ancient». - Это может означать, что система прогрессии питомцев использует более конкретные категории карт при выдаче фотозаданий, хотя прямых изменений геймплея здесь не подтверждается.
- Предыдущая единичная строка
- Много Panorama-скриптов (
pet_book_pages.js,pet_book_turn.js,vanity_pet_info.js,pet_photo_*попапы) были затронуты в рамках большого рефактора UI. Поведение, похоже, сохранено, но код стал чище и лучше документирован.
Набор Vulkan-шейдеров и конвейер инструментов
Значительная часть обновления затрагивает шейдерный пайплайн и инструменты, во многом влияя на создателей контента и производительность:
Новые и обновлённые Vulkan-шейдеры
- Десятки
*.slangшейдеров вshaders_vulkan_dir/shaders/vfx/были добавлены или обновлены, включая:- Основные шейдеры материалов:
csgo_character.slang,csgo_vertexlitgeneric.slang,csgo_lightmappedgeneric.slang,csgo_unlitgeneric.slang. - Шейдеры оружия и перчаток:
csgo_customweapon.slang,csgo_customglove.slang, плюсcsgo_customglove_preview.slangдля превью в осмотре. - Окружение и декали:
csgo_projected_decals.slang,csgo_decal_renderer.slang,csgo_water.slang,csgo_decalmodulate.slang,csgo_beachfoam.slang. - UI и служебные:
csgo_crosshair.slang,tools_wireframe.slang,csgo_tools_shading_complexity.slang,sky.slang,spritecard.slang.
- Основные шейдеры материалов:
- Манифесты для директорий шейдеров Vulkan и PC обновлены, чтобы включить эти файлы.
Для игроков это, вероятно, даст устойчивость и прирост производительности на Vulkan и более единообразную визуализацию персонажей, оружия, перчаток, декалей и UI. Для создателей Workshop и художников это стандартизирует набор CS2-специфичных шейдеров.
Настройки компилятора ресурсов и интеграция в gameinfo
Главный gameinfo.gi для CS2 был сильно расширен, объединив настройки, ранее разбросанные по внутренним «core» или «imported» конфигам, в один файл. Основные моменты:
- Дефолты движка и рендеринга:
SteamAppIdявно задан как710, мод/инструменты отмечены как 64-bit.- Система рендера по умолчанию и tools render system установлены в
-dx11, с блоком RenderingPipeline, который:- включает постобработку в основном пайплайне,
- поддерживает MSAA,
- включает режимы визуализации для инструментов и высокоточную подсветку.
- Console и ввод:
PauseOnCtrlConsoleпринудительно0, чтобы предотвратить паузу при удержании Ctrl + открытии консоли, как в Source 2; это приводит поведение к совместимости с CS:GO.RestrictConsoleCloseKeyустановлен на`, так что нестандартные бинды консолей могут открывать, но не закрывать консоль; Escape всегда закрывает, как в CS:GO.cl_joystick_enabledиpanorama_joystick_enabledпо умолчанию0, с возможностью включения игроком.
- Новые или закреплённые конвары:
demo_max_consecutive_skip_packetsпо умолчанию 2500 — лимит, насколько далеко воспроизведение демо может прыгнуть за один раз.r_particle_batch_collectionsустановлен в 1, что может улучшить батчинг частиц.spec_replay_enableограничен min/max 0, фактически отключая spectator replay с клиентской стороны пока что.
- Дефолты для resource compiler:
- Сборка карт: дефолтные билд-степы теперь включают baked lighting (
bakedlighting), генерацию navmesh (nav) и несколько проходов Steam Audio (sareverb,sapaths,sacustomdata). - MeshCompiler: включает кодирование вершинных/индексных буферов, данные per-draw culling, meshlets, генерацию тангенсов MikkTSpace и разделение depth stream.
- WorldRendererBuilder: включает visibility-guided clustering, использование статических envmap для некоторых объектов, запекание non-uniform scale и aggregate instancing.
- Baked lighting: настроен на детерминированные билды, LPV, дефолтные размеры lightmap и канавки, множественные световые каналы (irradiance, shadows, directional irradiance, debug colors) с сжатием DXT1.
- VisBuilder: ограничивает кластеров видимости до 4096 и включает параметры для детерминированной сборки с порогами слияния открытого пространства.
- Компиляция текстур: использует
lz4компрессию, сжатые mips на диске, поддержку NPOT-текстур, генерацию mips для Panorama и публичный дефолтный максимум разрешения инструментов 2048.
- Сборка карт: дефолтные билд-степы теперь включают baked lighting (
Для мапперов и создателей ассетов такая консолидированная конфигурация означает, что Hammer и resourcecompiler будут вести себя предсказуемее для CS2, с настройками, специфичными для CS:GO, заданными как дефолты.
Сцена, аудио и инструменты
Несколько модулей движка и инструментов получили новые возможности или более безопасные дефолты:
- SceneSystem:
- Подтверждён игровой набор возможностей: GPU light binning, динамическое разрешение теней, sparse shadow trees, point light shadows, character decals, firstperson legs, hybrid instanced fade support и несколько опций тонемапинга и тумана.
- Введены известные слоты light cookie для blank, flashlight и muzzleflash, поддержанные новыми текстурами в
materials/effects/lightcookies/.
- Particles:
- Настройки указывают, что частицы по умолчанию затуманены, поддерживают смешанное разрешение и умеют смещать трассировки коллизий в соответствии с настройками CS2.
- WorldRenderer:
- Стандартизированы настройки environment map (blur type GGX, формат BC6H, cube arrays, per-map atlases) и параметры рендеринга травы.
- NavSystem:
- Глобальные параметры navmesh (tile size, cell size/height, region thresholds, max poly edge length, detail sampling) определены, с
NavHullsPreset=defaultи интерфейсом билда nav, загружаемым изserver.dll.
- Глобальные параметры navmesh (tile size, cell size/height, region thresholds, max poly edge length, detail sampling) определены, с
- Hammer:
- Подтверждено, что Hammer CS2 использует
csgo.fgdиcsgo_internal.fgd, набор фич Counter-Strike, инструменты террейна, Steam Audio, lattice deformers, smart prop instance rendering и shadow atlas 6144x6144.
- Подтверждено, что Hammer CS2 использует
- ModelDoc и инструменты ассетов:
- ModelDoc помечает CS2-специфичные возможности, ужесточает обработку отсутствующих материалов и трактует предупреждения как ошибки для ключевых путей (агенты, модели оружия), повышая качество контента.
Очистка сетевого протокола
- Несколько типов сообщений Game Coordinator и сопутствующий enum
EInitSystemResultбыли удалены из общегоcstrike15_gcmessages.protoи клиентских схем:GC2ClientRefuseSecureModeGC2ClientRequestValidationGC2ClientInitSystemGC2ClientInitSystem_Response
- Поля, связанные с манифестами модулей, пакетa
