среда, 25 июля 2012 г.

Делаем собственную сборку игры Counter-Strike Source

Данное решение может пригодиться для разного. Лично мне надоели старые модели оружия и модели игроков, а также сильно не нравится, когда при использовании чьей-то сборки в меню игры находятся посторонние ссылки на какие то сервера и сайты, которые не понадобятся никогда.

Для начала нам необходимо иметь файлы самой контры, которые появляются после установки в папке  ProgramFiles. Скажу наперёд: если папку перекинуть на другой ПК и не пользоваться установщиком, то ваша КС запустится без проблем и будет работать, заходить на сервера.

Это говорит о том, что наши действия буду следующие:

  1. Устанавливаем , что можно назвать распаковкой
  2. Модифицируем
  3. Упаковываем

Как делать модификации
В контре можно сделать замену моделей, а именно установить оружие другого вида, поменять одежду игроков, изменить звуки и тд. На данный момент моделей очень много в интернете, чтобы их найти можно воспользоваться гуглом.

Установка моделей очень проста: Просто копируем файлы моделей в папку cstrike.

Как создавать своё меню игры
Для этого нам пригодится программа VTFEdit (Разработчик Valve)
Вот ссылка на неё:
vtfedit12520.rar   825 KB

Далее смотрим на скриншоты:
В меню находим Import, нажимаем
Выбираем изображение (Обязательно должно быть размером 4096х2048). Это можно отредактировать в фотошопе или воспользовавшись программой Gimp

 Выключаем чекбокс Resize, нажимаем OK (Для того, чтобы не перекосило наше изображение)
Сохраняем в формате vtf с именем background01_widescreen


Затем переходим следующую папку:
[папка контры]\cstrike\materials\console
Заменяем файл background01_widescreen.vtf на тот, который мы создали (имя должно совпадать).
Вот так вышло у меня:

Далее удалим или добавим ссылки в меню.
Вот патч на управляющий файл меню:
[папка контры]\cstrike\resource\GameMenu.res

Открываем его в блокноте или в любом другом редакторе, редактируем.
Чтобы добавить ссылку на свой сайт надо вставить такой код после "GameMenu"{

"номер пункта"
{
"label" "Название сайта"
"command" "url http://ctrockii.blogspot.com/"
}
Номер пункта надо обязательно соблюдать, иначе будет выскакивать ошибка. Слишком много ссылок добавлять не надо, на это очень негативно смотрят геймеры.

Также нельзя удалять из меню стандартные функции такие как Найти сервер, Настройки...

Перейдём к упаковке
Для упаковки в ексешник нам понадобится программа Inno Setup. Есть и другие, но это единственная программа, при помощи которой у меня удалось упаковать без проблем в один бинарник папку размером в 4,5 гб. При максимальной степени сжатия у меня получился ексешник весом 1,9 гб.

Скачиваем программу, заходим. Желательно предварительно установить русификатор к этой утилите, так как мои дальнейшие действия будут иллюстрироваться с русским вариантом.

Перейдём к созданию установщика.
Переместите предварительно папку контры из ProgramFiles на диск C:// (это для удобства)
Затем открываем установленную программу Inno Setup от имени администратора.
Теперь внимательно смотрим на ряд скриншотов ниже:

Создаём новый скрипт, выбираем создание при помощи мастера
Тут просто нажимаем далее

 Заполняем поля
 Нажимаем далее
Тут внимательно. В качестве основного файла должен быть тот ексешник, который лежит в той папке, которую мы будем упаковывать в бинарник.

В Другие файлы приложения вставляем ту папку, которую будем упаковывать.
 Ставим везде галочки (можете сделать по другому)
 Здесь можно вставить файлы лицензии, но я этим никогда не занимался =) Нажимаю далее
 Выбираем язык (В нашем случае Русский)
Указываем папку, куда будет упакована контра, даём название ексешнику, задаём иконку, пароль не стоит ставить
 Просто жмём далее
 Жмём готово
 Жмём да
 Жмём нет
 Там сразу автоматически начнётся пробная компиляция, её надо остановить (!ОБЯЗАТЕЛЬНО!). 

Перейдём к коду, а именно к вкладке Скрипт
Найдите такую строку:
[Setup]
Далее под ней замените значение переменной Compression на это:
Compression = lzma/ultra
Это устанавливает максимальный уровень сжатия архива данных.

Важное замечание
Я при работе наткнулся на то что, ни один упаковщик не хочет делать установочный пакет размером больше 2 100 000 000 байт. Это число эквивалентно 1,95 ГБ.

При максимальном уровне сжатия мой бинарник получился весом 2 081 983 644 байта, что очень близко к пределу. Для информации, исходный размер папки с контрой был 4 959 416 362 байт. Вот скрин:

Если при сжатии выскакивает ошибка, что размер превышен, то делаем деление на тома, то есть при приближении к числу максимального размера создаётся ещё один файл, в который продолжается запись, но минус в том, что эти файлы при распаковке обязательно должны лежать в одной директории. А также это выглядит не очень красиво, в сравнении с одим файлом распаковки.

Чтобы при компиляции делалась разбивка, с скрипте под [setup] должны присутствовать следующие переменные (Если такие уже есть, то замените на нужные парамеры):
DiskSpanning=yes
SlicesPerDisk=1
DiskSliceSize=2100000000
DiskClusterSize=4096
ReserveBytes=0
Compression=lzma/ultra
SolidCompression=yes

К этому вопросу надо пойти внимательно, так как процесс сборки контры занимает не меньше 30 мин и по сто раз переделывать не у всех хватит терпения. У меня, без наличия нормального описания получилась сборка лишь с третьего раза.

Компиляцию пока не начинать!
Переходим к вкладке Редактор форм, там можете вставить своё изображение в окно установщика и ссылку на свой сайт.

 Ниже показано как устанавливать изображение:
Нажимаем на изображение, потом на боковой панели справа находим пункт Bitmap. Далее понятно...

Следующим шагом можете вставить ссылку на свой сайт.
Для этого создаёте новый элемент label, даёте ему соответствующие атрибуты (устанавливаем размер букв, цвет, размер...). Все параметры и атрибуты всех элементов устанавливаются в боковой панели справа.
За текст лабельки отвечает атрибут caption.

Когда настроили внешний вид лабельки, переходим к программному коду, который будет открывать наш веб-сайт. Для этого два раза кликните по лабельки и у нас перед глазами появится исходник установщика, где курсор будет находится внутри функции которая будет выполняться при щелчке мыши по лабельке.
Как показано на скрине ниже, функцию надо заменить на эту:
procedure Label1Click(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('Open', 'http://ctrockii.blogspot.com/', '', '', SW_SHOW, ewNoWait, ErrorCode)
end;

На звание фунции должно быть таким как в исходном виде (!Обязательно!)
Адрес сайта можете вписать свой.

Также можно что нибудь от себя там добавить в форму, моё творчество закончилось на этом шаге.

Переходим к компиляции
Для этого нажимаем F9 или зелёную кнопку старта на панели инструментов.

Никаких ошибок быть не должно, но если они есть, то желательно проверить внимательно каждый сделанный нами шаг.

Если нет ошибок, то можно смело идти и курить, пачек десять, так как очень долгий процесс сборки такого огромного бинарника.

Куда заливать сделанную прелесть
Мой выбор пал как всегда на продукт гугла - Диск Google
Даётся 5 ГБ бесплатно на один аккаунт, а регистрируем мы сколько хотим.
Скорость скачивания не ограничена, работает отлично. Только стоит запомнить, что каждый раз при закачке туда надо давать публичный доступ, так как по умолчанию каждый закаченный файл личный и доступа к нему у остальных нет.

Также можно на яндекс заливать, но лично у меня к этому сайту негативное отношение. И там больше ограничений, каптча при скачивании...

На подобие этой сборки можно делать установщики любых программ, где не требуются дополнительные записи в системный реестр. Но и это можно всё подделать при желании.

Моя модификация КС будет выложена в следующем сообщении. 
Если у вас есть какие то поправки или пожелания, идеи и предложения, пишите в коммент.

6 коммент.:

Анонимный комментирует...

ЛУЧШЕ СКАЖИ!! КАК ТЕПЕРЬ ЕЁ ОБНОВЛЯТЬ!!!

Unknown комментирует...

Заменяешь папку бин в главной папке и в папке cstrike и в папке cstrike находишь конфиг Steam И в нём указываешь версию

Unknown комментирует...

не получается((( поможете сделать установочный я вам заплачу)

Анонимный комментирует...

Отличная статья, закомпилил с первого раза, и все работает на ура.

Unknown комментирует...

https://youtu.be/bNeIPCVRAGY

Вот сделал видео по этому примеру)

Unknown комментирует...

Скинь сылку на свою зборку

Отправить комментарий

TROCKII БЛОГ Copyright © 2012 | Template created by Lev Trockii |