Физика конвейеров
Конвейерные системы в Factorio, пожалуй, самая проработанная механика. Предметы в сундуках и других контейнерах хранятся просто как их общая сумма, а на конвейере они растягиваются и перемещаются совместно, однако, когда их выкладывает или забирает манипулятор, они обрабатываются по отдельности. Все это приводит к запутанному поведению, что проявляется, например, в пропускной способности манипуляторов.
Характеристики конвейеров
- Плотность. Характеризует то, какое количество предметов помещается на единицу длины конвейера; измеряется в предметах на тайл (или клетку) одной полосы конвейера. В независимости от типа предмета и конвейера. Плотность прямого конвейера равна 4.
- Скорость. На практике, измеряется в тайлах в секунду. Имейте ввиду, что в игре измерения производятся в сегментах (1/256 тайла) на тик (1/60 секунды). Подробнее ниже. Скорость простого конвейера соответствует 1.875 тайла в игровую секунду. Быстрый конвейер вдвое быстрее, а экспресс-конвейер в три раза быстрее.
- Пропускная способность. Характеризует то, сколько предметов может быть перемещено из одного тайла в другой за секунду. Рассчитывается как плотность * скорость, например для простого конвейера пропускная способность будет равна: 4 * 1.875 = 7.5 предметов в секунду для одной полосы. Для двух полос, соответственно 15 предметов в секунду.
- Заполнение. Если на конвейере нет пустых мест между предметами, то такой конвейер называется полностью заполненным, в противном случае, конвейер заполнен частично и его пропускная способность полностью не реализована. Механизмы, которые перемещают предметы на конвейер — манипуляторы, разделители, другие конвейеры подведенные сбоку, буры и т.д. — раздвигают предметы, где есть небольшие зазоры, чтобы туда поместился предмет, что позволяет полностью заполнять конвейеры.
- Полосы. У конвейеров имеется две параллельные полосы, плотность и скорость которых, несмотря на повороты, постоянны и независимы друг от друга. Т.о., предметы внутренней полосы на повороте выйдут быстрее, чем предметы на дальней, т.к. скорости полос одинаковы, в то время как длина внутренней полосы меньше.
Скорости конвейеров
Учитывая приведенные выше значения, можно рассчитать скорость и пропускную способность для каждого вида конвейера.
Тип конвейера | Скорость | Пропускная способность | ||||
---|---|---|---|---|---|---|
Фактор | Тайл/с | Одна полоса, предмет/с | Одна полоса, предмет/мин | Две полоса, предмет/с | Две полоса, предмет/мин | |
Конвейер | 1 | 1.875 | 7.5 | 450 | 15 | 900 |
Быстрый конвейер | 2 | 3.75 | 15 | 900 | 30 | 1800 |
Экспресс-конвейер | 3 | 5.625 | 22.5 | 1350 | 45 | 2700 |
Предметы на конвейере
Ранее было рассказано, как размещаются предметы на конвейере в терминах плотности и заполнения. Однако, каждый предмет в момент времени находится только на одном тайле конвейерной линии.
Например, даже если на скриншоте покажется будто предмет остановился между тайлами, он все равно будет отнесен к одному из них.
- Если остановить тайл конвейера, то предметы, которые находятся на нем, тоже остановятся, в противном случае они продолжат движение — третьего состояния не дано.
- Если подключить к двум конвейерам логическую сеть и включить опцию считывания содержимого конвейера, можно увидеть, что предмет относится только к одному из конвейеров.
- Манипулятор может брать предметы только из того тайла, напротив которого он расположен, но не с границ тайлов.
В этом смысле, предметы удобно представлять точками, расположенными на некотором расстоянии друг от друга. Для расчета конвейерных линий и логических сетей, в которых применяются конвейеры, знать, где находится эта точка на предмете, не обязательно.
На изображении выше, конвейеры были запущены с разницей в 1 тик, а после одновременно остановлены. Т.о. первые к выходу предметы выступили на разную длину. Предметы с левой стороны выступили на следующий тайл почти на половину, что означает, что серединные точки находятся еще в предыдущем тайле.
Ниже схематично представлено перемещение предметов по двум тайлам быстрого конвейера с разрешением по времени в 1 тик. Знаком *
обозначен центр предмета (промежуток между тайлами показан только для лучшей визуализации процесса — в игре его нет).
Тик Тайл 1 Тайл 2 Считывание тайла 1 Считывание тайла 2 |------------------------------| |------------------------------| Импульс Удержание Импульс Удержание 0 <---*--> <---*--> <---*-- ><---*--> <---*--> 0 3 0 2 1 <---*--> <---*--> <---* --><---*--> <---*--> 0 3 0 2 2 <---*--> <---*--> <-- -*--><---*--> <---*-- 0 2 1 3 3 <---*--> <---*--> < ---*--><---*--> <---* 0 2 0 3 4 -> <---*--> <---*--> <---*--><---*--> <-- 0 2 0 2 5 *--> <---*--> <---*- -> <---*--><---*--> < 1 3 0 2 6 --*--> <---*--> <--- *--> <---*--><---*--> 0 2 1 3 7 <---*--> <---*--> <- --*--> <---*--><---*--> 0 2 0 3 8 <---*--> <---*--> <---*--> <---*--><---*--> 0 2 0 3
Сегменты и длина конвейера
Точные измерения показывают, что внешняя полоса на повороте точно в 1.15234375 или 295/256 раз длиннее прямого конвейера. Это означает, что каждый прямой конвейер состоит из 256 сегментов, где может быть предмет, хотя измерения с такой точностью могут быть получены только косвенным путем.
Ниже представлена таблица со скоростями и длинами в сегментах:
Что именно | Количество сегментов | |
---|---|---|
Скорость простого конвейера, в тик | 8 | |
Скорость быстрого конвейера, в тик | 16 | |
Скорость экспресс-конвейера, в тик | 24 | |
Размер предмета | 64 | |
Длина одного тайла полосы прямого конвейера, подземного конвейера, и разделителя | 256 | |
Длина внутренней полосы конвейера на повороте | 106 | |
Длина внешней полосы конвейера на повороте | 295 | |
Длина пролета (в случае боковой загрузки другим конвейером) от точки загрузки на конвейер по ближней к концу тайла полосе. | 68 | |
Длина пролета (в случае боковой загрузки другим конвейером) от точки загрузки на конвейер по дальней к концу тайла полосе. | 188 |
Например, учитывая цифры выше, можно вычислить скорость простого конвейера:
- 8 (сегментов в тик) / 256 (сегментов на прямом конвейере) * 60 (тик в секунду) = 1.875 тайлов в секунду.
Пропускная способность на полосу:
- 8 (сегментов в тик) / 64 (сегментов на предмет) * 60 (тик в секунду) = 7.5 предметов в секунду.
Смотрите также
- Конвейерные системы
- Январь 04 FFF #276: Интервал между предметами на конвейере & Рендер скриптов
- Февраль 03 FFF #176: Оптимизация конвейеров 0.15
- Точные измерение сегментов конвейера (применительно к 0.17)