-
Notifications
You must be signed in to change notification settings - Fork 7
b3D File Format Rus
Глоссарий
integer - тип данных, целое положительное число, размер в файле 4 байта, в файлах игры не встречаются значения больше 2^16. В integer, например, хранятся количество элементов массива и индексы координат.
float - тип данных, нецелое число, размер в файле 4 байта. Во float, например, хранятся координаты объектов в игре.
string - тип данных, строка, размер которой в файле всегда равен 32 байта.
array - последовательность элементов, всегда предваряется переменной типа integer, содержащей количество элементов.
-TODO-
0. Идентификатор 444 -???.
1. Структура блоков данных.
2. Группировка блоков.
3. Приложения.
Ссылки
1. Введение
3. Секции
3.1 Заголовок файла
3.3 Блоки данных
Приложение 1. Типы объектов
Приложение 2. Файлы игры
Приложение3. Название объектов
Этот документ описывает структуру формата файла b3D, используемого в игре Дальнобойщики 2 (Второе издание) версия 8.
Все переменные в секциях описаны в порядке их следования в файле.
Формат b3D разделен на 3 основные секции (см Табл. 1.
№ | Секция | Ссылки |
---|---|---|
1 | Заголовок файла | См. Таблица 2 |
2 | Список материалов | См. Таблица 3 |
Идентификатор начала секции | См. Таблица 6 | |
3 | Блоки данных | См. Таблица 5 |
Идентификатор конца секции | См. Таблица 6 |
Файл начинается с сигнатуры из четырех символов "b3d.". Далее располагается таблица размеров секций файла. Все значения размеров в таблице уменьшены в 4 раза, это возможно поскольку размеры всех переменных, которые хранятся в b3D файлах, кратны 4ем. Также присутствует неизвестная константа 6.
Тип данных | Описание | Значение |
---|---|---|
string | Сигнатура файла | "b3d." |
integer | [ Размер файла в байтах ] / 4 | |
integer | Неизвестная константа | 6 |
integer | [ Размер секции со списком материалов (1ая секция) ] / 4 | |
integer | [ Размер первых двух секций (1ая и 2ая) в байтах ] / 4 | |
integer | [ Размер секции с блоками данных (третья секция) в байтах ] / 4 |
Список материалов представляет из себя массив элементов, хранящих строковый тип - название материала (См. Таблица 4). Список начинается с целочисленной переменной хранящей количество материалов (См. [Таблица 3()). Сами материалы хранятся отдельно в .res файлах.
№ | Тип данных | Описание | Ссылки |
---|---|---|---|
1 | integer | Количество материалов | |
2 | array | Список названий материалов | См. Таблица 4 |
Размер | Тип данных | Описание |
---|---|---|
32 байта | string | Имя материала |
В b3D используется единый формат хранения блока данных (См. Таблица 5 ). Блоки отличаются друг от друга только заложенными в них параметрами. Блок имеют идентификатор начала (333 в десятичной форме записи) и идентификатором конца блока (555), а также неизвестный идентификатор 444 (См. Таблица 6 ). После открывающего идентификатора идет заголовок блока и его параметры, а также при наличии секция вложенных блоков. Иерархия расположения блоков, а также их назначение объяснена ниже.
№ | Описание | Ссылки |
---|---|---|
Идентификатор начала блока | См. Таблица 6 | |
1 | Заголовок блока | См. Таблица 7 |
2 | Параметры | См. Пункт 3.3.2. Параметры блоков |
3 | Вложенные блоки данных | См. Таблица 9 |
Идентификатор конца блока | См. Таблица 6 |
№ | Описание | Значение в десятичной форме |
---|---|---|
1 | Начало секции с блоками данных | 111 |
2 | Конец секции с блоками данных | 222 |
3 | Начало одного блока | 333 |
4 | ??? | 444 |
4 | Конец одного блока | 555 |
Заголовок блока содержит два поля: название блока и тип блока. Именование блоков, применяемое в игре, приведено в приложениях.
№ | Тип данных | Описание | Ссылки |
---|---|---|---|
1 | string | Название блока | См. Приложение 3 |
2 | integer | Тип блока | См. Таблица 8 |
Значения типов блоков находятся в пределах от 0 до 40 включительно. Пропущенные значения цифрового ряда отсутствуют и в файлах игры.
Номер блока | Описание | Параметры |
---|---|---|
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). |
Вложенные блоки хранятся последовательно, начиная с переменной отображающей их количество.
№ | Тип данных | Описание | Ссылка |
---|---|---|---|
1 | integer | Количество блоков | |
2 | array | Блоки | См. Таблица 5 |
Далее описываются параметры каждого из типов блоков данных (См. Таблица 5 и Таблица 8).
Блок 0
Самый первый блок в файле. Данный тип блок не хранит в себе вложенных блоков. Одинаковая структура во всех b3D файлах игры.
№ | Тип данных | Описание | Значение |
---|---|---|---|
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" в единственном количестве. Данный тип блок не хранит в себе вложенных блоков.
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | string | Название | Observer |
2 | string | Название | db:room_db_012 |
Блок 2
Присутствует только в файлах "Trucks.d3D" ($$$Group_1381_truck), "ce.d3D" (room_ce01), "dq.d3D" (lep12).
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
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
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
4 | float | Радиус ограничивающей сферы | |
5 | string | Название блока типа 24 | |
6 | string | Пусто | |
Вложенные блоки | |||
6 | integer | Количество блоков | |
7 | array | Блоки |
Блок 5
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
4 | float | Радиус ограничивающей сферы | |
5 | string | Название блока/объекта | |
Вложенные блоки | |||
6 | integer | Количество блоков | |
7 | array | Блоки |
Блок 7
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
4 | float | Радиус ограничивающей сферы | |
5 | string | Название блока/объекта | |
6 | integer | Количество | |
7 | array | См. Таблица 16 | |
Вложенные блоки | |||
6 | integer | Количество блоков | |
7 | array | Блоки |
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты вершины (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
Текстурные координаты | |||
1 | float | U | |
2 | float | V |
Блок 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
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
4 | float | Радиус ограничивающей сферы | |
5 | float | Неизвестная переменная | |
6 | float | Неизвестная переменная | |
7 | float | Неизвестная переменная | |
8 | float | Неизвестная переменная | |
Вложенные блоки | |||
9 | integer | Количество блоков | |
10 | array | Блоки |
Блок 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
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
4 | float | Радиус ограничивающей сферы | |
5 | integer | Неизвестная переменная | |
6 | integer | Неизвестная переменная | |
7 | integer | Количество | |
8 | array | См. Таблица 22 |
№ | Тип данных | Описание | Значение |
---|
Блок 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
№ | Тип данных | Описание | Значение |
---|---|---|---|
Координаты центра объекта (локальное пространство) | |||
1 | float | X | |
2 | float | Y | |
3 | float | Z | |
4 | float | Радиус ограничивающей сферы | |
5 | string | Название блока/объекта | |
6 | string | Название блока/объекта |
Блок 19
№ | Тип данных | Описание |
---|---|---|
Вложенные блоки | ||
14 | integer | Количество блоков |
15 | array | Блоки |
№ | Тип данных | Описание | Значение |
---|---|---|---|
1 | integer | Неизвестная переменная | |
2 | integer | Неизвестная переменная | |
3 | integer | Неизвестная переменная | |
4 | integer | Неизвестная переменная | |
3 | integer | Неизвестная переменная | |
4 | integer | Неизвестная переменная | |
Вложенные блоки | |||
14 | integer | Количество блоков | |
15 | array | Блоки |
№ | Тип данных | Описание | Значение |
---|---|---|---|
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 | Блоки |
№ | Тип данных | Описание | Значение |
---|---|---|---|
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 | Неизвестная переменная |
№ | Тип данных | Описание |
---|---|---|
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 (вторая точка полигона) |
№ | Тип данных | Описание |
---|---|---|
1 |
№ | Тип данных | Описание |
---|---|---|
1 | float | X |
2 | float | Y |
3 | float | Z |
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 | Дом, строение | |
2 | АЗС | |
3 | База | |
4 | СТО | |
5 | Нефтебаза | |
5 | Информационный киоск |
№ | Тип данных | Описание |
---|---|---|
1 | Дорожный знак | |
2 | Светофор | |
3 | Радар |
№ | Тип данных | Описание |
---|---|---|
1 | Люди | |
2 | Деревья | |
3 | Свет |
№ | Тип данных | Описание |
---|---|---|
1 | Автомобиль | |
2 | Прицеп, Полуприцеп | |
3 | Кабина |
№ | Тип данных | Описание |
---|---|---|
1 | ap.b3D | Населенный пункт Южный (Аэропорт) |
2 | ar.b3D | Населенный пункт Залеск () |
3 | dr.b3D | Населенный пункт Кольцо (Гоночная трасса) |
3 | au.b3D | Населенный пункт Ельнино () |