2DA/ru

From Dragon Age Toolset Wiki
< 2DA
Jump to: navigation, search
2DAs
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте

Многие из свойств объектов в тулсете ссылаются на таблицы 2DA, которые содержат различные данные игры и используются при написании скриптом и движком самой игры. Каждый 2DA является простой коллекцией строк и чисел. Функция, которую выполняет определённый 2DA, зависит от того, как он используется другими системами в игре.

Обзор – что такое 2DA?

2DA содержит ряд столбцов, каждый из которых имеет определённое название и определённый тип данных. Для примера, в ABI_Base есть столбец, который называется namestrref и тип данных int. Это означает, что данные, которые хранятся в этом столбце, имеют целочисленный тип и могут быть получены при обращении к 2DA с указанием столбца namestrref. Количество и тип столбцов в 2DA обычно никогда не изменяются. Столбцы представляют структуру 2DA, которая позволяет последовательно обращаться к нему. Первый столбец каждого 2DA называется ID и всегда имеет тип integer. Этот столбец используется для уникальной идентификации строк в 2DA.

Строки 2DA содержат всю информацию, хранящуюся в нём. Каждая ячейка строки имеет название и тип данных, которые определены в первых двух строках 2DA, но данные, содержащиеся в них, могут быть разными. Лёгким и доступным способом расширения 2DA является добавление новых строк, для этого надо добавить строку, указать уникальный номер в столбце ID и заполнить ячейки строки в соответствии с вашими потребностями. Присвоенный строке номер никогда не должен изменяться. Игра также имеет удобный механизм M2DA, с помощью которого можно расширить 2DA не редактируя основной 2DA(более подробно рассказано ниже).

Некоторые 2DA ссылаются на строки в других 2DA. Для примера, в ABI_Base есть столбец, именуемый projectile, ячейки которого ссылаются на строки в PRJ_Base 2DA. Эти отношения определяются только в скриптах, использующих 2DA, а не являются непосредственно встроенными в него, таким образом отслеживать эти связи нужно самостоятельно.

Формат таблицы Excel

Исходными файлами для 2DA являются рабочие листы Microsoft Excel. Это позволяет использовать сложные методы при задании значений для ячеек 2DA, такие как формулы и макросы. Это также делает редактирование 2DA достаточно удобным и простым, так как позволяет использовать аннотации к ячейкам и их форматирование, а связанные листы могут быть объединены в один файл. Прежде чем использоваться игрой или тулсетом, 2DA должны быть скомпилированы из файлов Excel в формат, понимаемый ими. После компиляции файла Excel каждый его рабочий лист преобразуется в файл с расширением .GDA (en).

Более полную информацию о способах компиляции и месте размещения GDA-файлов вы найдёте по ссылке Преобразование 2DA (en).

Пример рабочего листа "Monsters"
ID Label Strenght Name ResourceExample Scale disabled Commentexample
int string int string resource float bool comment
0 INVALID **** sometimes bioware said **** **** i stay unused
1 Evilmonster1 23 Abomination prp_barrel01 1,0 0 totally evil
2 Evilmonster2 34 Shriek prp_bucket_01 1,0 1 very bad

Данные в 2DA идентифицируются по номеру (столбец ID) строки, первая строка с ID равным 0 зарезервирована для внутреннего использования (неопределённые, неверные данные и т.д.). Каждый ряд имеет произвольное количество столбцов, идентифицируемых по названию. Серые поля в данном примере являются определяющими для 2DA, в белых полях могут храниться любые произвольные данные, которые движок игры идентифицирует для этого 2DA.

ID строки – это ссылка для игры, по которой она осуществляет доступ и связь с данными. Как таковые они должны быть уникальны как для 2DA, так и для расширяющего его M2DA.

Содержание каждого столбца может быть произвольным, но иметь тип данных, определяемый 2DA. Когда 2DA расширяется, присваиваются новые ID, но количество столбцов и тип данных в них должны оставаться такими, как и в исходном 2DA.

Рекомендации

  • Ячейка A1 должна содержать "ID". Это проверяется процессором при компиляции и если это не так, то компиляция потерпит неудачу.
  • Столбец A, начиная с третьей строки, содержат ID строки, который должен быть уникален для данного 2DA (кроме случаев использования M2DA). Строки должны быть перечислены по ID от меньшего к большему, но необязательно в прямой последовательности.
  • Пустая строка или столбец указывает на окончание таблицы и всё лежащее за ними будет проигнорировано.
  • Наименования столбцов регистрозависимы. Это связано с алгоритмом CRC32, используемым для хэш-ключа. Изменение регистра названия столбца после его использования может повредить игру. Пробелы до и после наименования – удаляются.
  • Вторая строка обязательно должна быть строкой, содержащей сведения о типе данных в столбцах. Причём – одним словом: int, string (single chars as well), resource, float или bool. Специальный тип "comment" может использоваться, чтобы исключить колонку при компиляции.
  • Любой столбец, который используется для ссылки на файл, должен иметь тип "resource" а не "string".
  • Тип «bool» может иметь одно значение из: ноль или не ноль, Yes или No (регистрозависимо), или слова, начинающиеся на T или F (такие как True! и False!). ВНИМАНИЕ: Нельзя использовать слова TRUE и FALSE, потому что Excel посчитает их своими зарезервированными словами. Также обратите внимание на то, что язык скриптов, используемый в 2DA не умеет извлекать из 2DA логические значения и поведение игры может быть непредсказуемым. При написании скриптов более безопасно будет использовать целочисленные значения (ноль или не ноль).
  • Если вы хотите оставить ячейку не заполненной, то вместо значения вы можете вставить четыре звёздочки "****".
  • Any worksheets that are not exportable 2DA data will have an underscore prepended to their name - the resource builder will subsequently ignore them.
  • Рабочие листы в 2DA должны иметь уникальное имя, так как при компиляции создаваемые файлы с одинаковыми именами будут переписаны.
  • Во время преобразования таблицы открывать нельзя.
  • Строковые значения имеют ограничения в 768 символов. Остальное будет урезано.
  • ExcelProcessor.exe ограничивает название рабочего листа 27 символами.

Расширение игры с помощью M2DA

Пример рабочего листа "MonstersCustom"
ID Label Strenght Name ResourceExample Scale disabled Commentexample
int string int string resource float bool comment
2300000 Evilmonster3 32 Wolf c_wolfa 1,0 0 New Monster

"M2DA" это "Multiple 2DA", что на русский можно перевести как "Составные 2DA", представляет собой комплект нескольких 2DA, объединённых в одну таблицу. Принцип работы у них такой же как и у 2DA, с тем отличием, что они могут исправляться или дополняться путём добавления ещё одного 2DA. Это значит, что с помощью M2DA можно отредактировать имеющиеся, либо добавить новые ресурсы, не изменяя основных 2DA, а полезность такой возможности переоценить трудно. 2DA в системе M2DA объединены построчно, используя столбец ID в качестве ключевого поля.

Для сторонних мододелов очень важно то, что официальные обновления могут привести к перезаписи любых изменений в 2DA, ими внесённых. Именно поэтому стоит использовать M2DA с уникальными именем и ID. Используемый в M2DA диапазон ID должен отличаться от биоваровских и используемых другими мододелами.

Все M2DA, используемые в игре, перечислены в Базе M2DA (en). Игра распознаёт в качестве M2DA только те 2DA, ID которых находятся вне диапазона от 10000 до 10999, 2DA, расположенные в этом диапазоне являются обычными и не подлежат расширению. Каждый M2DA в этом файле имеет краткое описание, определяющее круг его применения и префикс, с которого должны именоваться рабочие листы Excel. Игра считывает этот префикс, ищет M2DA, чьи названия начинаются с этого префикса и объединяет их всех в один большой 2DA.

Для примера: M2DA ID 0 это "ANIM_". Система просматривает список доступных 2DA и обнаруживает "ANIM_base", "ANIM_combat" и "ANIM_walk". Они считываются и объединяются в M2DA, называемый "ANIM_".

Обратите внимание M2DA_base также является M2DA и может быть расширен тем же способом.

  • В вышеприведённом примере 2DA "MonstersCustom" будет объединён с оригинальным 2DA "Monsters", если "Monsters" был перечислен в M2DA_base.

Зарезервированные диапазоны ID и переопределение существующих строк

Хотя M2DA и позволяют избежать некоторых проблем, связанных с использованием обычных 2DA, идентификаторы всех 2DA, объединённых в один M2DA, должны быть уникальными.

Использование существующего ID позволит вам переопределить данные исходной строки, которой принадлежит используемый ID. Такая возможность и позволяет изменить существующий контент без редактирования исходных 2DA.

Для обеспечения совместимости с модами сторонних авторов постарайтесь, чтобы ваши диапазоны ID не вступали в конфликт с используемыми другими авторами. Проверить это вы можете по ссылке - Используемые диапазоны ID (en). Также проверьте уникальность префиксов, используемых в ваших модах. Сделать это вы можете по ссылке - Используемые префиксы (en).


Информацию о том, где должны располагаться готовые M2DA, ищите по следующей ссылке - Преобразование 2DA(Заметки) (en).

Проблемы с M2DA

Стоит отметить, что в настоящее время есть ошибка с некоторыми M2DA, в которых имеются ID выше 255. Известно, что такая проблема есть у 2DA, связанных с ItemVariations.xls/ru (en). Смотрите Информация об ошибке (en) для получения большей информации.

2DA XLS файлы, используемые в Dragon Age

Список 2DA таблиц (en)

Исходные файлы, установленные вместе с игрой вы сможете найти по следующему пути:

<Installdir>\Dragon Age\tools\Source\2DA\

Тем, кто использует Open Office

  • Users of Open Office may find that no .gda file is created when they use ExcelProcessor.exe - one workaround is to copy a worksheet from an existing .xls file (such as placeable_types from placeables.xls), process the file, then remove the extraneous .gda file (e.g. placeable_types.gda). Alternately, upload your .xls file to Google Docs and then download the file as Excel format, then process the file with ExcelProcessor.exe.
  • When editing existing xls files, it also works to leave the format as standard while saving the file. Open Office asks to change the file to its own spreatsheet format when saving a format other then its own, don't change the format and it should work. [Edit- And yet it doesn't seem to.]
  • It is seemingly better at this time to simply use Google Docs instead as a free alternative, as Open Office will truncate floating point values in certain XLS files when compiled into a GDA, while seemingly not in others. This can lead to unpredictable behavior, such as the game crashing when extending APR_base.xls while all appears normal in the toolset. (Possibly this was just a result of adding an extraneous space to a cell.)

Adding Strings

The documentation on this page is incomplete, obsolete, or otherwise in need of a thorough review. The current content may provide a good starting point for this, but do not rely on its accuracy when using it to design content.

When adding strings to a 2DA, you have two options. The simplest is to enter **** for the StringID column. In that case, the name column will be used in the game.

The other approach is to use the toolset's string editor to create a new string. When that happens, you'll get a new StringID. Next enter that number into the StringID column in the 2DA.

The second approach works better when translating your module, at the cost of portability. If someone else wanted to reuse your 2DA, they'd have to generate their own strings, then update the StringID number based on these IDs.

Attention:

  • The current version of the "ExelProcessor"-App is buggy as it can't hanlde INT values above 8388607! Many thanks to elys for figuring that out.
  • Also note that the original toolset (v1.0) core-talktable contains wrong ids as well - don't forget to delete it from the "packages\core\override\toolsetexport" directory if you are still using that version.

Workaround:

  • Create and export your talktable, delete the core-talktable override.
  • Create your M2DA File that you want to refer to your talk-table strings. Never Mind using the real IDs at this stage.
  • Use the "Exelprocessor" to create the GDA file.
  • Open the GDA-File with the toolset or elys's GDA-Editor App (http://social.bioware.com/project/755/)

Edit-GDA-Values.jpg

  • Change the StringIDs to the StringIDs in your talktable.

Remark:

The previous Version stated: Take that StringID and add 16777216 to the number. this appears to be wrong and is likely a holdover from NWN.

Использование пользовательских 2DA при работе с тулсетом

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

Скомпилированные 2DA необходимо расположить в папке экспорта вашего модуля и тогда, при следующем запуске тулсета, вы сможете использовать их

Также смотрите


Язык: English  • русский