Counter-Strike 2
Оценок: 25
Декомпиляция карт Counter-Strike 2
От Medni
В этом руководстве я опишу процесс декомпиляции карт из Counter-Strike 2 на новом движке Source 2
   
Наградить
В избранное
В избранном
Удалить
Предисловие
Руководство обновлено 26.01.2025
В этом руководстве я покажу единственный доступный способ декомпиляции карт из CS2 на момент 26.01.2025.
Для этого нам понадобиться:
  1. Counter-Strike 2 Workshop Tools
    Установить его можно нажав ПКМ по игре в библиотеке Steam - Свойства - Доп. контент - поставить галочку на пункте "Counter-Strike 2 Workshop Tools"
  2. Source 2 Viewer
    Скачать можно с официального сайта[valveresourceformat.github.io].

    Установки не требует. В этом руководстве используется последняя стабильная версия 11.1.
Декомпиляцию я буду проводить на примере официальной карты Inferno
После того как всё готово - можем приступать!
Декомпиляция карты
  1. Создание нового аддона
    Первым делом нужно создать новый аддон с которым мы будем работать в дальнейшем.
    В Counter-Strike 2 используется новая система аддонов как в Dota 2. Аддон - это как мод для игры. В нашем случае аддон будет содержать только нашу карту, но он так же может содержать много чего другого вплоть до целой компании для прохождения со своими скриптами, моделями и звуками.
    Заходим в библиотеку Steam и находим CS2. Нажимаем играть и в открывшимся окне выбираем пункт "Counter-Strike 2 Workshop Tools" и снова нажимаем в этом окне играть.



    Теперь у вас открылось меню создание аддонов. Здесь необходимо нажать "Create New Addon" - Дать имя аддону и нажать кнопку "Create"
    Теперь созданный аддон появиться в списке снизу. Просто нажмите два раза левой кнопкой мыши по нему и он запуститься.
    При запуске будет открыта окно самой игры с главным меню и Asset Browser который показывает все доступные ассеты для использование. Это может занят некоторое время в зависимости от мощности вашего ПК. Пока все инструменты запускаются можно перейти к следующему шагу.
  2. Декомпиляция и экспорт карты
    Запускаем программу Source 2 Viewer. В окне программы сверху слева нажимаем File - Open.

    Официальные карты CS2 находятся по следующему пути: место_где_ваша_папка_с_игрой\Counter-Strike Global Offensive\game\csgo\maps
    В этой папке выбираем желающую карту для декомпиляции без суффикса _vanity, в моём случае это de_inferno.vpk
    Файлы с суффиксом _vanity - это урезанная версия карты, которая используется в главном меню

    После открытия карты в программе Source 2 Viewer, структура карты будет показана слева. Всё что нужно сделать - это найти файл de_inferno.vmap_c
    В моём случае этот файл называется de_inferno. У вас файл будет называться тем же именем. что и карта, которую вы хотите декомпилировать

    Теперь нужно нажать правой кнопкой мыши по этому файлу и в контекстном меню выбрать пункт Decompile & export.

    Теперь программа спросит у вас, куда сохранить декомпилированую карту. Сохранить её нужно по следующему пути: место_где_ваша_папка_с_игрой\Counter-Strike Global Offensive\content\csgo_addons\имя_аддона\maps
    Тип файла ОБЬЯЗАТЕЛЬНО нужно изменить на "vmap file(*.vmap)"
    И нажать кнопку сохранить

    После начнётся процесс декомпиляции и экспорта карты. Это займёт немного времени. Об окончании этого действия будет свидетельствовать заполненная шкала прогресса сверху и активная кнопка "Close" внизу с права. Просто нажмите эту кнопку и можете полностью закрыть программу Source 2 Viewer.

  3. Открытие карты через Hammer Editor
    Пока мы занимались декомпиляцией карты, инструменты мастерской CS2 должны были уже запуститься и прогрузиться. Находим окно "Asset Browser" и в нём под кнопкой File в верхнем левом углу нужно нажать на иконку молотка для запуска Hammer Editor.

    В открывшимся окне Hammer Editor нужно нажать в верхнем левом углу File - Open

    В открывшимся окне нужно перейти до того места куда вы декомпилировали карту, а именно: место_где_ваша_папка_с_игрой\Counter-Strike Global Offensive\content\csgo_addons\имя_аддона\maps
    И здесь уже выбрать карту которую мы декомпилировали в формате *.vmap.

    После загрузки у вас в редакторе откроется карта, которую вы декомпилировали.

    Теперь вы можете её редактировать и менять как вам угодно!
Заключение
Повторюсь: Руководство актуальное на момент 26.01.2025. Если появился более новый и лёгкий способ декомпиляции карт или текущий способ изменился, прошу сообщить мне следующими способами: Оставлять комментарии под этим руководством, писать мне в Steam(оставлять комментарии у меня в профиле(Найти меня можно в авторах руководства)) или писать мне на email: v.yaroshevskyi@outlook.com.
Раздел с известными проблемами был удалён, так как новая версия Source 2 Viewer теперь декомпилирует карты правильно, соответсвенно, геометрия карт и отображение правильное.
Спасибо за внимание. Если кто то хочет отблагодарить меня, оставляю тут свои кошельки:

Кошелёк
Адрес
USDT(TRON)
TKFjuh42PnUFUhSU5wLE4MUbxXKob9pXa1
USDT(Ethereum)
0xcfbeb4db8032d91273e03657f0f06eb7492e3653
SOL
EbeS4nSZUJGVKroD1kfZ2DC7E6L6mWecXvLhZNyWxzbF
TON(OKX)
UQAsTWCi-D4PKmGWExKF9HCc7_7peIH0ZLxAix6Qqu-SZWgq
Комментариев: 85
Привет всем. Хочу сделать кастомный фон в лобби, в CS:GO и так все знаю что просто нужно было заменить файлы. На Source 2 разрабы решили использовать уже рендерить фон из *_vanity.vpk, так вот у меня задача минимум это просто поставить заготовленное видео. Так вот хочу получить от вас умную мысль по этому поводу, если ли простой вариант, или нужно изучать Hammer и если возможно размещать там видео и направлять на него камеру. В таком случае как будто уже проще разместить свой объект(например никнейм) на готовую карту и все
GIGAZANOS 15 апр в 11:40 
Дело в том, что я как раз закидываю папку 730 на чтение, но ничего нового не открывается( и удалять тоже пробовал, попробую попозже ещё раз, мб сработает
Medni  [создатель] 14 апр в 11:26 
Если ты про то, что программа начинает тупить и не открывать карты, то удали её и скачай последнюю версию с сайта. А если ты не можешь найти карты из мастерской, то они находятся по пути \SteamLibrary\steamapps\workshop\content\730\. У меня всё отлично работает на последней версии программы на момент 14.04, а именно версия 11.1.4050
GIGAZANOS 14 апр в 6:20 
гайс, помогите! у меня вообще перестали добавляться карты в список sorce 2 viewer.. я только что сидел и посматривал карты из мастерской для кс2 и вот спустя буквально минут 15 стал замечать, что карты тупо не отображаются в списке программы. Как решить проблему?
j to the</ 12 апр в 2:46 
Главное объяснил, спасибо!
Medni  [создатель] 11 апр в 3:44 
Пример: при декомпиляция не правильные текстуры или модели подтянулись. Или какие то объекты продублировались. Плюс декомпиляция происходит через ноды, а не так как это выглядило у разработчиков карты. Прости за столько тофтологии и + это чисто моё мнение, может на самом деле проблема в другом. Итог один: оптимизация лежит на плечах разработчика, который компилирует карту. Ищи способы уменьшит размер. Но задача это не из простых
Medni  [создатель] 11 апр в 3:44 
Декомпиляция происходит не с помощью официально инструментария, а значит эти инструменты учаться методом тыка считывать файлы карт. Нет не какой документации или API, что бы правильно считывать и декомпилировать карты. Соответственно декомпиляция происходит не точно, из за чего страдает оптимизация.
j to the</ 10 апр в 13:59 
Вопрос, изначально карта из мастерской весила 250мб после декомпиляции и снова сборки стала весить 500мб, в чём проблема?
Роман Скли-клак 19 мар в 9:44 
Да, есть, а ты можешь подсказать как отличить модели через которые я прохожу насквозь и включить им коллизицию никак (наверное) от статик физических моделей, и как на них накладывать текстуры, потому что там можно только цвет поставить. создатель данного "треда" можно ли тебя добавить в друзья и задать несколько вопросов, у меня огромная проблема с компиляцией, ошибка "vk_error_device_lost" , что-то с vullan, решений найти не могу, спасибо.
Medni  [создатель] 19 мар в 2:10 
Вообще, все модели, текстуры, декалии и т.д. Доступны в Ассет браузере в любом даже пустом проекте. Тоесть ты на пример в новом аддоне на пустой карте ставишь ентети тип которого prop_static или prop_dynamic, и в свойствах ентети выбираешь нужную модель, которых там просто огромное количество