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

Материал из GTAModding.ru
Перейти к: навигация, поиск
(Новая: {{stub}} '''WRLD''' - формат, используемый в LCS и VCS для хранения геометрии и текстур игрового мира. == Структур...)
 
 
(не показаны 15 промежуточных версий 3 участников)
Строка 1: Строка 1:
 
{{stub}}
 
{{stub}}
  
'''WRLD''' - формат, используемый в LCS и VCS для хранения геометрии и текстур игрового мира.
+
'''WRLD''' - формат, используемый в LCS, VCS и Manhunt2. Хранит все данные для рендеринга игровых локаций - геометрию, текстуры, а так же информацию о размещении объектов. Аналог на [[RenderWare]] - формат BSP (корневая секция которого так же называется "world").  
  
 +
С форматом умеют работать программы:
  
 +
1. [[GTA Stories IMG Tool]] и GTA LCS Texture Editor от HackMan128
 +
 +
2. [[Stories WRLD Tool]] и LCS IPL generator от Хероманта.
 +
 +
3. [[GTA Stories Map Converter v1.0]] и Manhunt2 PS2 to PC Level Converter от MAJEST1C_R3
  
 
== Структура ==
 
== Структура ==
Все файлы world-файлы имеют сигнатуру DLRW и содержит в себе 3 FAT:
 
  
1. Таблица оффсетов на внутренний [[IPL]]
+
WRLD бывает 3х типов:
  
2. Таблица идентификации моделей и текстур
+
'''Master WRLD''' - главный WRLD, имеет расширение LVZ и хранит наиболее используемые модели и текстуры, параметры интерьеров и другие данные. Также в Master WRLD содержится массив заголовков Slave WRLD и Triggered WRLD.
  
3. Общий FAT.
+
'''Slave WRLD''' - побочный WRLD, который содержит дополнительные модели и текстуры для текущего участка карты а также координаты расстановки объектов (относительно локальной системы координат, глобальные координаты можно вычислить с помощью WRLD групп в Master WRLD). Если ресурс в Slave WRLD имеется и в Master WRLD, то игра использует ресурс из Slave WRLD.
  
'''Структура заголовка WRLD:'''
+
'''Triggered WRLD''' - побочный WRLD, который подгружается если вызван специальный триггер (например используется для зданий, которые в течении игры будут взорваны или изменены), содержит только модели и текстуры.
  
    WRLD header [40 bytes]
+
В Vice City Stories также содержится дополнительный тип WRLD, который называется AREA, который содержит модели и текстуры и прилинковывается к WRLD.
 +
 
 +
глобальный заголовок WRLD [32 байта]
 
      
 
      
    4b: Сигнатура DLRW
+
  0х00 4b: сигнатура "DLRW"
    4b: unknown (обычно = 0)
+
  0х04 4b: тип WRLD (1 - Master WRLD, 0 - Slave WRLD)
    4b: Размер WRLD
+
  0х08 4b: размер WRLD
    4b: Оффсет на начало общего FAT
+
  0х0С 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в WRLD)
    4b: Оффсет на начало общего FAT (повторяется)
+
  0х10 4b: адрес на начало глобалсекции (повторяется)
    4b: Количество оффсетов в общем FAT
+
  0х14 4b: количество оффсетов в глобалсекции
    8b: unknown (обычно нули)
+
  0х18 4b: адрес на продолжение подчинённого World в IMG-архиве (для мастера не используется, равно нулю)
     4b: Оффсет на FAT идентификации моделей и текстур
+
  0х1С 4b: не используется (всегда 0)
     2b: Количество оффсетов в FAT идентификации моделей и текстур
+
 
     2b: unknown
+
заголовок Master WRLD [800 байт]
 +
 
 +
  0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD.
 +
  цикл, читающий каждую группу Slave WRLD из [[IMG]]-архива {
 +
  4b: адрес на массив начал Slave WRLD
 +
  4b: смещение WRLD группы по Х))
 +
  } конец цикла
 +
  4b: количество всех ресурсов в уровне (один master WRLD + все подчинённые ему slave WRLD)
 +
  Xb: выравнивание (0хАААА...)
 +
  0x320 4b: Количество строк в таблице задающей timeobjects (Одна строка занимает 4 байта)
 +
  0x324 4b: адрес таблицы, задающую определённым объектам на карте свойства timeobjects от времени суток или состояния игрового процесса.
 +
  0х328 4b: количество строк в таблице 2dfx эфффектов (1 строка занимает 48 байт)
 +
  0х32С 4b: адрес таблицы 2dfx эфффектов
 +
  0х330 4b: количество Slave WRLD с интерьерами (1 строка занимает 6 байт)
 +
  0х334 4b: оффсет на таблицу загрузки интерьеров.
 +
  0х338 4b: количество радар-прикреплённых текстур (только для ЛСС)
 +
  0х33С 4b: адрес на массив начал радар-прикреплённых текстур (только для ЛСС)
 +
 
 +
'''Структура строки timeobjects'''
 +
 
 +
  2b - триггер
 +
  2b - IPL ID
 +
 
 +
'''Структура строки параметров интерьеров'''
 +
 
 +
  1b - позиция в WRLD группе
 +
  1b - номер WRLD группы
 +
  2b - неизвестно 
 +
  2b - номер Slave WRLD интерьера.
 +
 
 +
'''Радары'''
 +
 
 +
Текстуры радаров хранятся в CHK, и аналогично WRLD подгружаются из IMG по заголовкам в LVZ. В LCS количество радаров всегда равно количеству Slave WRLD. Triggered WRLD радаров не имеют.
 +
 
 +
Заголовок:
 +
 
 +
  0х00 4b: сигнатура "xet"
 +
  0х04 4b: номер текстуры радара (если, к примеру, номер = 45 - то, соответственно, внутри CHK находится текстура radar45 и т.д)
 +
  0х08 4b: размер CHK
 +
  0х0С 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в CHK)
 +
  0х10 4b: адрес на начало глобалсекции (повторяется)
 +
  0х14 4b: количество оффсетов в глобалсекции
 +
  0х18 4b: адрес на продолжение CHK в IMG
 +
  0х1С 4b: не используется (всегда 0)
 +
 
 +
 
 +
 
 +
заголовок Slave WRLD [48 байт]
 +
 
 +
     0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD.
 +
     0х24 2b: количество ресурсов в WRLD
 +
     0x26 2b: неизвестно (обычно = 0х12)
 +
    0x28 32b: 8 адресов на секции IPL, последний оффсет указывает на конец последней таблицы.
 +
    0х48 2b: количество привязанных Triggered WRLD
 +
    0х4A 2b: флаг, назначение неизвестно (обычно = 0х12)
 +
    0х4C 4b: адрес на таблицу привязанных Triggered WRLD
 +
 
 +
 
 +
'''Структура строки привязанных Triggered WRLD'''
 +
 
 +
  2b - триггер
 +
  2b - номер привязанного Slave WRLD.
 +
 
 +
'''Структура таблицы переходов на скайлинг и координаты моделей'''
 +
 
 +
Данная таблица располагается сразу после заголовка Slave WRLD и имеет фиксированное число оффсетов.
 +
 
 +
Каждый оффсет имеет тип Longint и ссылается на определенное место во внутренней бинарной таблице скайлинга и [[IPL]]
  
'''Структура таблицы оффсетов на внутренний IPL'''
+
Последний оффсет таблицы ссылается на технический сектор '''AAAAAAAA''', необходимый для движка, сигнализирующий об окончании загрузки [[IPL]].
  
Данная таблица располагается сразу после заголовка и имеет фиксированное число оффсетов.
+
'''Структура таблицы скайлинга и координат моделей:'''
  
Каждый оффсет имеет тип Longint и ссылается на определенное место во внутренней бинарной таблице [[IPL]]
+
Длинна строки = 80b, количество строк определено в заголовке (см. выше)
  
Последний оффсет таблицы ссылается на технический сектор '''AAAAAAAA''', необходимый движку, и сигнализирует об окончании загрузки [[IPL]].
+
    0х00 2b - IPL ID (1 модель может состоять из нескольких ресурсов), необходимо произвести логическую операцию and 0x7FFF для получения реального ID
 +
    0x02 2b - ID ресурса
 +
    0х04 8b - глобальные XYZ и радиус ограничивающей сферы (каждая из величин хранится в half precision float)
 +
    0х0С 4b - выравнивание
 +
    0х10 64b - matrix 4x4
 +
* matrix 4x4 используется для хранения координат, масштаба модели (векторы из матрицы) и угла поворота модели на карте (кватернион из матрицы).
  
'''Структура таблицы идентификации моделей и текстур'''
+
'''Структура таблицы идентификации ресурсов'''
  
По данной таблице моделям и текстурам присваивается определенный ID.
+
По данной таблице движок игры, исходя из ID ресурса, находит нужный ресурс в WRLD.
 +
   
 +
Одна строка таблицы занимает 4 байта для мастера, 8 байт для подчинённого, количество ресурсов в WRLD записано в заголовке.
  
Один структурный блок таблицы занимает 8 байт
+
     4b: ID ресурса (только для подчинённого WRLD, для мастера определён счётчиком номера строки)
     4b: ID модели или текстуры
+
     4b: Оффсет на ресурс
     4b: Оффсет на модель или текстуру
+
  
'''Структура общего FAT'''
+
'''Структура общего FAT (глобалсекции)'''
  
 
Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL.
 
Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL.
  
Используется скорее всего для проверки
+
Используется для перехода оффсетов из локального (т.е от начала файла) статуса к глобальному (от начала буфера памяти).
  
 
{{GTA_Stories-navi}}
 
{{GTA_Stories-navi}}
 
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]]
 
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]]

Текущая версия на 11:27, 10 июня 2014

WRLD - формат, используемый в LCS, VCS и Manhunt2. Хранит все данные для рендеринга игровых локаций - геометрию, текстуры, а так же информацию о размещении объектов. Аналог на RenderWare - формат BSP (корневая секция которого так же называется "world").

С форматом умеют работать программы:

1. GTA Stories IMG Tool и GTA LCS Texture Editor от HackMan128

2. Stories WRLD Tool и LCS IPL generator от Хероманта.

3. GTA Stories Map Converter v1.0 и Manhunt2 PS2 to PC Level Converter от MAJEST1C_R3

Структура

WRLD бывает 3х типов:

Master WRLD - главный WRLD, имеет расширение LVZ и хранит наиболее используемые модели и текстуры, параметры интерьеров и другие данные. Также в Master WRLD содержится массив заголовков Slave WRLD и Triggered WRLD.

Slave WRLD - побочный WRLD, который содержит дополнительные модели и текстуры для текущего участка карты а также координаты расстановки объектов (относительно локальной системы координат, глобальные координаты можно вычислить с помощью WRLD групп в Master WRLD). Если ресурс в Slave WRLD имеется и в Master WRLD, то игра использует ресурс из Slave WRLD.

Triggered WRLD - побочный WRLD, который подгружается если вызван специальный триггер (например используется для зданий, которые в течении игры будут взорваны или изменены), содержит только модели и текстуры.

В Vice City Stories также содержится дополнительный тип WRLD, который называется AREA, который содержит модели и текстуры и прилинковывается к WRLD.

глобальный заголовок WRLD [32 байта]

  0х00 4b: сигнатура "DLRW"
  0х04 4b: тип WRLD (1 - Master WRLD, 0 - Slave WRLD)
  0х08 4b: размер WRLD
  0х0С 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в WRLD)
  0х10 4b: адрес на начало глобалсекции (повторяется)
  0х14 4b: количество оффсетов в глобалсекции
  0х18 4b: адрес на продолжение подчинённого World в IMG-архиве (для мастера не используется, равно нулю)
  0х1С 4b: не используется (всегда 0)

заголовок Master WRLD [800 байт]

  0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD.
  цикл, читающий каждую группу Slave WRLD из IMG-архива {
  4b: адрес на массив начал Slave WRLD
  4b: смещение WRLD группы по Х))
  } конец цикла
  4b: количество всех ресурсов в уровне (один master WRLD + все подчинённые ему slave WRLD)
  Xb: выравнивание (0хАААА...)
  0x320 4b: Количество строк в таблице задающей timeobjects (Одна строка занимает 4 байта)
  0x324 4b: адрес таблицы, задающую определённым объектам на карте свойства timeobjects от времени суток или состояния игрового процесса.
  0х328 4b: количество строк в таблице 2dfx эфффектов (1 строка занимает 48 байт)
  0х32С 4b: адрес таблицы 2dfx эфффектов
  0х330 4b: количество Slave WRLD с интерьерами (1 строка занимает 6 байт)
  0х334 4b: оффсет на таблицу загрузки интерьеров.
  0х338 4b: количество радар-прикреплённых текстур (только для ЛСС)
  0х33С 4b: адрес на массив начал радар-прикреплённых текстур (только для ЛСС)

Структура строки timeobjects

  2b - триггер
  2b - IPL ID

Структура строки параметров интерьеров

  1b - позиция в WRLD группе
  1b - номер WRLD группы
  2b - неизвестно   
  2b - номер Slave WRLD интерьера.

Радары

Текстуры радаров хранятся в CHK, и аналогично WRLD подгружаются из IMG по заголовкам в LVZ. В LCS количество радаров всегда равно количеству Slave WRLD. Triggered WRLD радаров не имеют.

Заголовок:

  0х00 4b: сигнатура "xet"
  0х04 4b: номер текстуры радара (если, к примеру, номер = 45 - то, соответственно, внутри CHK находится текстура radar45 и т.д)
  0х08 4b: размер CHK
  0х0С 4b: адрес на начало глобалсекции (таблицы адресов для всех подсекций в CHK)
  0х10 4b: адрес на начало глобалсекции (повторяется)
  0х14 4b: количество оффсетов в глобалсекции
  0х18 4b: адрес на продолжение CHK в IMG
  0х1С 4b: не используется (всегда 0)  


заголовок Slave WRLD [48 байт]

   0х20 4b: адрес на таблицу идентификаторов ресурсов, хранящихся в WRLD.
   0х24 2b: количество ресурсов в WRLD
   0x26 2b: неизвестно (обычно = 0х12)
   0x28 32b: 8 адресов на секции IPL, последний оффсет указывает на конец последней таблицы.
   0х48 2b: количество привязанных Triggered WRLD
   0х4A 2b: флаг, назначение неизвестно (обычно = 0х12)
   0х4C 4b: адрес на таблицу привязанных Triggered WRLD


Структура строки привязанных Triggered WRLD

  2b - триггер
  2b - номер привязанного Slave WRLD. 

Структура таблицы переходов на скайлинг и координаты моделей

Данная таблица располагается сразу после заголовка Slave WRLD и имеет фиксированное число оффсетов.

Каждый оффсет имеет тип Longint и ссылается на определенное место во внутренней бинарной таблице скайлинга и IPL

Последний оффсет таблицы ссылается на технический сектор AAAAAAAA, необходимый для движка, сигнализирующий об окончании загрузки IPL.

Структура таблицы скайлинга и координат моделей:

Длинна строки = 80b, количество строк определено в заголовке (см. выше)

   0х00 2b - IPL ID (1 модель может состоять из нескольких ресурсов), необходимо произвести логическую операцию and 0x7FFF для получения реального ID
   0x02 2b - ID ресурса
   0х04 8b - глобальные XYZ и радиус ограничивающей сферы (каждая из величин хранится в half precision float)
   0х0С 4b - выравнивание
   0х10 64b - matrix 4x4 
* matrix 4x4 используется для хранения координат, масштаба модели (векторы из матрицы) и угла поворота модели на карте (кватернион из матрицы).

Структура таблицы идентификации ресурсов

По данной таблице движок игры, исходя из ID ресурса, находит нужный ресурс в WRLD.

Одна строка таблицы занимает 4 байта для мастера, 8 байт для подчинённого, количество ресурсов в WRLD записано в заголовке.

   4b: ID ресурса (только для подчинённого WRLD, для мастера определён счётчиком номера строки)
   4b: Оффсет на ресурс

Структура общего FAT (глобалсекции)

Общий FAT обычно располагается в самом конце файла и указывает на все оффсеты, которые ссылаются непосредственно на модели/текстуры/IPL.

Используется для перехода оффсетов из локального (т.е от начала файла) статуса к глобальному (от начала буфера памяти).

п · о · р
Lcs.png GTA Liberty City Stories Vcs.png GTA Vice City Stories
Форматы файлов.anim.at3.cam.chk/.xtx.col2.cut.dtz.ifp.img/.dir.irx.gxt.lvz.mdl.pss.raw/.sdt.scm.vb.wrld
ИнструментыApacheConsole Texture Explorer (PSP/PS2)GTA Stories IMG ToolGTA Stories Texture ViewerGTA Stories Texture Explorer
GTA Stories RAW EditorGXT EditorJPCSPMDL importerMF AudioPCSX2PPSSPPStories WRLD ToolGTA Stories Map Converter v1.0UMD GenYAIE
ТуториалыМоддинг VCS и LCS (PSP/PS2)Аудио на PSPАудио на PS2Спецификация версий PS2Конфигурирование PCSX2
ПК-версииVice City StoriesLiberty City Stories