TXD — различия между версиями

Материал из GTAModding.ru
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
{{Stub}}
 
{{Stub}}
'''TXD''' (Texture Dictionary) - формат файла, использующийся RockStar Games для хранения игровой графики таких игр как [[GTA 3]], [[Vice City]], [[San Andreas]] и Manhunt.
+
'''TXD''' (Texture Dictionary) - формат, использующийся RockStar Games для хранения игровой графики в таких играх как [[GTA 3]], [[Vice City]], [[San Andreas]] Manhunt и Bully.
  
 
== Основные данные ==
 
== Основные данные ==
Что представляет собой данный формат, в первую очередь это архив.
+
Все текстуры в GTA третьей серии закодированы в виде бинарных потоков - [[RenderWare's binary stream files]], специализированных для движка RenderWare, используемого в игре. Все бинарные потоки с текстурами имеют расширение TXD (TeXture Dictionary), для просмотра и редактирования иерархии которого существует программа [[RWAnalyze]] от Stive M. Для создания, изменения текстур в архиве и их типа компрессии так же используют специальные программы, а именно [[PS2 TXD Viewer]] (только для просмотра текстур на PS2), [[G-TXD]] и [[TXD Workshop]].
В данном архиве хранятся графические файлы в 3х основных форматах [http://ru.wikipedia.org/wiki/TGA  TGA] (targa),[http://ru.wikipedia.org/wiki/BMP BMP] (bitmap) и [http://ru.wikipedia.org/wiki/PNG PNG]
+
  
== Техническое описание ==
+
== Типы текстур ==
Файл является бинарным. Для редактирования архива используют специальные программы, а именно [[G-TXD]] и [[TXD Workshop]]. Также к изображениям в TXD архиве применяется сжатие.
+
Текстуры в GTA можно разделить на 4-битные (только для PS2), 8-битные, 16-битные, 32-битные. Разрешения всех текстур в ГТА обычно кратно N^2, т.е. встречаются 2х2, 4х4, 2x4 и т.д. В некоторых модах можно встретить нестандартные разрешения текстур, использование которых так же не запрещено документацией RenderWare.
 +
 
 +
== Структура ==
 +
1. Архив текстур PC и X-BOX (TXD)
 +
 
 +
    * Texture Dictionary
 +
          o Struct - 2b - количество текстур в архиве, 2b - неизвестно
 +
          o Texture Native - данная секция в TXD может повторяться несколько раз, в зависимости от количества текстур в архиве.
 +
                + Struct - заголовок с именем и параметрами текстуры + тело текстуры
 +
                + Extension - дополнение подсекции (не используется)
 +
          o Extension - дополнение секции (не используется)
 +
 
 +
2. Архив текстур PS2 (TXD)
 +
 
 +
    * Texture Dictionary
 +
          o Struct - 2b - количество текстур в архиве, 2b - неизвестно
 +
          o Texture Native - данная секция в TXD может повторяться несколько раз, в зависимости от количества текстур в архиве.
 +
                + Struct - 4b - платформа, 4b- флаги фильтра
 +
                + String - имя текстуры
 +
                + String - имя альфа-канала текстуры
 +
                + Struct
 +
                      # Struct - 4b- ширина, 4b - высота, 4b - битность, неизвестно
 +
                      # Struct - 80 bytes неизвестно, пиксели/индексы (80 bytes неизвестно, палитра)
 +
                + Extension - дополнение секции
 +
                      # Sky Mipmap Val (RW Section) - 4 bytes неизвестно
 +
          o Extension - дополнение секции (не используется)
 +
 
 +
== Особенности в GTA3 на платформе X-BOX ===
 +
В TXD-файлах, содержащихся в IMG-архиве X-BOX версии GTA3 (не путать с модом GTAIII X-BOX version), применён специальный тип компрессии. Для их распаковки существует утилита [[dffxbox2pc]] от АК-73 aka Alex. После её применения TXD-архив открывается любым TXD-редактором (правда альфа-канал читается неверно).
  
 
== Альфа канал ==
 
== Альфа канал ==
К изображениям также применим альфа канал.
+
К изображениям в TXD также применим альфа канал. Разрешение текстуры и её альфа-канала всегда равны.
Альфа канал - это черно-белое изображение: черные сектора прозрачные, в то время как белые фрагменты - это то, что мы видим.
+
Альфа канал, также известный как маска-канал - это черно-белое изображение, применяется с целью создания эффекта частичной прозрачности, либо с целью определения контуров, если модель выполняет роль спрайта в игровой сцене. Таким образом черные сектора альфа-канала определяют полную прозрачность, белые - полную видимость, а участки с разными оттенками серого определяют частичную прозрачность накладываемой на объект текстуры. Примеры - текстуры стекла, растительности, particle-эффектов, шрифтов и т.д.
  
 
[[http://i058.radikal.ru/0909/a4/bd8960139b62.gif]]
 
[[http://i058.radikal.ru/0909/a4/bd8960139b62.gif]]
Строка 17: Строка 44:
  
 
В итоге мы получим красный текст.
 
В итоге мы получим красный текст.
 +
 +
== Компрессия текстур в TXD ===
 +
GTA3, GTA VC и GTA SA поддерживают TXD с компрессированными текстурами. Алгоритмы компрессии, применяемые для текстур в игре - DXT1 (для текстур без альфа-канала) и DXT3 (для текстур с альфа-каналом). Использование в модах текстур с компрессией существенно снижает размер мода, при этом качество текстуры падает не очень существенно. Тем более все современные видеокарты уже умеют работать с компрессованными текстурами. Компрессию не рекомендуется применять для текстур particle-эффектов, где после компрессии в альфа-канале могут наблюдаются сильные искажения кривой градиента, что очень заметно проявляется в игре.
 +
 +
== GENERIC текстуры ==
 +
В GTA3, GTA VC и GTA SA для моделей игровой карты можно создавать и использовать TXD вне IMG-архива. Этот тип текстур считается общим, они ищутся и загружаются движком автоматически, при загрузке игры, по адресу, указанному в [[gta3.dat]] или [[default.dat]]. Данный тип внедрён специально только для разработчиков игры, для прямого редактирования текстур без обращения к IMG-архиву игры, а так же для подгонки системных требований игры под требования заказчика. Соответственно разработчиками модов эта возможность нигде не применяется (кроме GTA Stories) и задокументирована Херомантом007 только на gtamodding.ru и gtamaps.net.
 +
 +
1. Для GTA3 и GTA VC - в исполняемый файл игры зашито только одно единственное имя GENERIC'а карты - generic.txd. Механизм использования множества общих текстур на карте очень простое - создаём любые папки в игровой директории (имена папок соответственно на английском языке), в каждую папку помещаем какой-нибудь TXD-файл, используемый картой и переименовываем его в generic.txd. Затем прописываем путь к архиву в [[gta3.dat]] или [[default.dat]], а так же не забываем в секции objs ИДЕшника привязать нужную модель к generic.txd. Например, я создал в папке TXD архив generic.txd, добавил строчку в [[gta3.dat]] "TEXDICTION TXD\GENERIC.TXD" и в каком-то IDE у меня есть строчечка "5002, ind_land052, generic, 1, 300, 0". Всё, теперь движок видит все добавленные текстуры и отрисовывает их на игровой карте.
 +
 +
2. Для GTA SA - в исполняемый файл игры так же зашито только одно единственное имя GENERIC'а карты - generic.txd. Но так же движок GTA SA поддерживает и дочерние текстуры, на которые по принципу наследования распространяются и параметры их родителей, заданные в исполняющем файле, в том числе и параметр GENERIC. За счёт этого можно создавать внешние TXD со своими именами. Делается это так: сначала создаём где-нибудь generic.txd и прописываем его в игре так же точно, как это описано для GTA3 и GTA VC; после этого, как ресурсов generic.txd нам становится мало, в директории игры создаётся ещё один TXD-файл с любым англоязычным уникальным именем (удобнее это делать в папке GENERIC) и прописываем так же путь к нему в [[gta3.dat]] или [[default.dat]], а в IDE, кроме указания имени текстуры в секции objs, так же прописываем её как дочернюю по отношению к generic.txd в секции txdp. Пример: я создал текстуру jetty.txd в папке GENERIC, прописал её в [[gta3.dat]] как "TEXDICTION MODELS\GENERIC\jetty.txd", в IDE у меня есть строчки "5002, ind_land052, generic, 300, 0" в секции objs и "jetty, generic" в секции txdp. Всё, теперь движок видит все добавленные текстуры и отрисовывает их на игровой карте.
 +
 
[[Категория:Форматы файлов]][[Категория:GTA 3]][[Категория:GTA VC]][[Категория:GTA SA]]
 
[[Категория:Форматы файлов]][[Категория:GTA 3]][[Категория:GTA VC]][[Категория:GTA SA]]

Версия 01:03, 22 сентября 2010

TXD (Texture Dictionary) - формат, использующийся RockStar Games для хранения игровой графики в таких играх как GTA 3, Vice City, San Andreas Manhunt и Bully.

Содержание

Основные данные

Все текстуры в GTA третьей серии закодированы в виде бинарных потоков - RenderWare's binary stream files, специализированных для движка RenderWare, используемого в игре. Все бинарные потоки с текстурами имеют расширение TXD (TeXture Dictionary), для просмотра и редактирования иерархии которого существует программа RWAnalyze от Stive M. Для создания, изменения текстур в архиве и их типа компрессии так же используют специальные программы, а именно PS2 TXD Viewer (только для просмотра текстур на PS2), G-TXD и TXD Workshop.

Типы текстур

Текстуры в GTA можно разделить на 4-битные (только для PS2), 8-битные, 16-битные, 32-битные. Разрешения всех текстур в ГТА обычно кратно N^2, т.е. встречаются 2х2, 4х4, 2x4 и т.д. В некоторых модах можно встретить нестандартные разрешения текстур, использование которых так же не запрещено документацией RenderWare.

Структура

1. Архив текстур PC и X-BOX (TXD)

   * Texture Dictionary
         o Struct - 2b - количество текстур в архиве, 2b - неизвестно
         o Texture Native - данная секция в TXD может повторяться несколько раз, в зависимости от количества текстур в архиве.
               + Struct - заголовок с именем и параметрами текстуры + тело текстуры
               + Extension - дополнение подсекции (не используется) 
         o Extension - дополнение секции (не используется)

2. Архив текстур PS2 (TXD)

   * Texture Dictionary
         o Struct - 2b - количество текстур в архиве, 2b - неизвестно
         o Texture Native - данная секция в TXD может повторяться несколько раз, в зависимости от количества текстур в архиве.
               + Struct - 4b - платформа, 4b- флаги фильтра
               + String - имя текстуры
               + String - имя альфа-канала текстуры
               + Struct
                     # Struct - 4b- ширина, 4b - высота, 4b - битность, неизвестно
                     # Struct - 80 bytes неизвестно, пиксели/индексы (80 bytes неизвестно, палитра) 
               + Extension - дополнение секции 
                     # Sky Mipmap Val (RW Section) - 4 bytes неизвестно 
         o Extension - дополнение секции (не используется)

Особенности в GTA3 на платформе X-BOX =

В TXD-файлах, содержащихся в IMG-архиве X-BOX версии GTA3 (не путать с модом GTAIII X-BOX version), применён специальный тип компрессии. Для их распаковки существует утилита dffxbox2pc от АК-73 aka Alex. После её применения TXD-архив открывается любым TXD-редактором (правда альфа-канал читается неверно).

Альфа канал

К изображениям в TXD также применим альфа канал. Разрешение текстуры и её альфа-канала всегда равны. Альфа канал, также известный как маска-канал - это черно-белое изображение, применяется с целью создания эффекта частичной прозрачности, либо с целью определения контуров, если модель выполняет роль спрайта в игровой сцене. Таким образом черные сектора альфа-канала определяют полную прозрачность, белые - полную видимость, а участки с разными оттенками серого определяют частичную прозрачность накладываемой на объект текстуры. Примеры - текстуры стекла, растительности, particle-эффектов, шрифтов и т.д.

[[1]] [[2]]

В итоге мы получим красный текст.

Компрессия текстур в TXD =

GTA3, GTA VC и GTA SA поддерживают TXD с компрессированными текстурами. Алгоритмы компрессии, применяемые для текстур в игре - DXT1 (для текстур без альфа-канала) и DXT3 (для текстур с альфа-каналом). Использование в модах текстур с компрессией существенно снижает размер мода, при этом качество текстуры падает не очень существенно. Тем более все современные видеокарты уже умеют работать с компрессованными текстурами. Компрессию не рекомендуется применять для текстур particle-эффектов, где после компрессии в альфа-канале могут наблюдаются сильные искажения кривой градиента, что очень заметно проявляется в игре.

GENERIC текстуры

В GTA3, GTA VC и GTA SA для моделей игровой карты можно создавать и использовать TXD вне IMG-архива. Этот тип текстур считается общим, они ищутся и загружаются движком автоматически, при загрузке игры, по адресу, указанному в gta3.dat или default.dat. Данный тип внедрён специально только для разработчиков игры, для прямого редактирования текстур без обращения к IMG-архиву игры, а так же для подгонки системных требований игры под требования заказчика. Соответственно разработчиками модов эта возможность нигде не применяется (кроме GTA Stories) и задокументирована Херомантом007 только на gtamodding.ru и gtamaps.net.

1. Для GTA3 и GTA VC - в исполняемый файл игры зашито только одно единственное имя GENERIC'а карты - generic.txd. Механизм использования множества общих текстур на карте очень простое - создаём любые папки в игровой директории (имена папок соответственно на английском языке), в каждую папку помещаем какой-нибудь TXD-файл, используемый картой и переименовываем его в generic.txd. Затем прописываем путь к архиву в gta3.dat или default.dat, а так же не забываем в секции objs ИДЕшника привязать нужную модель к generic.txd. Например, я создал в папке TXD архив generic.txd, добавил строчку в gta3.dat "TEXDICTION TXD\GENERIC.TXD" и в каком-то IDE у меня есть строчечка "5002, ind_land052, generic, 1, 300, 0". Всё, теперь движок видит все добавленные текстуры и отрисовывает их на игровой карте.

2. Для GTA SA - в исполняемый файл игры так же зашито только одно единственное имя GENERIC'а карты - generic.txd. Но так же движок GTA SA поддерживает и дочерние текстуры, на которые по принципу наследования распространяются и параметры их родителей, заданные в исполняющем файле, в том числе и параметр GENERIC. За счёт этого можно создавать внешние TXD со своими именами. Делается это так: сначала создаём где-нибудь generic.txd и прописываем его в игре так же точно, как это описано для GTA3 и GTA VC; после этого, как ресурсов generic.txd нам становится мало, в директории игры создаётся ещё один TXD-файл с любым англоязычным уникальным именем (удобнее это делать в папке GENERIC) и прописываем так же путь к нему в gta3.dat или default.dat, а в IDE, кроме указания имени текстуры в секции objs, так же прописываем её как дочернюю по отношению к generic.txd в секции txdp. Пример: я создал текстуру jetty.txd в папке GENERIC, прописал её в gta3.dat как "TEXDICTION MODELS\GENERIC\jetty.txd", в IDE у меня есть строчки "5002, ind_land052, generic, 300, 0" в секции objs и "jetty, generic" в секции txdp. Всё, теперь движок видит все добавленные текстуры и отрисовывает их на игровой карте.