> For the complete documentation index, see [llms.txt](https://docs.bestway.com.ua/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bestway.com.ua/gem-rts-v1-ru/bazovaya-informaciya-o-resursakh-v-gem-rts/binarnye-resursy-v-gem-rts/konteinery-binarnykh-failov-.mesh-.cmesh-.animation.md).

# Контейнеры бинарных файлов (.mesh, .cmesh, .animation)

Форматы **.mesh**, **.cmesh** и **.animation** представляют собой контейнеры, предназначенные для хранения нескольких файлов одного типа в одном бинарном файле. Основное назначение контейнеров состоит в уменьшении количества отдельных файлов в файловой системе и ускорении загрузки ресурсов.

Данные внутри контейнера организованы в виде последовательности chunk-ов. Каждый chunk начинается с четырёхсимвольного идентификатора (FourCC, Chunk ID), который определяет тип содержащихся в нём данных.

Контейнер содержит таблицу файлов, в которой для каждого файла хранятся его имя и смещение data\_offset.

Размер каждого файла внутри контейнера, кроме последнего, определяется по формуле:

`data_size = entries[N + 1].data_offset - entries[N].data_offset`

Для последнего файла в контейнере его конец совпадает с концом контейнера.

При чтении файла парсер последовательно обрабатывает chunk-ы, определяя их тип по значению FourCC.&#x20;

{% hint style="warning" %}
Обнаружение неизвестного значения FourCC считается фатальной ошибкой. Парсер не должен пропускать неизвестные чанки.
{% endhint %}

**Структура данных**

```
PMSH | ANIM | CMHR
MTBL
    entry_count
    entries[entry_count]
        entry_name
        data_offset
    resources[entry_count]
        MESH | EANM | EVLM
            resource_data
```

### Идентификаторы контейнера

<table><thead><tr><th width="101.26953125">FourCC</th><th width="95.73828125">Тип</th><th>Описание</th></tr></thead><tbody><tr><td><code>PMSH</code></td><td>uint8[4]</td><td>Контейнер мешей. <br>Содержит ресурсы формата <code>.ply</code>.</td></tr><tr><td><code>ANIM</code></td><td>uint8[4]</td><td>Контейнер анимаций. <br>Содержит ресурсы формата <code>.anm</code>.</td></tr><tr><td><code>CMHR</code></td><td>uint8[4]</td><td>Контейнер волюмов физики и коллизий. <br>Содержит ресурсы формата <code>.vol</code>.</td></tr></tbody></table>

### Чанк `MTBL`

Содержит список всех файлов, расположенных внутри контейнера, а также смещения до соответствующих данных.

<pre><code><strong>MTBL
</strong>    entry_count
    entries[entry_count]
        entry_name
        data_offset
</code></pre>

<table><thead><tr><th>Название</th><th width="175.76953125">Тип</th><th width="81.99609375">Размер</th><th>Описание</th></tr></thead><tbody><tr><td>FourCC</td><td>uint8[4]</td><td>4</td><td><code>MTBL</code></td></tr><tr><td>entry_count</td><td>uint32</td><td>4</td><td>Количество записей в таблице</td></tr><tr><td>entries</td><td>struct[entry_count]</td><td></td><td>Массив записей контейнера</td></tr></tbody></table>

#### Массив записей контейнера (struct)

<table><thead><tr><th>Название</th><th>Тип</th><th width="83.40234375">Размер</th><th>Описание</th></tr></thead><tbody><tr><td>entry_name</td><td>string8</td><td>1+</td><td>Имя записи</td></tr><tr><td>data_offset</td><td>uint32</td><td>4</td><td>Смещение данных ресурса относительно конца таблицы MTBL</td></tr></tbody></table>

### Чанк `MESH`

Содержит данные в формате **.ply**.

<table><thead><tr><th width="100.9765625">Название</th><th width="88.88671875">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>FourCC</td><td>uint8[4]</td><td><code>MESH</code></td></tr><tr><td>ply_data</td><td>.ply</td><td>Данные меша в формате <strong>.ply</strong>.</td></tr></tbody></table>

### Чанк `EANM`

Содержит данные в формате **.anm**.

| Название  | Тип       | Описание                            |
| --------- | --------- | ----------------------------------- |
| FourCC    | uint8\[4] | `EANM`                              |
| anm\_data | .anm      | Данные анимации в формате **.anm**. |

### Чанк `EVLM`

Содержит данные в формате **.vol**.

<table><thead><tr><th width="103.28515625">Название</th><th width="98.4765625">Тип</th><th>Описание</th></tr></thead><tbody><tr><td>FourCC</td><td>uint8[4]</td><td><code>EVLM</code></td></tr><tr><td>vol_data</td><td>.vol</td><td>Данные волюма в формате <strong>.vol</strong>.</td></tr></tbody></table>

## Связанные бинарные форматы

<table data-view="cards"><thead><tr><th></th><th data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td>Меш модели</td><td><a href="/gem-rts-v1-ru/bazovaya-informaciya-o-resursakh-v-gem-rts/binarnye-resursy-v-gem-rts/format-mesha-.ply.md">Формат меша (.ply)</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FrCk1dAvSKKe04Fp9WkP4%2Fsplash_editor_3.jpg?alt=media&amp;token=a89d5e03-56d3-401d-b04b-8da366458bd9">cover picture default</a></td></tr><tr><td>Анимации модели</td><td><a href="/gem-rts-v1-ru/bazovaya-informaciya-o-resursakh-v-gem-rts/binarnye-resursy-v-gem-rts/format-animacii-.anm.md">Формат анимации (.anm)</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FrCk1dAvSKKe04Fp9WkP4%2Fsplash_editor_3.jpg?alt=media&amp;token=a89d5e03-56d3-401d-b04b-8da366458bd9">cover picture default</a></td></tr><tr><td>Волюмы модели</td><td><a href="/gem-rts-v1-ru/bazovaya-informaciya-o-resursakh-v-gem-rts/binarnye-resursy-v-gem-rts/format-volyumov-.vol.md">Формат волюмов (.vol)</a></td><td><a href="https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FrCk1dAvSKKe04Fp9WkP4%2Fsplash_editor_3.jpg?alt=media&amp;token=a89d5e03-56d3-401d-b04b-8da366458bd9">cover picture default</a></td></tr></tbody></table>

[Вся информация о бинарных файлах](/gem-rts-v1-ru/bazovaya-informaciya-o-resursakh-v-gem-rts/binarnye-resursy-v-gem-rts.md)
