Поле брани, часть 1
Battlefield 2 стал очередной вехой в мире шутеров, заточенных под онлайновые баталии. Но… похоже, разработчики торопились выбросить продукт на рынок. То ли издатель подхлестывал мягким ремешком штрафов по упругим ягодицам, то ли создатели игры стремились выпустить BF2 в оптимальный срок. Но факт остается фактом — если в первой части игры был полноценный однопользовательский режим, то во второй простым смертным геймерам приходится довольствоваться безжалостно оскопленной версией мультиплеера.
Никакой кампании, никакого сюжета. Жалкие карты, умело обрезанные по краям коварными разработчиками, та кучка недалеких ботов, мельтешащих перед глазами, — даже на уровне “ветеран” играть с такими уникумами интересно не более двух-трех раз. А как объяснить отсутствие режима “кооператива” (совместной игры вместе с ботами)?! Просто нонсенс! Но если нехватку ботов народные умельцы устранили в модификации Coop Mod , то остальные проблемы остались неразрешенными. Поэтому нашему “оперативному отделу”, специализирующемуся на глубоком проникновении в чрево игры программным скальпелем и скриптовым корнцангом, пришлось засучить рукава, вызвать анестезиологов из отдела “Мастерская” и ударными темпами состряпать для вас полноценный сингл-режим для BF2.
Первые шаги
Познакомимся с содержимым игровой директории. Все основные файлы, необходимые нам при “вскрытии”, помещены в папку < Каталог игры>\mods\bf2. В ней вы обнаружите следующие подкаталоги: \Ai (несет в себе файлы с общими характеристиками AI — искусственного интеллекта — компьютерных игроков), \Levels (игровые карты), \Localization (встречающийся в игре текст), \Movies (ролики в формате bik ), \Objects (значки для различных видов вооружения, сохраненные в формате png ), \python (файлы с атрибутами различных режимов игры), \Settings (общие параметры геймплея). Все имеющиеся в этих директориях графические файлы — те, что имеют формат dds (а таких большинство), — обрабатываются с помощью пакета утилит DXT Tools (наличествует на нашем диске ).
Несколько слов о том, как им пользоваться. Чтобы перевести рисунок из dds -формата в tga , скопируйте его в директорию с утилитами. Запустите там файл readdxt.exe с параметром: readdxt <имя dds-файла> (например, readdxt Jeep_FAAV_b.dds ). После этого в программной директории появится файл test.tga с нужной вам картинкой. Последнюю вы можете перерисовать в любимом графическом редакторе (рекомендую воспользоваться Photoshop ).
Обратное действие — перевод tga -рисунка в формат dds — осуществляется посредством запуска файла nvdxt.exe с параметром nvdxt <имя tga-файла> (в данном случае — nvdxt test.tga ). Теперь вам остается только вернуть полученному файлу то имя, которое он имел до конвертирования в формат tga, и положить на свое прежнее место.
Наряду с перечисленными выше папками в каталоге \bf2 вы найдете ряд архивов. Все они записаны в формате zip. Так что работать с ними может любой архиватор. Файл Fonts_client.zip заключает в себе графические отображения игровых шрифтов (английским соответствует папка \English ) в виде картинок формата dds. Архив Common_client.zip хранит в себе основные игровые текстуры (имеют формат dds ) и звуки. Последние лежат в подкаталогах \Sound (звуковые файлы общего характера, в том числе и речь солдат) и \ Material (звуки, раздающиеся при попадании пуль в объекты из различных материалов). Графическим же файлам отводятся четыре папки: \Sky (текстуры неба), \Terrain (ландшафт) и \Textures (“природные” текстуры). Эти же папки есть и в архиве Common_server.zip — только здесь в них находятся файлы (они носят расширения txt и con ) cо звуковыми и графическими параметрами.
Пару слов об упомянутых чуть выше форматах файлов. Те из них, что наделены расширением txt и con , могут быть отредактированы в любом текстовом редакторе, даже в стандартном “Блокноте”. Что касается использующихся в игре звуковых файлов, то они бывают двух типов: .wav и .ogg. Если с первым все понятно, то второй можно прослушать в Winamp ’е версий Full и Pro.
Файлы Menu_client.zip и Menu_server.zip соответствуют графическому оформлению меню. В первом из них лежат рисунки (они используют форматы tga и dds ), во втором — текстовые файлы с параметрами последних. Оба архива имеют в себе несколько директорий. Нам может пригодиться каталог \Hud , в котором вы найдете картинки для HUD’а — экрана героя. Вы можете легко его переоформить.
Самыми содержательными архивами являются Objects_server.zip и Objects_client.zip. Они несут в себе следующие каталоги (рассмотрим только те из них, что могут быть нам полезны): \DynamicObjects (соответствует движущимся объектам), \Effects (эффекты), \Kits (снаряжение, использующееся солдатами из различных родов войск), \Roads (дороги), \soldiers (солдаты), \staticobjects (неподвижные объекты), \Vehicles (транспортные средства), \water (вода), \Weapons (оружие). Разница между архивами заключается в том, что в первом из них располагаются файлы с характеристиками перечисленных объектов и субъектов, а во втором — относящиеся к ним звуки (находятся в подкаталоге \Sounds ), модели ( \meshes ) и текстуры ( \textures ).
Теперь, когда вы знаете, где что хранится и как работать с форматами, вы в состоянии свободно редактировать графические и звуковые файлы игры. В частности, вам не составит труда перезаписать (хотя бы частично) речь солдат, которая по преимуществу состоит из коротких команд, попутно переведя ее на русский. Ведь так приятно, когда персонажи говорят знакомым вам голосом (вашим или ваших друзей), да еще и на родном языке!
Сингл VS. Мульти
Обратите внимание, что все описанные в статье изменения делают невозможным играть в BF2 через интернет. Дело в том, что сервер при подключении проверяет контрольную сумму всех основных архивов игры, и если их значения отличаются от присутствующих в лицензии, то вас выкинет из игры. Поэтому прежде, чем вносить какие-либо изменения в оригинальные файлы игры, обязательно сделайте копию их, чтобы в дальнейшем в любой момент можно было восстановить мультиплеерный режим.
Расширение карт
Пора приступать к созданию модификаций. Первая из них сделает возможной игру на картах для 32 и 64 солдат в синглплеере. Разберем “расширение” уровней на примере первого — Dalian plant. Сначала откройте папку \mods\bf2\Levels. В ней вы увидите ряд подкаталогов, каждый из которых соответствует той или иной карте (какой — видно из названия папки). В нашем примере нас интересует директория \Dalian_plant. Если же вы хотите увеличить какой-то другой уровень, вам придется работать с файлами из другого, соответствующего интересующей вас карте каталога. Но какой бы уровень вы ни избрали, вы обязательно обнаружите в его папке каталог \Info (здесь хранятся файлы с общими характеристиками карты и ее загрузочные картинки), а также архивы client.zip и server.zip. Первый из них полон всевозможных картинок, предназначенных только для данного уровня (как-то его полная карта, уникальные текстуры и так далее).
Архив server.zip наполнен файлами с разнообразными параметрами карты. Именно к этому архиву мы в первую очередь и обратимся. Найдите в нем папку \GameModes — она посвящена различным режимам игры, доступным на данной карте. Эта директория, в свою очередь, несет в себе два подкаталога: \gpm_cq (соответствует мультиплееру) и \sp1 (одиночный режим игры). Поскольку многопользовательская карта имеет три вариации (в зависимости от количества игроков), папка \gpm_cq состоит из трех подкаталогов ( \16 , \32 и \64 ), в отличие от \sp1 , содержащей только один ( \16 ). В каждом из названных подкаталогов имеются директория \ai (в ней вы найдете файл StrategicAreas.ai , задающий поведение компьютерных игроков на данной карте), и файл GamePlayObjects.con.
Последний можно условно разбить на четыре части. Первые три имеют соответственно названия (в файле они отмечены с двух сторон рядом звездочек): Object Spawner , Spawn Points и Control Points. В первой части задается местонахождение объектов (стационарного оружия, транспорта, передвижных радаров и др.) на карте. Во второй — расположение точек респавна (мест “рождения” солдат). В третьей — координаты контрольных точек (команде, владеющей такой точкой, начисляются очки). Наконец, четвертая — безымянная (начинается строчкой CombatAreaManager.use 1 ) — часть определяет область боевых действий (именно ею главным образом отличаются друг от друга карты различных размеров) на карте. Обратите внимание на то, что в начале строк-заголовков частей стоит сокращение rem , свидетельствующее о том, что они закомментированы (то есть игрой не учитываются).
Следует отметить, что первая и третья части, в свою очередь, состоят из двух больших блоков. Второй начинается строкой if v_arg1 == host и содержит координаты объектов (будь то военная техника или контрольная точка), прописанных в данной части файла. Оба блока разбиты на подразделы (каждый из них посвящен отдельному объекту), имена которых взяты в квадратные скобки и закомментированы.
Приступим к редактированию файла GamePlayObjects.con , лежащего в папке \GameModes\sp1\16. Он отведен под параметры сингловой карты на 16 игроков. Начнем его правку с конца — с четвертой части — и расширим зону боевых действий сингловой карты. При этом нам пригодятся одноименные файлы из упомянутых далее подкаталогов папки \GameModes\gpm_cq архива server.zip , относящегося к нужной вам карте (в нашем случае это, напомню, уровень Dalian plant , которому соответствует каталог \mods\bf2\Levels\Dalian_plant ). Загляните в подкаталог \32 , если вы хотите увеличить уровень до размеров многопользовательской карты для 32 игроков, и в \64 — если для 64. Мы изберем последний вариант, дабы сделать карту максимально полной.
Откройте файл GamePlayObjects.con из директории \64. Скопируйте в буфер обмена всю его четвертую часть (от строки CombatAreaManager.use 1 включительно и до конца файла) и замените ею аналогичный кусок кода одноименного файла из каталога \GameModes\sp1\16. Теперь одиночная карта, рассчитанная на 16 солдат, сравняется по размеру с 64-игроковой мультиплеерной. Но это лишь первый шаг на пути создания расширенного уровня — на нем необходимо также расставить военную технику и контрольные точки в соответствии с полноразмерной картой.
Обратимся к третьей части подопытного файла GamePlayObjects.con, она называется Control Points. Посредством ее правки мы добавим на одиночную карту новые контрольные пункты, позаимствовав их из многопользовательского 64-игрокового уровня. В этом вам поможет файл GamePlayObjects.con из директории \GameModes\gpm_cq\64. Сравните его третью часть с соответствующим фрагментом одноименного файла, относящегося к синглу. Вы обнаружите, что они имеют различия: в первом случае подразделов в обоих блоках намного больше, чем во втором. Но есть и одинаковые подразделы (точнее, отличия между ними есть, но они минимальны, тогда как сами подразделы посвящены одинаковым по расположению точкам) — на конце первых двух строк они имеют одно и то же сочетание.
Вы должны скопировать в буфер те подразделы третьей части файла, посвященного карте для 64 игроков (при этом нам нужны как те из них, что находятся в первом блоке, так и те, что во втором), которые отсутствуют в его сингловом собрате, и вставить их в файл сингловой миссии. В примере с уровнем Dalian plant это подразделы ControlPointTemplate: CPNAME_DP_64_uscarrier (далее для краткости будем называть их по заключительному — уникальному — фрагменту названия), northdocks , southdocks , airfield , warehouse , maintenancebuilding. Таким образом, всего нужно добавить в файл 12 подразделов — по 6 на каждый из блоков третьей части. При этом подразделы одного блока первого файла должны быть скопированы в тот же раздел второго. В итоге одиночная карта обретет шесть новых контрольных точек.
Следующий этап — это перенос военной техники и точек респавна с крупной многопользовательской карты на сингловый уровень. Осуществляется эта операция путем замены первых двух частей файла GamePlayObjects.con , лежащего в каталоге \GameModes\sp1\16 , соответствующими фрагментами одноименного файла из папки \GameModes\gpm_cq\64. То есть вам нужно скопировать весь код, идущий до комментария Control Points.
Расширенная сингловая карта готова. Предложенная выше схема подходит для всех уровней. Поэтому эту операцию желательно проделать со всеми картами, ведь сражаться на масштабных уровнях куда интересней, чем на весьма ограниченной территории.
С увеличением карт будет логично повысить число ботов, участвующих в битве (см. следующую главу). Скажем, если вы расширили карту до максимальных размеров, количество компьютерных игроков желательно сделать соответствующим — 64 (или даже больше). Тогда играть на больших картах будет крайне увлекательно.
Боты
Боты в Battlefield 2 — это отдельная тема для разговора. Очевидно, что с ними связан целый ряд проблем, о которых уже говорилось. Мы же займемся их устранением. Первым делом мы научимся регулировать их количество и повысим уровень их боевых навыков в синглплеере.
Параметры ботов вы найдете в каталоге \mods\bf2\Ai. Общие характеристики искусственного интеллекта ваших врагов прописаны в файле AIDefault.ai , совсем небольшом по размеру, но от этого не менее значимом. В файле находятся несколько важных параметров компьютерных игроков, в том числе aiSettings.setMaxNBots (определяет число ботов) и aiSettings.setBotSkill (уровень их AI). Значения каждого здешнего параметра отделяется от его названия пробелом и может быть легко изменено.
Пропишите в значение первого атрибута нужное вам количество ботов. Кроме того, замените ноль, соответствующий следующему параметру — aiSettings.maxBotsIncludeHumans, единицей. Ботов может быть как меньше, чем в оригинале, так и больше. Второй вариант выглядит предпочтительнее. Например, если вы поставите 32 или 64 бота, геймплей станет более хардкорным. А уж если вы остановите свой выбор, скажем, на 128 игроках — настоящая мясорубка обеспечена. Впрочем, в последнем случае вам не избежать периодических тормозов, если только у вас не суперсовременный компьютер.
Вторая настройка — aiSettings.setBotSkill — тоже будет нам полезна. Исправляя ее значение, вы влияете на сложность игры. Число 0.4 соответствует легкому уровню (Easy), 0.7 — среднему (Veteran), 1.0 — сложному (Expert). Однако ничто не мешает вам поставить в значение показателя какое-то другое число. Оно может быть промежуточным (например, разумно ставить значения 0.5—0.6, если вы уже освоили легкий уровень, но еще не доросли до среднего), а также превышать наибольшее из них. Значения до 0.4 могут использовать новички, еще только осваивающие азы ведения боевых действий. Числа же выше единицы будут очень кстати профессиональным игрокам, свободно расправляющимся с оригинальными ботами. Подберите оптимальный для себя уровень, при котором вы сможете на равных сражаться с компьютерными соперниками.
Чтобы все изменения вступили в силу и “перекрыли” собой значения менюшных настроек, перед параметром aiSettings.setMaxNBots необходимо вставить строку aiSettings.overrideMenuSettings 1.
Продолжая тему ботов, предлагаю вам заглянуть в файл BotNames.ai из той же директории ( \mods\bf2\Ai ). В нем прописаны имена компьютерных игроков. Устроен же файл следующим образом. Каждая его строка — это отдельный параметр, имеющий вид aiSettings.addBotName X и соответствующий одному из возможных имен солдата (оно стоит на месте X). Правя текст, указанный вместо X, вы можете дать ботам новые имена. Как вариант можете дать всем им (или только некоторым из них) имена своих друзей и знакомых, а также ваших любимых героев из других игр или фильмов. Воевать бок о бок с хорошо знакомыми персонажами и против них весьма забавно.
* * *
Мы доработали сингл-составляющую игры. Ботов теперь больше, они стали умнее, а сражения с ними проходят на полноценных картах. Перед вами теперь совсем другая игра — с одинаково интересными сингловой и мультиплеерной частями. В ближайших номерах “Мании” мы продолжим создание разнообразных модификаций к Battlefield 2. Успехов вам на поле боя!