Бинарные ресурсы в GEM RTS
Общая информация
Большинство бинарных файлов GEM RTS представляют собой контейнеры на основе чанков (chunk-based containers).
Любой чанк начинается с четырёхсимвольного магического идентификатора (Chunk_ID, FourCC), который обычно представляет собой человекочитаемую комбинацию из четырёх ASCII-символов.
Чанки не содержат информации о своём размере, поэтому программа-парсер должна вычислять его на основе структуры данных конкретного чанка.
Все многобайтовые данные в бинарных форматах GEM RTS хранятся в формате Little-endian, при котором младший байт записывается первым.
Контейнеры бинарных файлов
Контейнер используется для хранения однотипных файлов с целью уменьшения количества отдельных файлов в файловой системе.
.mesh
Контейнерный файл, содержащий один или несколько ресурсов моделей в формате .ply
.cmesh
Контейнерный файл, содержащий один или несколько ресурсов коллизионных и физических сеток в формате .vol
.animation
Контейнерный файл, содержащий один или несколько ресурсов анимации в формате .anm
Расширения файлов
.ply
Формат хранения данных геометрии модели
.anm
Формат хранения данных анимаций
.vol
Формат хранения данных волюмов модели
Типы данных
chunk
Четырёхсимвольный магический идентификатор (FourCC), определяющий тип и содержимое следующего блока данных.
4
int8 / uint8
Однобайтовое знаковое / беззнаковое целое число.
1
int16 / uint16
Двухбайтовое знаковое / беззнаковое целое число.
2
int32 / uint32
Четырёхбайтовое знаковое / беззнаковое целое число.
4
float
Четырёхбайтовое число с плавающей точкой.
4
string8
Короткая строка:
uint8 length
char - массив символов uint8[length], без завершающего нулевого символа.
1+
string8/24 или string24
Строка переменной длины в формате string8/24. Для коротких строк, длина которых меньше 255, структура совпадает с string8. Если длина больше либо равна 255:
uint8 signature
0xFF - uint24 long_length
char - массив символов uint8[long_length], без завершающего нулевого символа.
1+
string32
Устаревший формат строки:
uint32 long_length
char - массив символов uint8[long_length], без завершающего нулевого символа.
4+
Другие условные обозначения
Обозначение
Описание
struct
Вложенная структура данных.
<type>[<number>]
Массив фиксированного размера типа <type>, содержащий <number> элементов.
<type>[<name>]
Массив переменного размера типа <type>. Количество элементов определяется значением, хранящимся в поле <name>.
unorm8
Беззнаковое 8-битное целое число (uint8), которое при чтении преобразуется в значение типа float в диапазоне [0..1].
Little-endian
Порядок байтов, используемый для хранения всех многобайтовых значений. Младший байт записывается первым.
Описание форматов ресурсов

Контейнеры бинарных файлов

Меш модели

Анимации модели

Волюмы модели
Последнее обновление