Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Город Мастеров _ Dragon Age Toolset _ Статья: Изменение 2DA файлов

Автор: DeKaVi Nov 19 2009, 21:54

Перевод и редакция DeKaVi
Источники: http://dragonagemodding.wordpress.com/2009/11/11/2da-or-not-2da-overriding-2da-files/ Автор: John Vanderbeck

От редактора: Я далеко не профессионал в деле перевода и оформления статей и тем более в DA toolset. Взялся я за это нелегкое дело т.к. нет альтернативных русскоязычных источников. Сам разбираюсь и не прочь другим помочь. Потому прошу воспринимать мои труды адекватно. Буду рад если подскажете или иными способами поможете исправить неточности. Спасибо за понимание. Поехали!

В уроке мы рассмотрим, как работать с файлами 2DA, как их правильно изменять, вводить пользовательские элементы и поведения в Dragon Age.

Что такое 2DA файл?
По своей сути, 2da файлы не более чем таблица. Набор строк и столбцов, описывающих данные игры. Перечень игровых предметов, например, и вся связанная с ними статистика, работает безукоризненно как таблица.

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

В "сыром", не откомпилированном формате, 2da хранятся в виде простого XLS файла - таблице Excel. Их можно открывать и редактировать в Microsoft Excel (OpenOffice или др. программами пользоваться НЕ РЕКОМЕНДУЕТСЯ). Эти таблицы в итоге компилируются в двоичный файл с расширением GDA.

Преимущества 2DA файлов
В теории, вы могли бы просто заменить соответствующие данные в XLS файле, затем скомпилировать, но это неправильный способ. Если вы это сделаете, то игра в будущем, с новой версией этого файла, может сбросить ваши изменения или могут появиться проблемы в работе с другими модулями.

В этом случае, Bioware дало нам возможности не трогать главный файл, а создавать дополнение этого файла - M2DA(Mutliple two dimensional arrays). Это хороший способ расширить или переопределить данные. Давайте посмотрим, как это работает.

Давайте рассмотрим на примере. Скажем, xls таблица с предметами игры могут выглядеть примерно так:

Здесь мы можем увидеть определение и параметры нескольких предметов. Скажем данный файл является "items.xls".Теперь мы хотим сделать новый элемент в игре. Мы хотим добавить новый длинный лук(longbow). Мы могли бы открыть копию этого файла(items.xls) и добавить новую строку с ID 5, но это было бы неправильным!
Вместо этого мы создаем новый файл, назовем его "items_bow.xls". И здесь мы будем определять наш лук, но мы не должны забывать, что ID(идентификатор) должен быть 5. Мы получим нечто вроде этого:

Теперь мы создали новый файл с нашим новым предметом. Мы, в сущности, создали M2DA файл. Но каким образом наши данные теперь будут сочетаться с данными игры? Все дело в имени файла! Помните, файл предметов называется "items.xls" и мы создали новый файл с именем "items_bow.xls"? Обратите внимание, что оба файла начинаются с одного и того же слова "items". Это является ключевым моментом! Когда игра грузит предметы, она будет загружать их из 2da файлов. Затем, будет загружать данные с нашего items_bow файла(M2DA файла) и обнаружив там лук с ID 5, он будет дополнять игру новым объектом.

В итоге, мы имеем два ключевых момента. Это имя файла и идентификатор объекта. Если мы указали уникальный ID, т.е. его еще не было в главном файле - мы добавим новый предмет, если мы будем использовать ранее созданный ID, то мы заменим объект, переопределим его в новом файле. Например, мы могли бы сделать файл "items_new_swords.xls"

Этот файл, в сочетании с нашими предыдущими двумя будет создавать еще один новый предмет, Shortsword, №6, но также переопределит данные предмета с ID №2. Давайте теперь посмотрим на реальном примере.

Реальный 2DA немного сложнее, но не намного. Давайте взглянем на настоящий 2da. Это из 2DA_base.xls (Прим. ред.: находится в папке игры Dragon Age - Origins\tools\Source\2DA)

Первые две строки в 2da всегда одни и те же. Строка 1 содержит имена столбцов, в первом столбце всегда ID. Остальное зависит от данных 2da. Вторая строка показывает тип данных в каждой колонке. Int - целое число, string - строка(просто текст) и т.д. Фактически, данные начинаются на третей строке. Каждая строка должна иметь уникальный идентификатор, а идентификатор должен быть в последовательном порядке.

Ранее мы говорили, что игра объединяет 2da на основании имен файлов.Но как вы узнаете, какие имена файлов использовать? В файле 2DA_base.xls хранится ответ на этот вопрос. В нем мы видим, что файл, который определяет предметы в игре будут начинаться с "BITM_". Любой M2DA который мы хотим сделать для переопределения, должен иметь такой же префикс.

Компиляция 2DA файлов
Теперь, когда мы знаем как использовать 2da файлы для создания новых и переопределения старых данных, мы должны узнать, как собрать из xls файлов, файлы GDA - понятные для игры. Это очень легко. Для этого используются утилита ExcelProcessor.exe из директории toolsest(Dragon Age\tools\ResourceBuild\Processors). Есть несколько способов использования этого инструмента, но сейчас я собираюсь описать самый простой.
Для начала выберите каталог для хранения ваших xls файлов. Не имеет значение, где вы будете их хранить. Копируйте туда утилиту ExcelProcessor.exe. Создайте с этого файла ярлык в той же папке. теперь можете просто перетаскивать xls файл на ярлык. В той же папке появится много файлов. Для разных объектов может потребоваться различные файлы (названия задаются из имен вкладок в xls файле). Для предметов это скорее всего будут файлы BITM_base.GDA и ItemStats.GDA.

Куда поместить скомпилированные файлы 2DA
После компилирования этих файлов, вам необходимо их разместить для правильной работы. К сожалению у меня нет точных данных, поэтому хочу сразу сказать что моя информация может быть неправильной или неполной. Я буду обновлять информацию.
(Прим. ред.: далее в комментариях предлагают рецепт:
1) сделал копию ABI_Base.xml
2) Удалил все лишние строки. оставил только свои изменения
3) Использовал ExcelProcessor конвертировал таблицы в файлы GDA
4) удалил всё, кроме двух файлов GDA ABI_Base и ability_data
5) переименовал их в ABI_Base_NightmarePlus и ability_data_NightmarePlus
6) скопировал файлы в packages/core/override/zNightmarePlus подкаталог (примечание редактора: в папке "Мои документы" наверное...)
7) Игра работает безупречно и модификации работают вместе с другими модами ABI_Base)

Автор: Sworder Dec 1 2009, 14:03

Спасибо за статью=)

Автор: EqKeeper Oct 11 2010, 19:26

Огромное спасибо! С нетерпением жду новых переводов!

Автор: Ghost Oct 11 2010, 22:08

Мне думается новых переводов более не будет. =\

Автор: virus_found Oct 15 2010, 01:56

Гост, мысли порой материализуются. Неправильный настрой. Будь позитивнее wink3.gif

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)