Несколько процессоров
Один процессор — это одна очередь строк. Два идут параллельно — и это единственный способ ускориться, не меняя блок
Два процессора и ячейка между ними. Верхний снимает показания со склада и кладёт их в память, нижний читает оттуда и печатает сумму. Каждый занят своим делом и идёт со своей скоростью.
Зачем разделять
Заголовок раздела «Зачем разделять»Ради скорости. Программа на сто строк в микропроцессоре проходит итерацию раз
в пятьдесят тиков. Разрежьте её пополам, поставьте два процессора — и каждая половина пойдёт вдвое чаще.
Это единственный способ ускорить работу, не меняя блок: setrate
скорость только снижает.
Ради порядка. Отдельный процессор на турели, отдельный на завод, отдельный на табло: каждый маленький, каждый понятен, поломка одного не роняет остальное.
Ради связей. У процессора ограничена дальность связи: микропроцессор дотягивается на десять клеток. База шире — значит, процессоров будет несколько просто по географии.
Чем они обмениваются
Заголовок раздела «Чем они обмениваются»| Способ | Годится для |
|---|---|
| ячейка памяти | чисел и объектов, много и надолго |
| чтение переменных соседа | одного-двух значений, без лишних блоков |
| глобальный флаг | «да/нет» между мировыми процессорами |
| флаг юнита | пометки, которая должна ехать с юнитом |
| само здание | когда сосед и так видит тот же склад |
Ячейка — самый обычный вариант: она видна обоим, переживает правку программы и держит шестьдесят четыре значения.
Кто кого ждёт
Заголовок раздела «Кто кого ждёт»Никто. Процессоры не синхронизированы: каждый идёт своим чередом, когда ему выпадает тик. Из этого следуют две вещи.
Сколько их можно
Заголовок раздела «Сколько их можно»Много. Игра спокойно держит сотни процессоров, и упирается обычно не она, а человек: десять процессоров, которые общаются через одну ячейку, отлаживать тяжело.
Разумная середина — разделять по задачам, а не по строкам: один процессор отвечает за одну вещь целиком и не лезет в чужую.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.