# Основы Программы

В своей основе платформа Machinations построена на:

{% hint style="info" %}
6 базовых механизмов:

* **Pool** (хранилище) собирает ресурсы
* **Source** (источник) создает ресурсы
* **Drain** (сток) уничтожает ресурсы
* **Converter** (преобразователь) преобразует различные типы ресурсов в другие
* **Trader** (обменник) обменивается ресурсы
* **Gate** (ворота) перераспределяет ресурсы
  {% endhint %}

#### **+**

{% hint style="info" %}
2 типа связи:

1. **Resource Connections** определить, как ресурсы проходят через диаграмму
2. **State Connections изменяет состояние** элементов диаграммы
   {% endhint %}

{% hint style="success" %}

### :joystick: **Публичные диаграммы**

{% endhint %}

##

## ◉ Ресурсы

Все игровые системы состоят из элементов в постоянном потоке ресурсов.&#x20;

Ресурсы могут быть чем угодно: деньгами и имуществом в Монополии, боеприпасами и здоровьем в шутерах, или опыт и оборудованием в RPG.

{% hint style="success" %}
Ресурсы вместе с сущностями или действиями, которые вызывают их производство, потребление и обмен, составляют внутреннюю экономику игр.
{% endhint %}

{% hint style="info" %}
Любой поток ресурсов может быть представлен на диаграмме Machinations.

Сущности представлены механизмами, и способ, которым ресурсы производятся, потребляются и обмениваются, определяется соединениями.
{% endhint %}

## ⦽ Механизмы

:wrench: Ниже приведен пример работы источников, хранилищ и стоков. Обратите внимание, что механизмы связаны между собой посредством соединений (стрелки) с меткой, представляющей правило, по которому ресурсы будут передаваться между механизмами.&#x20;

![Источники, хранилища и потребители](https://4292057417-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2EnOzul3IzT7VLF5dC%2F-M2yl82u1xIU6mmqTRHB%2F-M2ym9xmYJsxTCralmet%2Fbasic-nodes.gif?alt=media\&token=46e51e7b-7756-4ddd-992d-1ad7a70d7f91)

1. По клику источник создает 3 ресурса, которые будут переданы в хранилищ
2. Сток потребляет 3 ресурса из хранилища
3. Случайный источник генерирует от 1 до 6 ресурсов при нажатии. Обозначение D6 Label обозначает «Die 6». Чтобы установить поток для каждого шага, Machinations моделирует бросок кубика с 6 гранями, и источник производит полученное количество ресурсов.
4. Сток забирает все ресурсы из хранилища

Больше об этом:

{% content-ref url="../framework/pools" %}
[pools](https://evlko.gitbook.io/machinations/framework/pools)
{% endcontent-ref %}

{% content-ref url="../framework/sources" %}
[sources](https://evlko.gitbook.io/machinations/framework/sources)
{% endcontent-ref %}

{% content-ref url="../framework/drains" %}
[drains](https://evlko.gitbook.io/machinations/framework/drains)
{% endcontent-ref %}

:wrench: Вот визуализация того, как работают Конвертеры и Обменники.

![](https://4292057417-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2EnOzul3IzT7VLF5dC%2F-M3B6OM1vZ7G1qosaBZr%2F-M3B7YKUGQyn4PHiB3bZ%2Fconverter%26trader.gif?alt=media\&token=2385e8cf-7b0d-4c08-afa9-10383c9b173f)

1. Преобразователь преобразует 3 ресурса из начального источника в 1 другой ресурс
2. Обменник обменивает 2 монеты (coins) на 3 дерева (wood) и перемещает эти ресурсы в соответствующие хранилища

:book: Больше об этом:

{% content-ref url="../advanced/converters-and-traders" %}
[converters-and-traders](https://evlko.gitbook.io/machinations/advanced/converters-and-traders)
{% endcontent-ref %}

:wrench: Ворота являются более сложными узлами, но основное состоит в том, что они перераспределяют ресурсы **детерминировано** или **случайно**.

![](https://4292057417-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2EnOzul3IzT7VLF5dC%2F-M3B6OM1vZ7G1qosaBZr%2F-M3B9qp8Te8lJIOzc045%2Fgates.gif?alt=media\&token=47264448-6dd6-4fcd-9863-534dc3a6e38d)

1. Детерминированные ворота перераспределяют 9 ресурсов из начального хранилища и переносят их в каждое из целевых хранилищ в соответствии с метками, которые в этом случае представляют **вес** результата
2. Вероятностные Ворота перераспределяют 10 ресурсов из начального хранилища и переносят их в каждое из целевых хранилищ в соответствии с вероятностью, указанной на их метках.

:wrench: Узнать больше:

{% content-ref url="../advanced/gates" %}
[gates](https://evlko.gitbook.io/machinations/advanced/gates)
{% endcontent-ref %}

## ⇶ Соединения

Все вышеприведенные примеры включают в себя **соединения с ресурсами**. Непрерывные стрелки, определяющие, как ресурсы проходят через диаграмму. Подробнее об этом:

{% content-ref url="../connections/resource-connections" %}
[resource-connections](https://evlko.gitbook.io/machinations/connections/resource-connections)
{% endcontent-ref %}

:wrench: **Соединения состояний**, с другой стороны, изменяют состояние механизмов. Вот как:

![](https://4292057417-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M2EnOzul3IzT7VLF5dC%2F-M3B6OM1vZ7G1qosaBZr%2F-M3BB8_Vc6DsYMBINjdy%2Fbasicloop-state-connection.gif?alt=media\&token=50ab99b2-0ff0-4f4a-b911-e6007e199837)

В приведенном выше примере соединение состояний изменяет метку на соединении c ресурсами и изменяет поток функции ресурсов на количество ресурсов в хранилище. Таким образом, он добавляет к начальному параметру Label (1) количество ресурсов, находящиеся в хранилище после каждого временного шага.&#x20;

Есть кое-что большее в State Connections, но это уже сложнее. Они могут изменять состояние механизмов и действовать как триггеры или активаторы.

:book: Больше об этом:

{% content-ref url="../connections/state-connections" %}
[state-connections](https://evlko.gitbook.io/machinations/connections/state-connections)
{% endcontent-ref %}
