Skip to content
This repository was archived by the owner on May 4, 2021. It is now read-only.

b3D File Format Rus

AlexKimov edited this page Jun 6, 2018 · 19 revisions

Описание формата b3D (дальнобойщики 2 версия 8)

Date: 2018.06 | Version: 0.05
Авторы: Александр Евдокимов

Глоссарий

integer - тип данных, целое положительное число, размер в файле 4 байта, в файлах игры не встречаются значения больше 2^16. В integer, например, хранятся количество элементов массива и индексы координат. 
float - тип данных, нецелое число, размер в файле 4 байта. Во float, например, хранятся координаты объектов в игре.	
string - тип данных, строка, размер которой в файле всегда равен 32 байта.
array - последовательность элементов, всегда предваряется переменной типа integer, содержащей количество элементов.	

-TODO-

0. Идентификатор  444 -???. 

1. Структура блоков данных.

2. Группировка блоков. 

3. Приложения.

Ссылки

Оглавление

1. Введение

2. Общая структура формата

3. Секции

  3.1 Заголовок файла

  3.2 Список материалов

  3.3 Блоки данных

Приложение 1. Типы объектов

Приложение 2. Файлы игры

Приложение3. Название объектов

1. Введение

Этот документ описывает структуру формата файла b3D, используемого в игре Дальнобойщики 2 (Второе издание) версия 8.

Все переменные в секциях описаны в порядке их следования в файле.

2. Общая структура формата

Формат b3D разделен на 3 основные секции (см Табл. 1.

Таблица 1. Общая Структура

Секция Ссылки
1 Заголовок файла См. Таблица 2
2 Список материалов См. Таблица 3
Идентификатор начала секции См. Таблица 6
3 Блоки данных См. Таблица 5
Идентификатор конца секции См. Таблица 6

3. Секции

3.1 Заголовок файла

Файл начинается с сигнатуры из четырех символов "b3d.". Далее располагается таблица размеров секций файла. Все значения размеров в таблице уменьшены в 4 раза, это возможно поскольку размеры всех переменных, которые хранятся в b3D файлах, кратны 4ем. Также присутствует неизвестная константа 6.

Таблица 2. Структура заголовка файла
Тип данных Описание Значение
string Сигнатура файла "b3d."
integer [ Размер файла в байтах ] / 4
integer Неизвестная константа 6
integer [ Размер секции со списком материалов (1ая секция) ] / 4
integer [ Размер первых двух секций (1ая и 2ая) в байтах ] / 4
integer [ Размер секции с блоками данных (третья секция) в байтах ] / 4

3.2 Список материалов

Список материалов представляет из себя массив элементов, хранящих строковый тип - название материала (См. Таблица 4). Список начинается с целочисленной переменной хранящей количество материалов (См. [Таблица 3()). Сами материалы хранятся отдельно в .res файлах.

Таблица 3. Общая структура секции списка материалов
Тип данных Описание Ссылки
1 integer Количество материалов
2 array Список названий материалов См. Таблица 4
Таблица 4. Формат элемента списка материалов
Размер Тип данных Описание
32 байта string Имя материала

3.3 Блоки данных

3.3.1 Общая структура

В b3D используется единый формат хранения блока данных (См. Таблица 5 ). Блоки отличаются друг от друга только заложенными в них параметрами. Блок имеют идентификатор начала (333 в десятичной форме записи) и идентификатором конца блока (555), а также неизвестный идентификатор 444 (См. Таблица 6 ). После открывающего идентификатора идет заголовок блока и его параметры, а также при наличии секция вложенных блоков. Иерархия расположения блоков, а также их назначение объяснена ниже.

Таблица 5. Общая структура блока данных
Описание Ссылки
Идентификатор начала блока См. Таблица 6
1 Заголовок блока См. Таблица 7
2 Параметры См. Пункт 3.3.2. Параметры блоков
3 Вложенные блоки данных См. Таблица 9
Идентификатор конца блока См. Таблица 6
Таблица 6. Идентификаторы
Описание Значение в десятичной форме
1 Начало секции с блоками данных 111
2 Конец секции с блоками данных 222
3 Начало одного блока 333
4 ??? 444
4 Конец одного блока 555

Заголовок блока содержит два поля: название блока и тип блока. Именование блоков, применяемое в игре, приведено в приложениях.

Таблица 7. Заголовок блока данных
Тип данных Описание Ссылки
1 string Название блока См. Приложение 3
2 integer Тип блока См. Таблица 8

Значения типов блоков находятся в пределах от 0 до 40 включительно. Пропущенные значения цифрового ряда отсутствуют и в файлах игры.

Таблица 8. Типы блоков, используемые в игре
Номер блока Описание Параметры
0 Пустой блок См. Таблица 10
1 Связывает два блока. См. Таблица 11
2
4 Тип: Групповой блок. Содержит вложенные блоки для хранения и отображения информации об объектах инфраструктуры дороги: дорожные знаки, радары, светофоры, фонари. При соприкосновении с моделью автомобиля эти объекты могут быть частично или полностью повреждены. См. Таблица 13
5 Тип: Групповой блок. Содержит вложенные блоки для хранения и отображения информации об объектах: строения, внешняя и внутренняя модели транспорта, дороги, стоянки, поверхность земли, холмы и скалы, а также модели коллизий этих и других объектов.
7
8 Меши
9
10
12
13 CheckPoint (EVENT)
14
18 Связывает два блока.
19 Блок содержит вложенные блоки для отображения объектов, по которым транспорт может перемещаться: дорога, бездорожье, объекты природы, т.н. комнаты (room).
20
21 Тип: Групповой блок. Содержит вложенные блоки для отображения специальных объектов: людей, деревья, ключи, а также объекты освещение.
23
24 Тип: Групповой блок. Содержит матрицу трансформации объектов для перевода координат объекта в координаты пространства игрового мира.
25 Тип: Звуковой триггер.
28
29
30 Тип: Портал. Представляет собой невидимый полигон высотой 120, который соединяет соседние комнаты (room).
33 Блок для хранения данных объектов освещения.
35
36
37 Меши
39
40 Блок для специальных объектов-генераторов, которые создаются динамически при загрузке игры: деревьев ($$treegenerator), свечения объектов ($$dynamicGlow), людей ($$people).

Вложенные блоки хранятся последовательно, начиная с переменной отображающей их количество.

Таблица 9. Вложенные блоки
Тип данных Описание Ссылка
1 integer Количество блоков
2 array Блоки См. Таблица 5

3.3.2 Параметры блоков

Далее описываются параметры каждого из типов блоков данных (См. Таблица 5 и Таблица 8).

Блок 0

Самый первый блок в файле. Данный тип блок не хранит в себе вложенных блоков. Одинаковая структура во всех b3D файлах игры.

Таблица 10. Блок 0
Тип данных Описание Значение
1 ??? Неизвестная переменная 0
2 ??? Неизвестная переменная 0
3 ??? Неизвестная переменная 0
4 ??? Неизвестная переменная 0
5 ??? Неизвестная переменная 0
6 ??? Неизвестная переменная 0
7 ??? Неизвестная переменная 0
8 ??? Неизвестная переменная 0
9 ??? Неизвестная переменная 0
10 float Неизвестная переменная 1
11 ??? Неизвестная переменная 0

Блок 1

Присутствует только в файле "Common.d3D" в единственном количестве. Данный тип блок не хранит в себе вложенных блоков.

Таблица 11. Блок 1
Тип данных Описание Значение
1 string Название Observer
2 string Название db:room_db_012

Блок 2

Присутствует только в файлах "Trucks.d3D" ($$$Group_1381_truck), "ce.d3D" (room_ce01), "dq.d3D" (lep12).

Таблица 12. Блок 2
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 float Неизвестная переменная 1
6 float Неизвестная переменная 0
7 float Неизвестная переменная 0
8 float Неизвестная переменная 0
Вложенные блоки
9 integer Количество блоков
10 array Блоки

Блок 4

Таблица 13. Блок 4
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 string Название блока типа 24
6 string Пусто
Вложенные блоки
6 integer Количество блоков
7 array Блоки

Блок 5

Таблица 14. Блок 5
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 string Название блока/объекта
Вложенные блоки
6 integer Количество блоков
7 array Блоки

Блок 7

Таблица 15. Блок 7
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 string Название блока/объекта
6 integer Количество
7 array См. Таблица 16
Вложенные блоки
6 integer Количество блоков
7 array Блоки
Таблица 16.
Тип данных Описание Значение
Координаты вершины (локальное пространство)
1 float X
2 float Y
3 float Z
Текстурные координаты
1 float U
2 float V

Блок 9

Таблица 17. Блок 9
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 float Неизвестная переменная
6 float Неизвестная переменная
7 float Неизвестная переменная
8 float Неизвестная переменная
Вложенные блоки
9 integer Количество блоков
10 array Блоки

Блок 10

Таблица 18. Блок 10
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 float Неизвестная переменная
6 float Неизвестная переменная
7 float Неизвестная переменная
8 float Неизвестная переменная
Вложенные блоки
9 integer Количество блоков
10 array Блоки

Блок 12

Таблица 20. Блок 12
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 float Неизвестная переменная
6 float Неизвестная переменная
7 float Неизвестная переменная
8 float Неизвестная переменная
9 integer Неизвестная переменная
10 integer Неизвестная переменная
Вложенные блоки
11 integer Количество блоков
12 array Блоки

Блок 13

Таблица 21. Блок 13
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 integer Неизвестная переменная
6 integer Неизвестная переменная
7 integer Количество
8 array См. Таблица 22
Таблица 22.
Тип данных Описание Значение

Блок 14

Таблица. Блок 14
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 integer Неизвестная переменная
6 integer Неизвестная переменная
7 float Неизвестная переменная
8 float Неизвестная переменная
9 float Неизвестная переменная
10 float Неизвестная переменная
11 float Неизвестная переменная

Блок 18

Таблица. Блок 18
Тип данных Описание Значение
Координаты центра объекта (локальное пространство)
1 float X
2 float Y
3 float Z
4 float Радиус ограничивающей сферы
5 string Название блока/объекта
6 string Название блока/объекта

Блок 19

Таблица. Блок 19
Тип данных Описание
Вложенные блоки
14 integer Количество блоков
15 array Блоки
Таблица. Блок 21
Тип данных Описание Значение
1 integer Неизвестная переменная
2 integer Неизвестная переменная
3 integer Неизвестная переменная
4 integer Неизвестная переменная
3 integer Неизвестная переменная
4 integer Неизвестная переменная
Вложенные блоки
14 integer Количество блоков
15 array Блоки
Таблица. Блок 24
Тип данных Описание Значение
X
1 float X
2 float y
3 float z
Y
4 float X
5 float y
6 float z
Z
7 float X
8 float y
9 float z
Позиция
10 float X
11 float y
12 float z
13 integer Неизвестная переменная 0, 1
Вложенные блоки
14 integer Количество блоков
15 array Блоки
Таблица. Блок 25
Тип данных Описание Значение
1 integer Неизвестная переменная
2 integer Неизвестная переменная
3 integer Неизвестная переменная
4 string Неизвестная переменная
5 integer Неизвестная переменная
6 integer Неизвестная переменная
7 float Неизвестная переменная
8 float Неизвестная переменная
9 float Неизвестная переменная
10 float Неизвестная переменная
11 float Неизвестная переменная
12 float Неизвестная переменная
13 float Неизвестная переменная
14 float Неизвестная переменная
15 float Неизвестная переменная
Таблица. Блок 30
Тип данных Описание
1 float X
2 float Y
3 float Z
4 Неизвестная переменная
5 string Название комнаты, с которой соединяет портал.
6 float X (первая точка полигона)
7 float Y (первая точка полигона)
8 float Z (первая точка полигона)
9 float X (вторая точка полигона)
10 float Y (вторая точка полигона)
11 float Z (вторая точка полигона)
Таблица. Блок 35
Тип данных Описание
1
Таблица. Блок 37
Тип данных Описание
1 float X
2 float Y
3 float Z

3.3.3 Группировка блоков

3.3.3.1 Дома, строения.

3.3.3.2 Базы, АЗС, СТО, киоски

3.3.3.3 Элементы освещения

3.3.3.4 Инфраструктура дороги

3.3.3.5 Дороги, бездорожье, окружающая среда(вода, горы, болота).

3.3.3.6 Деревья, люди

3.3.3.7 Специальные объекты

Приложение 1. Типы объектов

Таблица. Строения
Тип данных Описание
1 Дом, строение
2 АЗС
3 База
4 СТО
5 Нефтебаза
5 Информационный киоск
Таблица. Дорожная инфраструктура
Тип данных Описание
1 Дорожный знак
2 Светофор
3 Радар
Таблица. Другое
Тип данных Описание
1 Люди
2 Деревья
3 Свет
Таблица. Транспортное средство
Тип данных Описание
1 Автомобиль
2 Прицеп, Полуприцеп
3 Кабина

Приложение 2. Файлы игры

Таблица. Файлы .b3D игры
Тип данных Описание
1 ap.b3D Населенный пункт Южный (Аэропорт)
2 ar.b3D Населенный пункт Залеск ()
3 dr.b3D Населенный пункт Кольцо (Гоночная трасса)
3 au.b3D Населенный пункт Ельнино ()

Приложение3. Название объектов

Clone this wiki locally