Modный Quake. Программная часть
Помните пословицу «Встречают по одежке, а провожают по уму»? Наверняка помните. У вас было достаточно времени, чтобы обновить «гардероб» Quake- а. Я надеюсь, с этим проблем не было. Пришло время и в «голове» игры полазить, то бишь в ее коде. Меньше слов — больше дела.
Хирургические инструменты
Для начала поговорим о том, при помощи чего мы будем копаться в «мозгу» пациента. Содержимое папки «vm» — это уже закомпилированные коды игры. Работать с ними не представляется возможным. Для «хирургического» вмешательства стоит скачать исходные коды (в простонародье исходники), например, тут http://vr.manarchy.net/files/q3source.exe. Далее нам понадобится компилятор языка. Использовать мы будем Microsoft Visual C++. Именно на нем писалась сама игра. Этот компилятор довольно распространен, а тем, кто не имеет его в наличии, посоветую одно: метнуться в ближайший прокат и взять его. Поспешу обрадовать тех, кто споткнулся на названии языка. Никаких специальных знаний для внесения простейших изменений в игру не потребуется. А потребуется нам поверхностное знание английского или наличие переводчика. Ну и напоследок, самое главное, что нам понадобится, это сам Quake версии 1.32. Если же у вас более ранняя версия, то стоит скачать патч.
Приготовления перед «творением»
Для начала установите исходные коды игры. Я устанавливал их в каталог по умолчанию. Это поможет избежать путаницы с оригинальными файлами игры. Далее необходимо произвести некоторые изменения в параметрах Windows'a. Для Windows ХР (т.к. она более популярна на сегодняшний день) выполняем следующее: правый клик по значку «Мой компьютер»/Свойства/Дополнительно. Внизу окна будет кнопка «Переменные среды». Нажимаем ее и в появившемся чуть ниже середины экрана окне в «Системных переменных» ищем переменную Path. Выставляем ее параметры на «C:\quake3\ source\bin», где C:\quake3\source\bin — это путь к компиляторам.
Наш первый серьезный мод
Ну что же, мы прошли долгий путь от создания самого элементарного и подошли к более серьезному. Осталось только перешагнуть эту черту, и все будет ОК.
Первоначально поставим конкретную задачу: нужно добиться того, чтобы счет был, как в футболе. «А как?» — спросите вы. Просто-напросто делаем повреждения в 5 раз меньше. Например, у рокета максимальные повреждения при прямом попадании 100. А мы хотим 20. Заходим в папку с проинсталлированными исходниками и ищем там файл quake3sdk.dsw. Если вы устанавливали коды в каталог по умолчанию, то он будет тут: C:\quake3\source\ code\quake3sdk.dsw. Далее открываем файл C:\quake3\source\code\game\ g_missile.c и переходим к 621 строке. В Microsoft Visual C++ это легко сделать, нажав Ctrl+G и вписав нужную строку. Мы видим все параметры выпущенной ракеты. Самое простое — это с какой скоростью она летит (VectorScale(dir, 900, bolt->s.pos.trDelta), где 900 — это скорость), сколько она летит (bolt->nextthink = level.time + 15000), какие повреждения наносит (bolt->damage = 100), какие повреждения от взрывной волны (bolt- >splashDamage = 100) и на какое расстояние (bolt->splashRadius = 120). Нам нужно не что иное, как bolt->damage = 100. Изменяем 100 на 20. Чтобы была полная гармония, изменим и bolt->splashDamage = 20. Подобным образом изменяем параметры для BFG (581 строка), для гранатомета (строка 539) и для плазмы (497 строка). Сохраняем файл. Осталось изменить повреждения у остального оружия. Их параметры хранятся в файле g_weapon.c в той же папке. Аналогично изменяем их (повреждения примерно в 5 раз меньше). Затем в Microsoft Visual C++ на верхних раскладках выбираем Project/Set Active Project/2 game и жмем F7. Если все выполнено верно, то вы увидите сообщение:
Linking...
LINK: LNK6006: program database C:\quake3\source\code\ game\Debug_TA\qagamex86-pdb missing; performing full link
Creating library Debug_TA/ qagamex86.lib and object De- bug_TA/qagamex8 6.exp
qagamex86.dll — 0 error(s), 0 warning(s)
В этой же папке есть файл game.bat. Запускаем его. После недолгого процесса компиляции у нас появляется заветный файл вот тут: C:\quake3\baseq3\vm\qagame.qvm. Упаковываем его в архив, как описано в первой части статьи, и наслаждаемся.
Кравченко Олег aka erRor