> For the complete documentation index, see [llms.txt](https://meta-14.gitbook.io/meta-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://meta-14.gitbook.io/meta-docs/osnovnoi-gameplay/raschet-povedeniya-mashin-na-trasse.md).

# Расчет поведения машин на трассе

#### Длина сегмента в участках

Автомобиль проедет 1 участок за 2 секунды или 0,5 участка в секунду. Тогда длина сегмента для эталонного автомобиля будет равна 0,5 x 10 = 5 участков.

#### Преобразование харакетиристик автомобиля в скорость в зависимости от участков

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

Для начала расчитываем эффект от каждой характеристики Effect(Stat):

Effect(Stat) = S\_current\_value(Skill) / S\_cap(Rank)&#x20;

S\_current\_value(Skill) = S\_current\_values\_raw (Skill) x (1 + D\_boost(Skill))&#x20;

| Параметр                       | Значение                                                                                                                                             | Описание                                                                                                                                                                |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| S\_current\_value(Skill)       | Калькулируется по формуле                                                                                                                            | Текущее значение характеристики с учетом уровня, установленных деталей, класса автомобиля и усиления водителя                                                           |
| S\_current\_values\_raw(Skill) | [Берем из даты машинки](/meta-docs/meta-racing-whitepaper/detali-parts/primer-generacii-mashiny-s-detalyami.md#raschet-finalnykh-parametrov-navykov) | Значение характеристики с учетом значения характеристики автомобиля по уровню и бонуса от надетых деталей. (По сути, финальная характеристика машины без учета пилотов) |
| D\_boost(Skill)                | [Берем из таблицы ](/meta-docs/meta-racing-whitepaper/piloty-drivers/navyki-pilotov-driver-skills.md)                                                | % усиления водителя для конкретного навыка                                                                                                                              |
| S\_cap(Rank)                   | [Берем из таблицы](/meta-docs/meta-racing-whitepaper/mashiny-cars/redkost-rarity.md#znacheniya-novykov-mashiny)                                      | Значение предельного уровня характеристики (Cap) с установленными легендарными деталями с учетом ранга (S, A, B, C)                                                     |
| Effect(Stat)                   | Калькулируется по формуле                                                                                                                            | В диапазоне 0 – 1                                                                                                                                                       |

Далее для каждого участка рассчитывается B\_score — показатель, отражающий эффективность автомобиля на данном участке трассы, который всегда находится в диапазоне от 0 до 1. Формула представляет собой взвешенную комбинацию двух характеристик автомобиля:

| **Участок**          | **Block performance score (B\_score)**                |
| -------------------- | ----------------------------------------------------- |
| Поворот асфальт      | 0.7 x Effect(Handling) + 0.3 x Effect(Acceleration)   |
| Поворот грунт        | 0.5 x Effect(Handling) + 0.5 x Effect(Durability)     |
| Прямая асфальт       | 0.4 x Effect(Acceleration) + 0.6 x Effect(Power)      |
| Прямая грунт         | 0.3 x Effect(Acceleration) + 0.7 x Effect(Durability) |
| Подъем/спуск асфальт | 0.5 x Effect(Acceleration) + 0.5 x Effect(Power)      |
| Подъем/спуск грунт   | 0.4 x Effect(Power) + 0.6 x Effect(Durability)        |

#### Система тиров(уровней) для подбора игроков

Машины/соперники подбираются с помощью системы уровней, связанной с количеством слотов для деталей.

Каждый тир имеет свой собственный диапазон мощности, поэтому нормализация B\_score и расчет скорости выполняются внутри уровня, а не глобально.

| **Тир** | **Уровни машин** | **Доступные слоты деталей** |
| ------- | ---------------- | --------------------------- |
| T1      | L1–4             | 4                           |
| T2      | L5–9             | 5                           |
| T3      | L10–14           | 6                           |
| T4      | L15–19           | 7                           |
| T5      | L20–24           | 8                           |
| T6      | L25–29           | 9                           |
| T7      | L30–50           | 10                          |

#### Финальное поведение с учетом уровня

Игроки будут соревноваться в пределах своего тира, поэтому мы вводим окончательную оценку (коэф перфоманса машинка к участку) / (F\_score), чтобы сбалансировать автомобили внутри тиров.<br>

F\_score = (B\_score − B\_min(Tier)) / (B\_max(Tier) − B\_min(Tier))<br>

Вычитая Score\_min\_tier, можно правильно нормализовать значения, делая F\_score для машины с S\_min(Tier) = 0.

| Параметр     | Значение                                                                                                                   | Описание                                                                                                                                                             |
| ------------ | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| B\_min(Tier) | [Табличное значение](https://docs.google.com/spreadsheets/d/1ZCno5WDEGYvM4_INj79kT9_hI16Lsasw7iSZleXGiRY/edit?usp=sharing) | B\_score самого слабого автомобиля в тире (минимальный уровень автомобиля + минимальные ранги + минимальные значения деталей + минимальная конфигурация слотов)      |
| B\_max(Tier) | [Табличное значение](https://docs.google.com/spreadsheets/d/1ZCno5WDEGYvM4_INj79kT9_hI16Lsasw7iSZleXGiRY/edit?usp=sharing) | B\_score самого сильного автомобиля в тире (максимальный уровень автомобиля + максимальные ранги + максимальные значения деталей + максимальная конфигурация слотов) |
| F\_score     |                                                                                                                            | Насколько хорошо автомобиль подходит для этого участка 0 – 1.                                                                                                        |

#### Рассчитанные B\_min и B\_max

Ссылка на таблицу: <https://docs.google.com/spreadsheets/d/1ZCno5WDEGYvM4_INj79kT9_hI16Lsasw7iSZleXGiRY/edit?usp=sharing>

#### Сопоставление скорости с длиной сегмента

Диапазон скоростей зависит от тира, чтобы автомобили проходили сегмент за определенное время без увеличения длины трассы в сегментах и участках. Время прохождения сегмента было определено в разумных пределах, чтобы время гонки оставалось в установленных границах.

V\_base\_final = V\_slow(Tier) + F\_score x (V\_fast(Tier) - V\_slow(Tier))<br>

Скорость — это не исходное значение, а скорее проекция этих значений на диапазон скоростей тира.

| Параметр       | Значение           | Описание                                                                                                                                                                                                                   |
| -------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| T\_slow(Tier)  | табличное значение | Возможное время сегмента для слабейшего автомобиля в тире                                                                                                                                                                  |
| T\_fast(Tier)  | табличное значение | Возможное время сегмента для сильнейшего автомобиля в тире                                                                                                                                                                 |
| L\_segment     | 5 участков         | Длина сегмента                                                                                                                                                                                                             |
| V\_slow(Tier)  | табличное значение | Возможная скорость для слабейшего автомобиля в тире. Это не минимальная скорость для слабого автомобиля, поскольку механика Banding может сделать скорость слабого автомобиля больше, чем V\_slow(Tier).                   |
| V\_fast(Tier)  | табличное значение | Возможная скорость для сильнейшего автомобиля в данном тире. Это не ограничение скорости, а базовый предел скорости без учета влияния карт. Это означает, что скорость автомобиля может превышать V\_fast(Tier).           |
| V\_base\_final | Калькулируем       | <p>Конечная скорость на участке. Таким образом, F\_score = 0 → V\_final = V\_min\_tier<br>- F\_score = 1 → V\_final= V\_max\_tier<br>- F\_score = 0,35 → V\_final = V\_min\_tier + 0,35\*(V\_max\_tier − V\_min\_tier)</p> |

Посчитанные константы для текущей конфигурации трасс:

| **Tier** | **T\_slow** | **T\_fast** | **V\_slow** | **V\_fast** |
| -------- | ----------- | ----------- | ----------- | ----------- |
| T1       | 19.5        | 11.5        | 0.26        | 0.43        |
| T2       | 19          | 11          | 0.26        | 0.45        |
| T3       | 18.5        | 10.5        | 0.27        | 0.48        |
| T4       | 18          | 10          | 0.28        | 0.50        |
| T5       | 17.5        | 9.5         | 0.29        | 0.53        |
| T6       | 17          | 9           | 0.29        | 0.56        |
| T7       | 16.5        | 8.5         | 0.30        | 0.59        |

#### Поправка скорости для внешних и внутренних полос поворотов (ПЕРЕД ТЕМ КАК ДЕЛАТЬ - ПОГОВОРИТЬ С ЛЕШЕЙ НУЖНО ЛИ ЕМУ ЭТО В ГОНКЕ ИЛИ НЕТ)

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

V\_base\_final\_turning = L(current\_player\_lane) / (L(middle\_lane) / V\_final)

L = (Pi x R)/2

| Параметр                | Значение       | Описани                                             |
| ----------------------- | -------------- | --------------------------------------------------- |
| L(lane)                 | задано заранее | Длина дуги линии, заданная по умолчанию для участка |
| V\_base\_final\_turning | Калькулируется | Конечная скорость автомобиля на повороте            |

### Пример калькуляции скорости машины

Машина Muscle 1 уровня c характеристиками:

Acceleration 20 (Ранг S), Handling 25 (Ранг B), Durability 20 (Ранг B), Power 25 (Ранг A)

Пилот: 1 уровень, буст Acceleration +4%

Участок: поворот грунтовый

Положение машины: первая дорожка (первая справа)&#x20;

#### 1) Рассчитываем эффект характеристик Effect(Stat):

Effect(Acceleration) = (Acceleration) 20 x (1+0,04 (driver boost)) / S\_cap(Ранг S) 784 = 20 x 1,04 / 784 = 0,0265

Effect(Handling) = 25 x (1+0) / 627 = 0,0399

Effect(Durability) = 20 x (1+0) / 627 = 0,0319

Effect(Power) = 25 x (1+0) / 706 = 0,0354

#### 2) Рассчитываем B\_score для участка грунтовый поворот:

B\_score = 0.5 x Effect(Handling) + 0.5 x Effect(Durability) = 0,5 x 0,0399 + 0.5 x 0,0319 = 0,0359

#### 3) Рассчитываем F\_score:

Тут надо посчитать B\_score в табличку для каждого тира для самых слабых возможных автомобилей в тире и для самых сильных возможных

#### 4) Рассчитываем финальную скорость машинки V\_final

#### 5) Умножаем финальную скорость на коэффициент кривизны для первой дорожки
