> 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/modeli/nastroika-modeli-doma/opisanie-ierarkhii-struktury-modeli-doma.md).

# Описание иерархии структуры модели дома

Пайплайн по настройке домов

## Основные элементы и кости <a href="#kp78wvwgzfwt" id="kp78wvwgzfwt"></a>

### Basis

Модель дома перед экспортом в игру необходимо настроить как структурный объект.\
Главная структурная кость называется basis. В его свойствах указывается тип сущности, путь экспорта и свойство Структуры.

![](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FUQMk9FY1NChQD85VktCX%2F0.png?alt=media)

### Piece и piece\_point

Каждый кусок дома piece - это отдельная модель со своими настройками, которая линкуется к basis через вспомогательную кость. Для удобства ее следует называть одноименно кости-piece с добавлением в имя приписки \_point.

![](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FgujPmL98oiG2oZOXaswt%2F1.png?alt=media)

В свойствах кости типа \_point ничего не указывается.

В свойствах кости типа piece указывается параметр poly (полигональный объект), тип сущности и путь экспорта.

![Пример свойств кости-piece](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FVQ1nyo98Xsm606B4suI1%2F2.png?alt=media)

{% hint style="info" %}
**Важно!**\
Каждый кусок дома экспортится в отдельную папку.\
Папки всех кусков дома находятся в папке-родителе объекта.
{% endhint %}

Непосредственно в кость basis линкуются также:

### **bottom\_floor\_vol**

со свойствами:

* Volume
* clear
* Touch=1

### **obstacle**

со свойствами:

* Obstacle
* Rotate

### **emit**

Кости посадки без свойств

### лэндовые объекты

Например пол - land - со свойствами:

* Poly
* Land
* Ground

## Вспомогательные кости для настройки <a href="#id-18cifqhajus2" id="id-18cifqhajus2"></a>

Каждый отдельный кусок может иметь набор функционала, который реализуется с помощью вспомогательных костей:

### **fort\_window**

Кость для возведения укреплений на окна.

Подгоняется под геометрию окна, пивотом по оси Х в направлении дома.\
В свойствах ничего не указывается.

Если в куске несколько окон, то нейминг укреплений должен быть по принципу: fort\_window, fort\_window01, fort\_window02 и т.д.\
В каждом отдельном куске нейминг сбрасывается и начинается сначала.

### **fort\_wall**

Кость для возведения укреплений на стены.

В дефе можно указать, какую конкретно энтитю использовать как укрепление, обычно это модели мешков.

Подгоняется под геометрию здания, выбирается необходимая ориентация.\
В свойствах ничего не указывается.

Если в куске несколько укреплений, то нейминг укреплений должен быть по принципу: fort\_wall, fort\_wall01, fort\_wall02 и т.д.\
В каждом отдельном куске нейминг сбрасывается и начинается сначала.

### **attach**

Кость для посадки юнита в дом.

В дефе описывается роль юнита, это может быть активный стрелок в оконных рамах или же вспомогательный.\
Юниты-стрелки имеют ориентацию по оси Х в направлении стрельбы, “запасные” юниты - по оси Х в направлении стены.

Подгоняется под геометрию здания, первоочередно занимаются места у имеющихся окон для ведения стрельбы.

Нейминг по принципу: attach1, attach2, attach3 и т.д.\
В каждом отдельном куске нейминг НЕ сбрасывается и продолжается по счету.

### **fix**

Кость зависимости разрушения кусков.

Принцип этих костей такой, что при уничтожении кусков в нижней части строения или несущих конструкций, верхние или боковые должны также обрушиваться, как домино. В иерархии эти кости должны быть в куске, за который они отвечают, но в пространстве - находиться в волюме соседнего куска. На скрине ниже желтые суппорты и есть fix-кости. Данный кусок, по сути, держится за эти точки, которые физически находятся в других кусках. Если падает соседний кусок, в волюме которого находится чужой fix, то этот fix тянет за собой и свой кусок. Зависимость кусков дома друг от друга нужно определять по конкретному, уже порезанному, строению, здесь все случаи уникальны.\
В свойствах ничего не указывается, зависимость кусков описывается в дефе.

Нейминг по принципу: fix001, fix002, fix003 и т.п.\
В каждом отдельном куске нейминг НЕ сбрасывается и продолжается по счету.

![Пример расположения суппорт-костей типа fix](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2F9YNdAHeZgOilWdQ0vX2C%2F3.png?alt=media)

### **volume**

Кости для определения попаданий.

Стандартная кость, со свойством volume, крепится непосредственно к куску. Описывается геометрия объекта, можно примитивами, можно полигидронами. Пробелов между волюмами быть не должно (если только это не обусловлено особенностью конструкции, напр. арки и т.п.), пересечение допускается. Волюмы должны описывать все элементы объекта.

![Пример volume](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2FHIINb89spus3INofpiSZ%2F4.png?alt=media)

### **emit**

Механика посадки в дома использует кости “emit” как опорные точки для старта перехода сквозь обстакл внутрь здания.\
Важно учесть направление кости (в сторону выхода). И размещение относительно входа. Глубину посадки внутрь входа учитывать не нужно. Движок сам сместит эмит на нужное расстояние в сторону выхода. На основе таких костей движок генерирует дополнительные 3 кости для посадки в дома. Которые и будут использоваться игровыми механиками.

![](https://2052154247-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fx2fkAZ6oKGGdByFhKPpa%2Fuploads%2Fl8e6DY83bTVsLAcMaBQ6%2F5.png?alt=media)

### Волюмы для прицеливания и атаки

Для атаки юнитов в дома используются вспомогательные волюмы, а сами юниты не атакуются напрямую. Поэтому необходимо добавить и настроить волюмы.

#### Window

Для целых кусков атака обычно происходит в окна. Для этого используются волюмы window

<figure><img src="https://lh7-us.googleusercontent.com/8sZ5RUYf24LrAy-1gfunUQtpyKoaKoC_GMWwocxzfYL9z0ADXlqstpvZhaWDiuX__UwnablxWiXvSOGWpYkI3bLJ4ofARWNz6s3CX1I3kMREhSnf9cvhh-QCy7NE-SkJMmuSGWWkMr29Geh2oMzFKFs" alt=""><figcaption><p>Пример волюма window</p></figcaption></figure>

```
{volume "window1"
    {thickness 0.2}
    {able {visible 0}{window}{Obstacle 0}}
}
```

#### target- vol

Для атаки в разрушенные куски необходимо добавить target-волюм

<figure><img src="https://lh7-us.googleusercontent.com/6GIRNORJo99mK9weYE171ndjYU06Sev1Yl6y-SJkrFlVL22RaSPTCL3nbcrR-URyHsQo-CERqvZp9yaisAO9NSxKBnZq04VVQX_94SbYhgqUE_yzA0vs6fzgCxSlEWfMHdD3R7CAlok3CnJiKWdB_8M" alt=""><figcaption><p>Пример расположения target-волюма</p></figcaption></figure>

По высоте центр этого волюма приходится примерно на уровне плеч сидящего юнита\
По глубине внутрь дома - центр волюма приходится на центр стены.\
Габариты чуть больше размера корпуса юнита.\
Сбоку волюм немного выпирает, чтобы был доступен для прицеливания и атаки под углом к дому. Пример даже на скриншоте\\

<figure><img src="https://lh7-us.googleusercontent.com/IE3d7K1yv6Bw9VcNWagIKkIXbs6AAf6ER2M0H4TJzG9qZ1rgJGfwDlBOpEw459WymxYwLrf92t2eo6Tpuwc28qa5i0U8CDpDJ1-RVuKs-drWFtGWXKti7VxdO4wWtzj7u2qsmUvn_87mzHuVsUI6_Zs" alt=""><figcaption></figcaption></figure>

```
{volume "target_vol_02"
    {Tags "target"}
    {able clear {bullet}}
}
```

где\
Tags - target включает прицеливание в такие волюмы.\
Able bullet - включает атаку и урон в такие волюмы.

\*Для отображения волюмов в движке r\_meshGroupStructure 0\
v\_volume\* команды для отображения, фильтрации волюмов.

Для строений типа бункера, где окон нет как таковых, на целые модели тоже нужно добавлять и описывать волюмы target, по принципу х-моделей домов (где есть окна).
