Игра в материале
Battlefield 1942
?Рейтинг
Игромании
9Рейтинг
игроков
PC
Жанр: Боевик
Серия: Battlefield
Мультиплеер:  Интернет, локальная сеть
Разработчик: Digital Illusions
Издатель: Electronic Arts
Дата выхода: сентябрь 2002
Скульпторы игрового действа

Скульпторы игрового действа

Вскрытие — Скульпторы игрового действа
"...мы, во-первых, изучили теорию создания абсl
Игроманияhttps://www.igromania.ru/
Вскрытие
Скульпторы игрового действа
   "Скульпторы игрового действа" — уникальный материал. Вашему вниманию предлагаются не одна, а сразу четыре статьи, объединенные общим названием.
   В первой части, которая называется "МОДИФИЦИРОВАНИЕ", мы расскажем вам, как создать на базе Battlefield 1942 свой собственный мод. Какой вам только захочется. Не обойдется, конечно, без комментариев, как лучше изменить геймплей, чтобы модификация получилась сбалансированной, но в целом вы вольны вносить в игру любые изменения.
   Во второй части — "ИГРОВЫЕ РЕСУРСЫ" — детально разобрана вся "начинка" игры. Где лежат звуки, где видеоролики, где игровые модели... Здесь же мы дадим советы, как внедрять в игру новые модели персонажей и оружия.
   В третьей части — "УРОКИ КАРТОСТРОЕНИЯ" — мы научим вас создавать карты для игры. В Battlefield 1942 редактор карт отсутствует, но мы нашли способ, как можно на базе старых карт создавать совершенно новые уровни. Переделке поддаются абсолютно все параметры. Освоив уроки картостроения, вы сможете сделать уровни любой сложности для своего мода или для...

   ...совершенно новой игры, созданию которой посвящена четвертая и самая интересная часть данного материала — "НОВАЯ ИГРА!". Любой мод обычно имеет ту же жанровую принадлежность, что и игра, на базе которой он создавался. Мы же создадим целых две игры другого жанра. Аркадные гонки (со стрельбой или без стрельбы) и динамичный шутер, наподобие Quake III Arena или Unreal Tournament.


   Архивы и их содержимое

   Зайдем в игровую директорию. В ней нас интересует папка \Archives, содержащая игровые архивы, записанные в формате .rfa. В этих архивах хранятся все важнейшие файлы с игровыми параметрами. Распаковывать rfa-файлы мы будем с помощью программы RFA Extractor, входящей в состав пакета инструментов Battlefield 1942 Unofficial SDK и находящейся по адресу: <Каталог программы>\rfa archives\rfa extractor v1[1].1\. Для запуска программы вам, скорее всего (если они у вас еще не установлены), понадобится установить набор библиотек Microsoft .NET Framework Package (забирайте с нашего компакта).

   RFA Extractor прост в обращении: выбираете пункт меню File/Open, указываете путь нужного архива (при этом в основном окне программы появляется список содержащихся в нем файлов), после чего кликаете левой кнопкой мыши на интересующий вас файл и выбираете пункт меню Extract/Selected Files, указав затем путь директории, куда будет помещен файл после распаковки. Следует отметить, что вы можете вытащить из архива сразу несколько файлов — для этого вы должны выбирать их, удерживая нажатой клавишу Shift; если вам нужно извлечь из архива все его содержимое, используйте пункт меню Extract/All Files. Для удобства в программу встроена функция поиска файлов по расширению (пунктменю Select/Files by Type) или части названия (Select/File Names Containing).

   Вынув из архива нужные вам файлы, вы можете приступить к редактированию их содержимого. Чтобы игра распознала измененные вами файлы, вы должны упаковать их (а также все остальные файлы из отредактированного архива) обратно в архив с помощью утилиты Make RFA (также входит в состав Battlefield 1942 Unofficial SDK) или положить в игровую директорию в распакованном виде (например, если вы подправили файл init.con из архива Game.rfa, положите ранее извлеченную из него папку \bf1942 и все ее содержимое, включая измененный файл, в каталог с игрой), убрав при этом из игровой директории архив, в котором эти файлы находились.
    Второй вариант менее трудоемкий, зато он очень неудобен при работе с архивами, соответствующими игровым картам. Чтобы игра распознала измененные файлы, вы должны положить в игровую папку не только директорию с файлами из архива с нужной картой, но и содержимое всех остальных архивов с уровнями. В этом случае используется больше дискового пространства, так как вы не упаковываете файлы из архивов с уровнями. Если вам дорого место на вашем винчестере, вам следует прибегнуть к использованию программы Make RFA.

   Работа с утилитой осуществляется через командную строку. При запуске программа запросит путь упаковываемой директории (например, C:\bf1942\levels\Gazala); она должна называться так же, как и архив, откуда она была позаимствована и в который она будет запакована. Введя путь, нажмите клавишу Enter, после чего программа попросит вас указать каталог внутри архива, куда будет помещено содержимое указанной на предыдущем этапе директории. Напишите название запаковываемой директории (пример: \bf1942\levels\Gazala) и снова жмите на Enter (далее для краткости не буду упоминать про нажатие клавиши Enter после ввода информации). Затем программа спросит, хотите ли вы осмотреть содержимое создаваемого архива, дабы удостовериться в правильности предыдущих действий. В знак согласия введите букву "Y". Если вы не обнаружили никаких ошибок, введите еще раз "Y", в противном случае напишите букву "N" (после этого программа закончит работу, и, перезапустив ее, вы сможете заново ввести все необходимые данные). Теперь введите имя
создаваемого архивного файла (например, Gazala.rfa). Наконец, укажите, будете ли вы сжимать файл: Y — да, N — нет (процесс сжатия занимает достаточно много времени).
    Каждый из описанных выше способов хранения отредактированных файлов имеет свои плюсы и минусы, и какому из них отдать предпочтение — решать вам. Лично мне кажется разумным использовать оба метода: когда речь идет об архивах с уровнями, имеет смысл прибегнуть к услугам Make RFA, в случае со всеми остальными типами rfa-файлов быстрее всего будет положить их в игровой каталог в неупакованном виде.


   МОДИФИЦИРОВАНИЕ

   Приступаем к исследованию игровых архивов. Первой нашей жертвой станет архивный файл Game.rfa, расположенный по адресу: <Каталог игры>\Archives\bf1942\. Распаковав архив с помощью RFA Extractor, вы увидите каталог \bf1942. Зайдите в него, чтобы попасть в директорию \Game, содержащую папки \AI, \collision_Armor, \common, \damage_system, \Init и ряд файлов. Из числа последних нас больше всего интересуют файлы с расширением con — их можно редактировать в любом текстовом редакторе.

   Ролики

   Начнем с файла Startup.con. Он состоит всего из пяти строк, причем верхняя является простым комментарием (не учитывается игрой), так как начинается с буквосочетания "rem" (все начинающиеся с него строки являются комментариями, редактирование которых ничего не меняет в самой игре). Четыре нижних строчки — это игровые параметры и их значения (название и значение параметра разделяются пробелом). Здесь, а также в других текстовых файлах игры, каждый атрибут имеет следующий вид: X.Y, где X — категория, к которой принадлежит характеристика, а Y — имя этой категории. В файле Startup.con каждый параметр указывает на один из начальных роликов игры (в том числе и на заставки с логотипами создателей) и имеет два значения: первое задает путь и название видео, второе — время (в секундах), отсчитываемое с момента начала проигрывания заставки, в течение которого вы не можете ее сбросить.
33 Kb

    Для создания собственной игры из файла лучше удалить все строки за исключением renderer.playBink Movies/Intro.bik 1.0 (отвечает за вступительный ролик игры) — это позволит нам избавиться от фирменных рекламных роликов, замедляющих процесс загрузки. Понятно, что в свою игру лучше вставить свое собственное видео. Можно заменить имеющиеся файлы любым другим видео формата .bik (в том числе и роликом из другой игры), прописав его местонахождение и название в качестве первого значения атрибута, отвечающего за вступительный ролик. Что касается самих bik-файлов, то их можно просматривать с помощью пакета утилит RAD Video Tools (дистрибутив программы находится на нашем компакте).

   Распределение очков

   Разберемся со структурой файлов ScoreManagerSettings.con, ScoreManagerSettingsCTF.con и ScoreManagerSettingsTDM.con, находящихся в той же директории. Все параметры этих файлов определяют, какое количество очков добавить или отнять у команды, совершившей то или иное действие. Последние два файла отвечают за распределение очков соответственно в режимах Capture the Flag и Team Deathmatch, первый файл — во всех остальных режимах. Рассмотрим список этих параметров (в случае, если атрибут имеет отрицательное значение, происходит вычитание очков):

   ScoreManager.kill — количество очков, которое теряет команда при потере своего солдата (далее для краткости будем опускать название категории параметра). Лично мне кажется логичным придать этому параметру нулевое значение в файле ScoreManagerSettingsCTF.con, а то получается, что, играя в местный "захват флага", можно одержать победу лишь по одним убийствам, ни разу не принеся на свою базу флаг противника.

   capture — количество очков, отнимающееся у команды, когда противник удерживает хотя бы половину контрольных точек уровня при игре на картах типа Head-on (в CTF — очки, отнимающиеся у команды, когда ее соперник доставляет ее флаг на свою базу). Происходит в течение определенного интервала времени, заданного для каждой карты (о том, как его изменить, читайте дальше).

   TK — очки, вычитаемые (или прибавляющиеся в случае положительного значения) за убийство своего товарища по команде. По замыслу авторов, за убийство "своего" игрок (а соответственно, и его команда) несет штраф в размере двух очков. Можно создать мод, где соклановцы должны будут зарабатывать очки, не только принося флаг, но и убивая товарищей по команде.

   attack — количество очков, отнимающееся у атакующей стороны, когда вражеская команда удерживает все контрольные пункты карты при игре на картах типа Assault.
    defence — очки, отнимающиеся у обороняющейся стороны, когда вражеская команда контролирует все контрольные точки карты при игре на картах типа Assault.

   Внося изменения в указанные выше файлы, можно сильно повлиять на геймплей. Можно, например, приравнять отнятие у команды очков за потерю солдат и за удержание врагом контрольных точек (для основных режимов игры). В этом случае игроки станут уделять больше внимания войне друг с другом, а не захвату/перехвату контрольных точек.
   Ваша кампания

   Другой примечательный файл,
37 Kb
Вы можете назвать солдат
именами своих любимых
героев из других игр.
скрывающийся в недрах архива Game.rfa, — это CampaignMapList.con. Он содержит список всех карт игровой кампании и состоит из шестнадцати одинаковых параметров с именем Game.addLevel. В качестве значения каждого параметра указывается название одной из карт кампании. Нижний атрибут соответствует финальной миссии, верхний — начальной. Каждый уровень называется так же, как и соответствующий ему архив. Архивы с картами находятся по адресу: <Каталог игры>\Archives\bf1942\levels\. Посредством корректировки значений местных характеристик можно менять миссии в кампании. То есть вы можете создавать новую кампанию. Можно вставлять в кампанию новые миссии, в том числе и карты собственного производства, о создании которых мы поговорим ниже. Можно и просто убирать из кампании некоторые карты, добавляя или удаляя из CampaignMapList.con атрибуты вида Game.addLevel X, где X — название уровня.
   Имена солдат

   Зайдем в каталог \common архива Game.rfa. В нем находятся файлы AmericanNames.con, BritishNames.con, GermanNames.con, JapaneseNames.con и Russiannames.con, которые содержат имена солдат соответственно американской, британской, немецкой, японской и русской армий. Все файлы имеют одну и ту же структуру и состоят из повторяющихся параметров вида game.addFirstNameOnTeam X Y (атрибуты данного типа стоят в начале файла) и game.addSecondNameOnTeam X Y, где X указывает на принадлежность солдата к армии союзников или фашистов (1 — фашисты, 2 — союзники), а Y в первом случае обозначает имя бойца, во втором — фамилию.

   Подпись: Вы можете назвать солдат именами своих любимых героев из других игр.

   В файлах AmericanNames.con, BritishNames.con и Russiannames.con на месте X стоит 2, а в GermanNames.con и JapaneseNames.con1. Вы можете увеличивать или уменьшать количество различных имен для солдат, добавляя или удаляя параметры game.addFirstNameOnTeam и game.addSecondNameOnTeam с нужными вам значениями. Только учтите, что при добавлении/удалении параметра game.addFirstNameOnTeam вы должны также добавить/удалить соответствующий ему атрибут с именем game.addSecondNameOnTeam. Меняя значения обеих характеристик, можно переименовывать солдат, называя их именами любимых героев, знакомых, далее по списку. Если при этом подобрать к каждому персонажу подходящий внешний вид и голос (о том, как это делается, мы еще поговорим), то можно добиться, что в игре примут участие самые настоящие Дюки Нюкемы, Серьезные Сэмы и прочие известные персонажи.

   Орудия убийства

   Другая интересующая нас группа фlайлов,
28 Kb
Очередь "калаша"
пробивает танковую
броню! Степень
модификации ограничена
только вашей фантазией.
определяющая силу того или иного вида вооружения (в том числе и оружия, "прикрепленного" к транспортным средствам), скрывается в папке \damage_system. В случае с переносными орудиями убийства имя файла соответствует названию оружия, описываемого в файле (например, файл thomson.con задает повреждение, наносимое автоматом Томпсона). Если речь идет об оружии на транспортных средствах, то здесь имя файла определяет название машины, которая обладает данным видом вооружения (файл katyusha.con определяет силу пущенных "катюшей" ракет).
    Все файлы директории damage_system состоят из нескольких разделов (их названия выделены двумя рядами звездочек). В каждом из них прописан урон, наносимый цели данным оружием: раздел Infantry target задает ущерб здоровью людей, scout cars target — повреждение, наносимое джипам, Planes target — самолетам, Ship Armors — кораблям. Любой раздел состоит из повторяющихся блоков (количество блоков в разных разделах можно быть различно) вида:

   MaterialManager.attGroup X1
   MaterialManager.defGroup X2
   MaterialManager.damageMod X3
   MaterialManager.setEffectTemplate X4

   Каждый блок раздела описывает урон, наносимый данным оружием объекту/субъекту при попадании в какую-либо область. Верхний блок определяет повреждение, производимое при поражении наиболее уязвимого места (для пехотинца — это голова), нижний — соответственно, самого неуязвимого.

   Перейдем к разбору параметров, из которых состоит любой блок. Верхний атрибут задает код оружия (у каждого оружия здесь имеется свой числовой код), которому посвящен данный файл. Для создания собственного мода нам эти значения не понадобятся. Зато понадобятся damageMod и setEffectTemplate. Первый из них определяет силу оружия (параметр может принимать дробные значения), второй —
эффект, проигрываемый при попадании оружия в цель (например, появление крови у человека — эффект e_blood01).
   Занимаясь редактированием характеристик damageMod и setEffectTemplate у игровых орудий убийства, можно здорово изменить их действие на различные цели. Можно увеличить/уменьшить урон, производимый какими-то определенными видами вооружения, если вы считаете, что они слишком уж сильные или, наоборот, слабенькие. А можно просто понизить в определенное число раз силу каждого оружия (то есть значение параметра damageMod). Это приведет к тому, что для убийства игрока уже будет недостаточно двух-трех выстрелов, как в оригинальной игре. Игра станет менее реалистичной, но вот интересность... Проверено — интересность повышается. Аркадный элемент идет игре на пользу!


   УРОКИ КАРТОСТРОЕНИЯ

   Многие сравнивают Battlefield 1942 с OFP — игры во многом похожи, но в Battlefield нет встроенного редактора карт. Но это не означает, что мы не можем создавать свои уровни и добавлять их в игру.
   Чтобы создать свой уровень, вы должны выбрать одну из игровых карт и, распаковав ее архив, подредактировать находящиеся в нем файлы. Единственная проблема заключается в том, что вам придется заменить своим уровнем одну из оригинальных карт. Но если вы создаете свою собственную игру или мод — это не является проблемой. Ведь все оригинальные уровни вы все равно должны поменять.
   Первый шаг на пути создания новой карты — выбор подходящего уровня. Из всех игровых карт вы должны выбрать ту, которая будет наиболее похожа на создаваемый вами уровень (это уменьшит объем работы над новой картой).
   Архивы с игровыми
32 Kb
Канонерки готовятся к высадке
десанта. Единственный элемент,
который сохранился от
оригинального игрового уровня.
картами хранятся по адресу: <Каталог игры>\Archives\bf1942\levels\ и называются так же, как и сами уровни. Подобрав подходящую карту, распакуйте соответствующий ей rfa-файл (тот, что без окончания _00) и зайдите в папку \bf1942\levels\<название карты>\. Вы увидите ряд файлов и множество папок, из которых нам нужны только: \Ai (содержит con-файлы с параметрами, связанными с искусственным интеллектом ваших врагов), \Conquest (файлы, характеризующие вариант игры Conquest), \Ctf (файлы, характеризующие режим Capture the Flag), \GameTypes (файлы с базовыми параметрами для каждого из вариантов игры), \Init (ландшафт и природные условия карты), \Singleplayer (файлы, характеризующие однопользовательский вариант игры), \Sounds (файлы с указанием на звуки, производимые на карте окружающей средой), \TDM (файлы, характеризующие режим командной игры), \Textures (используемые на карте текстуры, записанные в формате .dds).
   Подробнее остановимся на con-файлах, находящихся в архиве с любой игровой картой. Расположение контрольных точек карты задается в файле ControlPoints.con (файл имеется в директориях: \Conquest, \Ctf, \Singleplayer и \TDM). Файл состоит из небольших повторяющихся блоков, имеющих вид:

   Object.create N
   Object.absolutePosition X/Z/Y

   N — название контрольного пункта; X, Z, Y — его координаты по осям X, Z и Y (именно в таком порядке). Характеристики каждой контрольной точки прописываются в отдельном файле, с именем ControlPointTemplates.con. Файл находится в одном каталоге с ControlPoints.con. Каждой контрольной точке в файле ControlPointTemplates.con соответствует свой раздел (разделы файла отделяются друг от друга пустыми строчками), начинающийся со строки ObjectTemplate.create ControlPoint N, где N — название точки. У любого контрольного пункта нас интересуют следующие атрибуты:

   ObjectTemplate.radius — радиус контрольной точки (чем выше, тем с более далекого расстояния ее можно захватывать).

   team — команда, которая владеет данной точкой на момент начала игры (1 — фашисты, 2 — союзники, 0 — никто).

   timeToGetControl — время (в секундах), которое игрок должен находиться в радиусе контрольной точки, дабы захватить ее.

   timeToLoseControl — время, через которое игрок теряет контроль над точкой, даже если ее не захватил противник.
    Координаты точек на карте, в которых расставлена боевая техника (в том числе и стационарное оружие), прописываются в файле ObjectSpawns.con. Каждой из таких точек соответствует блок со следующими характеристиками:

   Object.create — название точки.

   absolutePosition — ее координаты (по осям X, Z
и Y).
    rotation — сторона, в которую повернуто установленное в данной точке транспортное средство или стационарное оружие (значение показателя также задается по осям X, Z и Y).
    setTeam — команда, на территории которой находится данная точка.
    Каждой точке, в которой находится боевая техника, соответствует свой блок в файле ObjectSpawnTemplates.con, обладающий следующими параметрами:

   ObjectTemplate.setObjectTemplate 2 — боевая техника, которая устанавливается в данной точке, если последняя находится на базе союзников (то есть значение параметра setTeam в файле ObjectSpawns.con для нее равно 2).

    setObjectTemplate 1 — боевая техника, которая устанавливается в данной точке, если последняя находится на базе фашистов (то есть значение показателя setTeam в файле ObjectSpawns.con для нее равно 1).
    MinSpawnDelay — минимальное время (в секундах), по прошествии которого с момента начала игры в данную точку устанавливается транспортное средство, заданное атрибутом setObjectTemplate 2 или setObjectTemplate 1.
    MaxSpawnDelay — максимальное время, по прошествии которого с момента начала игры в данную точку устанавливается определенное транспортное средство.
    Стартовые точки солдат определяются в файле SoldierSpawns.con. Название каждой из них задается параметром create, координаты — характеристикой absolutePosition, сторона, в которую повернут солдат при "рождении" в данной точке, — rotation.

   В файле StaticObjects.con (находится по адресу: \bf1942\levels\<название карты>\) прописываются все находящиеся на карте не движущиеся объекты типа зданий, ящиков, камней и т.п. Здесь используются те же параметры, что и в случае с файлом SoldierSpawns.con. Так что у вас не должно возникнуть проблем с редактированием данного файла. Вот список названий самых основных объектов,
35 Kb
Бой за только что созданную
территорию.
которые могут быть указаны: Afri_bushX_M1 (вместо X должно стоять число от 1 до 10) — кусты, Afri_treeX_M1 (X — число от 1 до 9) — деревья, lake — озеро, Ammobox — ящик с боеприпасами, mediclocker — аптечка, stebarrel1_m1 — бочка, stecrate1_M1 — ящик, eu_fence_m1 — забор, hangar1_m1 — ангар, factory — завод, hospital — госпиталь, barack — бараки.
    В завершение разговора о картах отметим файлы Conquest.con, Coop.con (которые лежат в \bf1942\levels\<название карты>\ и \bf1942\levels\<название карты>\GameTypes) и файлы SinglePlayerAllied.con и SinglePlayerAxis.con. Все они одинаково структурированы, разница только в том, что первый из них соответствует варианту игры Conquest, второй — кооперативному режиму игры, третий — однопользовательскому режиму при игре за союзников, четвертый — при игре за фашистов. Обратите внимание на то, что, отредактировав файлы Conquest.con и Coop.con в одной из папок, вы обязательно должны произвести те же изменения над этими файлами, находящимися в другой директории. Все вышеперечисленные файлы хранят в себе следующие параметры:

   Game.setNumberOfTickets 1 — количество очков у фашистов на момент начала игры.

   setNumberOfTickets 2 — количество очков у союзников на момент начала игры.

   setTicketLostPerMin 1 — количество очков, теряемое союзниками в минуту, когда фашистская армия удерживает хотя бы половину контрольных точек в случае с картой типа Head-on и все точки в миссиях Assault.
    setTicketLostPerMin 2 — то же самое по отношению к фашистам.

   Вы можете свободно убирать с карты любые объекты (в том числе контрольные пункты и точки "рождения" солдат), удаляя из того или иного файла соответствующие им разделы. Добавить объекты в уровень можно путем создания новых разделов, описывающих данный объект. Обратите внимание на то, что при создании контрольных пунктов или точек на карте, где установлена боевая техника, вы должны добавить новый раздел не только в файл ControlPoints.con или ObjectSpawns.con, но и в файл ControlPointTemplates.con и ControlPointTemplates.con.
   Редактируя все вышеперечисленные файлы, вы можете производить изменения в игровых картах, а также создавать свои. Кроме того, все разобранные нами файлы из архивов с картами пригодятся нам при создании модов (об этом чуть позже). Теперь в вашем распоряжении описание всех основных параметров конфигурационных файлов. Изменяя их атрибуты, вы можете создать любую, даже самую сложную карту. Конкретные же советы по изменению давать бессмысленно: ведь каждый будет создавать уровень со своей уникальной архитектурой.

   ИГРОВЫЕ РЕСУРСЫ

   Все основные звуковые и графические файлы игры авторы спрятали в rfa-архивы, находящиеся в игровой директории в папке \Archives. Звуковые файлы находятся в архиве sound.rfa. Внутри имеются папки \11khz, \22khz и \44khz, в которых хранятся одни и те же звуки, но с разным качеством. В этих папках находятся файлы со звуковыми эффектами, а речь игровых персонажей рассортирована по подкаталогам \Japanese — речь японских солдат, \Russian — речь русских, \UsEnglish — американцев, \English — британцев, \German — немцев. Поскольку все местные файлы записаны в формате .wav, вам не составит труда их отредактировать или заменить своими звуковыми файлами в случае необходимости.
    С графическими файлами все намного сложнее. Игровые текстуры (а также скины игровых объектов/субъектов и интерфейсные картинки) имеют загадочный формат .dds и лежат в архиве texture.rfa (некоторые текстуры, используемые только на определенных картах, лежат в архиве с соответствующим уровнем). Редактировать dds-файлы можно в 3D Studio Max или Photoshop, предварительно установив на одну из этих программ плагин для чтения dds-файлов (пятая версия 3D Studio Max не требует установки такого плагина). Плагины для обеих программ входят в состав упомянутого выше пакета утилит Battlefield 1942 Unofficial SDK (плагин для Photoshop размещается в папке plugins\photoshop, для 3D Studio Max — в каталоге plugins\3dsmax4). Чтобы установить плагин на Photoshop, зайдите в папку с программой и поместите файл dds.8bi в каталог \Plug-Ins. Теперь вы можете работать в Photoshop с dds-файлами, как и с графическими файлами привычных нам форматов.
    Используемые в игре модели в виде файлов формата .sm вы можете найти в архивах aiMeshes.rfa и standardMesh.rfa. Для просмотра и редактирования используйте редактор MilkShape 3D, установив на него специальный плагин из Battlefield 1942 Unofficial SDK (файлы плагина находятся в \3d models\MilkShape). Вы можете прочитать статью по работе в MilkShape 3D в номере 4 "Игромании" за 2002 год или на нашем компакте в разделе "ИнфоБлок"; сам редактор также находится на нашем компакте. Чтобы активизировать плагин, скопируйте входящие в него библиотеки msRf2Importer.dll и msRF2Exporter.dll в директорию с MilkShape 3D. Теперь вы можете приступать к редактированию имеющихся моделей и созданию своих.
   Добавляя в игру новые модели и текстуры, вы можете здорово изменить ее внешний вид. Можно, например, перенести действие игры в наше время, заменив модели оригинальных стволов и боевой техники современными аналогами.

   НОВАЯ ИГРА!

   Переходим к самой интересной части нашего сегодняшнего вскрытия — к созданию совершенно новых игр. Разработать идею и концепцию новой игры нелегко, особенно если речь идет об игре интересной и оригинальной. Еще сложнее воплотить все свои задумки в жизнь. Сейчас мы детально, но при этом максимально сжато, опишем процесс создания наиболее интересных игр, над созданием которых трудился ваш покорный слуга. Всего за час работы получите две совершенно новые игры.

   Гонки на выживание

   Зайдите в директорию: <Каталог игры>\Archives\bf1942\levels\. Здесь размещаются
rfa-архивы, каждый из которых отводится под файлы той или иной игровой карты. Выберите уровень, который вам больше нравится и который, на ваш взгляд, больше всего подойдет для проведения гонок, и распакуйте основной из соответствующих ему архивов (тот, что не имеет окончания _00) в любую папку на вашем жестком диске. Один из лучших уровней для гонок — El Alamein (ей соответствует архив El_Alamein.rfa). После разархивирования вы получите директорию \bf1942. Следуйте по адресу: \bf1942\levels\<название карты>\ (в нашем случае — \bf1942\levels\El_Alamein\). Вашему взору предстанет ряд файлов и множество папок.
    Сначала зайдите в каталог \Conquest и откройте в любом текстовом редакторе файл ControlPoints.con (напомню, что в нем определяется месторасположение контрольных точек на карте). Установите все контрольные пункты карты в одну точку (начальное расположение одной из контрольных точек), придав соответствующим координатам точек равные значения (координаты определяются параметром absolutePosition). Таким образом, все контрольные точки карты сольются в одну, которая будет финишем на вашей трассе. Меняя одновременно координаты всех контрольных пунктов карты (соответствующие координаты контрольных точек при этом всегда должны оставаться равными друг другу), вы можете переносить финиш из одного места в другое и установить его в нужную вам точку. В случае с уровнем El Alamein удачным месторасположением финиша является точка, изначально предназначающаяся для верхнего контрольного пункта (NorthOpenBase).
    Следующий шаг — редактирование файла ControlPointTemplates.con (он содержит основные характеристики контрольных точек карты), расположенного в той же директории (\Conquest). В нем вы должны сделать все контрольные точки "ничейными" (для этого у каждой из них определите значение параметра team как 0). Кроме того, у каждой из них значения атрибутов radius и timeToGetControl следует сделать равными соответственно 1 и 0. При желании значение первой характеристики можно поднять до 10, второй — до 1 (больше ставить не рекомендуется, иначе может получиться ситуация, когда гонщикам для победы придется некоторое время стоять у финишного флага).
    Заглянем в файл ObjectSpawns.con. Напомню, что в нем указываются координаты точек на карте, в которых расставлена боевая техника (виды последней задаются в файле ObjectSpawnTemplates.con). Удалим все точки (для этого удалите все соответствующие им параметры), кроме двух пунктов, где стоят нужные вам транспортные средства. Например, если хотите гонок на скоростных джипах, оставьте точку ScoutCarSpawner, если вам по душе гонки со стрельбой на массивных танках, используйте lighttankspawner. В случае если в этих точках установлены не те машины, которые бы вы хотели там видеть, обратитесь к соответствующим разделам файла ObjectSpawnTemplates.con и в качестве значений параметров setObjectTemplate 1 и setObjectTemplate 2 установите названия нужных вам транспортных средств. Две оставшиеся точки будут служить стартом для игроков. Сделайте так, чтобы одна из них принадлежала немцам (для этого измените значение атрибута setTeam на 1), другая — союзникам (значение показателя setTeam при этом должно быть равно 2). Расположить стартовые точки игроков (координаты точек задаются с помощью характеристики absolutePosition) желательно на одной линии (в этом случае их координаты будут отличаться друг от друга только расположением по оси X) и на небольшом расстоянии друг от друга (где-то 5-15 клеток) — тогда гонщики не будут мешаться друг другу на старте. При расположении игроков постарайтесь сделать так, чтобы один не был ближе к финишу, чем другой — все должно быть честно.
    Если машины игроков повернуты не в сторону финиша, установите их правильно, изменив значение параметра rotation (при этом оно должно быть одно и то же для обеих стартовых точек). Если говорить о карте El_Alamein, то в ней рекомендую оставить точки с джипами (ScoutCarSpawner) и определить значение параметра rotation как 0/0/0. В качестве возможного варианта расположения точек можно использовать следующие координаты: 1696/60/846.909 у первой и 1708/60/846.909 у второй.
    Стартовые координаты транспортных средств участников гонок мы уже задали, теперь укажем начальные координаты самих игроков (при этом координаты каждого игрока должны совпадать с координатами отведенной ему машины). Для этого обратимся к файлу SoldierSpawn.con. У большинства игровых уровней данный файл разбит на разделы вида AXIS* (соответствует базе немцев — здесь прописываются стартовые точки фашистских солдат), ALLIES* (база союзников), open* (нейтральная территория), где вместо "*" указывается слово, характеризующее месторасположение точки (например, BASE, village и т.п.). Обратите внимание на то, что у некоторых уровней раздел, соответствующий одной из воюющих сторон, может называться open*, то есть так же, как нейтральная территория на других картах. А блоки, соответствующие второй воюющей стороне, называются как и положено: AXIS* или
ALLIES*. Оставьте только две возможные стартовые точки для игроков — по одной для каждой из противоборствующих сторон. Исправляя значения показателя absolutePosition у обеих точек, установите каждую из них в то место, куда вы поставили отведенное тому или иному гонщику транспортное средство.
   Теперь вы должны произвести указанные выше изменения с одноименными файлами из каталога \SinglePlayer — для этого достаточно скопировать отредактированные файлы поверх.
    Следующий этап в создании гонки — редактирование файла Conquest.con из папки \GameTypes. Сначала меняем значения параметров setNumberOfTickets 1 и setNumberOfTickets 2 на число 100. Характеристикам setTicketLostPerMin 1 и setTicketLostPerMin 2 придаем значения побольше — где-то в районе 10000. Отступив пустую строчку после атрибута setTicketLostPerMin 2, вставьте строку game.maxNrofPlayers 2. Это делается для того, чтобы в "гоночном" мультиплеере не могло участвовать более двух игроков — ведь воюющих сторон только две. Далее вы должны произвести аналогичные изменения над одноименным файлом, находящимся прямо в директории с уровнем. Самый быстрый способ сделать это — скопировать первый файл поверх второго. Внесите те же изменения (в этот раз вносите изменения вручную, без использования копирования одного файла поверх другого) за исключением вставки параметра game.maxNrofPlayers в файлы SinglePlayerAllied.con и SinglePlayerAxis.con. В этих файлах нужная нам характеристика уже присутствует, нужно только поменять ее значение на 2.

   Основная часть работы по созданию игры — позади. Осталось сделать лишь несколько косметических штрихов. В первую очередь раскройте файл Init.con (лежит прямо в директории с уровнем) и удалите в нем два блока, следующие за надписью Define flags (то есть все, что находится под ней до атрибута game.setTeamSkin). Это позволит выкинуть из уровня флаги воюющих сторон.
    Уберите с карты все лишнее и в случае необходимости украсьте ее какими-то новыми объектами или растительностью, редактируя файл StaticObjects.con (лежит прямо в папке с уровнем). При желании можно также слегка подкорректировать ландшафт местности, изменяя файл Terrain.con из каталога \Init. Лично мне кажется разумным удалить с карты развалины, напоминающие о войне (мы ведь не воевать собрались), а также все объекты, занимающие большую площадь (огромные здания, поезда с большим количеством вагонов) — на трассах и в их окрестностях не должно быть слишком много препятствий.
    Осталось сделать самое важное, но и самое легкое — проложить специальную дорогу для трассы. Возвращаясь к карте El_Alamein, могу порекомендовать оставить на ней только объекты естественного происхождения — им
43 Kb
Гонки по пересеченной
местности на джипах. Справа
появляется оппонент, только
что вытолкавший мой джип
с трасcы.
соответствуют разделы вида Afri_bush* (различные виды кустов), PALMHIGH* и Pacific_Palm* (пальмы), Stones_Africa* (камни). Ими-то и можно ограничить полосу для продвижения авто.
    После завершения работ над внешним видом "гоночной" карты обратитесь к архиву Game.rfa, находящемуся по адресу: <Каталог игры>\Archives\bf1942\. Определитесь, какой тип гонок вы создаете: обычный или со стрельбой. В первом случае после распаковки архива вы должны зайти в каталог \bf1942\Game\damage_system и, редактируя лежащие там "оружейные" файлы, снизить повреждения от каждого оружия. Иначе гонка будет заканчиваться после первого же попадания в одного из участников. Можно и вовсе каждое оружие сделать безвредным посредством придания параметру damageMod нулевого значения. Тогда выстрелы можно использовать для сбивания оппонента с верного курса.

   Гонка готова! Можете наслаждаться аркадным автосимулятором на движке Battlefield 1942. Чтобы запустить игру в мультиплеере, нужно выбрать режим игры Conquest. Чтобы сделать новую игру совсем не похожей на оригинал, нужно украсить карту текстурами собственного производства (можно позаимствовать текстуры из какого-нибудь автосимулятора), изменить интерфейс и добавить в игру новые модели гоночных автомобилей. Как это сделать, вы уже знаете.
   Железная мясорубка

   Игра, которую мы сейчас с вами создадим, это динамичный многопользовательский экшен, типа Quake III или Unreal Tournament. Для создания прежде всего нужно отредактировать con-файлы, определяющие силу переносных орудий убийства (напомню, что они пребывают в архиве Game.rfa по адресу: \bf1942\Game\damage_system), уменьшив производимый ими урон (задается показателем damageMod) в 2-3 раза. Если при уменьшении силы оружия значение параметра damageMod для него становится иррациональным числом, просто округлите его до ближайшего рационального числа. Так вы
существенно повысите "живучесть" игроков.
    Нужно подобрать подходящую для проведения боев местность. Естественно, что она не должна охватывать большую территорию и должна быть сравнима по размеру с картами из Quake или UT. А поскольку в Battlefield 1942 уровни компактностью не отличаются, предлагаю решить эту проблему следующим образом. Подберем подходящую для мода часть карты и ограничим ее от остальной части уровня горами, лесами, реками, стенами. Лучше всего использовать для боев закрытую местность (то есть какое-нибудь помещение), поскольку ее очень просто оградить от остальной части карты. Создавать преграды мы уже научились, изменяя карты оригинальной игры.
    Дальнейшие этапы создания новой игры разберем на примере уже упоминавшейся выше карты El Alamein. Распаковав соответствующий ей архив, откройте в текстовом редакторе файл StaticObjects.co
30 Kb
Кемперство - больше не
выигрышная стратегия. В новой
игре выигрывает тот, кто лучше
всех стреляет.
n и найдите в нем строки, где прописывается месторасположение на карте ангара (объект hangar1_m1) с координатами 1503.01/40.2/806.202. Его-то мы и сделаем ареной для битв.
    Прежде всего нужно оградить здание от остального мира, закрыв вход в него. Для этого расположим рядом с ним еще один ангар, найдя в тексте файла StaticObjects.con его координаты (первоначально они выглядят следующим образом: 329.029/40.193/1350.21) и придав им следующие значения: 1543.01/40.2/806.202.

   Теперь мы должны перенести стартовые точки "рождения" солдат внутрь "закрытого" ангара. Для этого нам нужно слегка подредактировать файл SoldierSpawns.con из папки \Conquest. Открыв файл в текстовом редакторе, удалите из него большую часть стартовых точек, оставив только несколько (число стартовых точек должно быть четным: половина должна "принадлежать" союзникам, половина — фашистам). Для оставшихся точек подберите координаты таким образом, чтобы они (точки) оказались внутри ангара. Самый простой вариант — оставить только две точки: одна из них должна служить стартом союзникам (такая точка имеет название вида: alliesSpawnPoint*), другая — фашистам (эта точка именуется следующим образом: AxisSpawnPoint*). Им следует придать координаты, близкие к этим: 1504.01/41.2/807.202 для одной из воюющих сторон и 1486.8/43.5/799.5 для другой. После совершения преобразований над файлом SoldierSpawns.con из директории \Conquest скопируйте его в папку \SinglePlayer (заменив при этом одноименный файл), дабы внести изменения не только в мультиплеер, но и в однопользовательский режим игры.
    Чтобы помещение не казалось слишком пустынным, можете добавить в него различные объекты и предметы (для этого вы должны отредактировать файл StaticObjects.con) типа ящиков с патронами (Ammobox), бочек (stebarrel1_m1) и т.п. Изменяя файлы StaticObjects.con и ObjectSpawns.con (последний имеется сразу в двух каталогах: \SinglePlayer и \Conquest), удалите из уровня все ненужные объекты, находящиеся за пределами двух оставшихся ангаров. Это ускорит загрузку уровня и уменьшит размер архива, соответствующего данной карте. Оставьте только несколько самых крупных объектов, находящихся недалеко от поля боя, — они послужат нам декорациями.

   Удалите с карты все контрольные пункты, удалив текст из файла ControlPoints.con (он имеется сразу в двух папках: \SinglePlayer и \Conquest), а также избавьтесь от флагов союзников и фашистов, корректируя содержимое файла Init.con.
   Вот и вторая игра готова. Игровой процесс полностью изменился. По геймплею новая игра больше всего похожа на Unreal Tournament. Разница — в графике и количестве игроков, которые могут участвовать в сражениях. В нашей модификации в таких боях принять участие смогут только два игрока (так как в игре присутствует только две противоборствующие стороны: союзники и фашисты). Поэтому для игры всех против всех создавайте маленькие дуэльные карты. Зато командные бои в нашем моде на высоте (нет жестких ограничений по количеству игроков) — настоящая мясорубка!


   Подведем итоги. В одной статье мы, во-первых, изучили теорию создания абсолютно любого мода на движке Battlefield 1942. Во-вторых, научились модифицировать оригинальные карты так, что из них получаются совершенно новые уровни, и это в игре, редактора к которой просто нет. И в-третьих, мы создали две совершенно новых игры — аркадные гонки и динамичный экшен.
   Две игры — не предел! С имеющимися знаниями вы можете создавать игры и других жанров. Стратегии, конечно, не получится, но, например, реалистичный гоночный симулятор сделать можно запросто. Удачи в творчестве и вдохновения!

   Смерть тормозам!
    Battlefield 1942 нельзя назвать сильно требовательной к "железу" игрой, но в то же время процесс загрузки игровых миссий весьма продолжителен, а при большом скоплении солдат игра начинает тормозить. Но игру можно несколько ускорить. Все, что нужно для этого сделать — распаковать игровые архивы с помощью RFA Extractor и поместить их содержимое в игровую директорию (прибавка в скорости игры прямо пропорционально зависит от количества распакованных файлов и их размера). Правда, при этом вы занимаете часть свободного дискового пространства. Зато игра начнет летать и на весьма средних машинах.
Комментарии
Загрузка комментариев