Найти тему

Эффективность модулей продуктивности в Factorio 1.1.107

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

Когда нам нужно посчитать экономику по игре, нужно сперва определиться с валютой. В чем нам считать выгоду? И в предыдущей статье, как я понял, валютой были произведенные на предыдущих этапах детали. Но они очень разные, и нам надо придумать какие-то более общие критерии. В какой-то момент я понял, что детали вообще не имеют особого значения, так как все основные ресурсы в игре бесплатные. Большинство из них можно буквально добыть руками. Однако есть метрики, которые объединяют все ресурсы: Это

  • суммарное время производства единицы продукта
  • суммарная электроэнергия на производство единицы продукта
  • суммарное загрязнение при производстве единицы продукта

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

Все расчеты проводились на таком окружении:

  • Электрический бур
  • Бонус добычи руд и нефти - 40%
  • Электропечь
  • Сборочный автомат 3
  • Бонус скорости лаборатории +250%
  • Модуль продуктивности 3
  • Нормальная сложность игры
  • Все ресурсы производятся максимально энергоэффективным способом
  • Газ, мазут и дизель продвинутой переработкой нефти
  • Твердое топливо из дизеля
  • Уран-235 Коварексом
  • Уран-238 из руды
  • Нефть добывается самыми производительными скважинами по 100/с (они встречаются редко, но если считать на плохой скважине, то нефть будет потенциально дороже, а модуль от этого будет выглядеть выгоднее)
  • Сразу исключил предметы, которые содержат дерево и рыбу, хотя другие не промежуточные элементы не убирал из любопытства.
  • Пока не брал в расчет энергопотребление манипуляторов при производстве, но планирую потом посчитать и с этим учетом.

Немножко терминологии:

  • Итерация - процесс производства одной партии продукта.
  • Цикл - количество итераций, приводящих к получению бесплатной партии.
  • Деталь - производимый элемент (даже если жидкий, все равно для простоты называем деталью)

Напомню, как работает модуль продуктивности 3.

  • Производится на 10% больше деталей.
  • Энергопотребление +80%
  • Загрязнение +10%
  • Скорость -15%

На поверку все эти циферки оказываются не так просты, как кажется. Давайте переведем все эти цифры в реальный эффект на выбранную валюту.

Производительность в 10% означает, что после 10 итераций производства мы получаем одну бесплатную партию детали. Это и есть наш цикл.

Сколько мы при этом потратим времени. Если считать, что изначально время одной итерации = N, то за 10 итераций при скорости -15% мы потратим 10N \* (1- 0.15) = 11,76470588N. При этом мы произведем 11 партий. То есть получаем штраф в 0,7647 времени итерации. В пересчете на одну деталь ничего не меняется, так как мы получаем бесплатно партию, то есть, если производится 2 детали за раз, то и бесплатных мы тоже получим 2.

Теперь по энергии. Она измеряется в кВт, что означает кДж/с. То есть энергия зависит от времени. А время цикла у нас поменялось. То есть расчет будет немного сложнее, чем +80%. Затраченная энергия на цикл = время цикла \* 1.8 = 11,76N \*1.8 = 21,17647N вместо 11N на 11 партий без модуля. То есть штраф составит 10.1765N. По сути это количество норм затрат энергии на одну итерацию в кДж. Такой характеристики в игре нет, но она рассчитывается как "энергопотребление фабрики" \* "время производства" в секундах.

Ну и наконец по загрязнению. Тут тоже не все просто. Оно зависит от энергопотребления. Поэтому будет считаться как "энергопотребление за цикл" \* 1.1 = 21,18N \* 1.1 = 23,294N. Таким образом штраф по загрязнению = 12.294N - где N - стандартное загрязнение за 1 итерацию производства.

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

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

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

  • "время на производство одной детали" = "время итерации" / "коэффициент скорости фабрики" / (1 + "бонус производства") / "количество произведенных деталей".
  • "энергия на одну деталь" = "время одной детали" \* "энергопотребление фабрики".
  • "загрязнение на одну деталь" = "энергия на одну деталь" \* "загрязнение фабрики" / 60 (так как оно в минуту).

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

Наконец, считаем разницу метрик, как отношение 10 циклов с модулем к 11 циклам без модуля. Для удобства еще перевел все в исходные метрики модуля - скорость/энергопотребление/загрязнение.

Результат в доке по ссылке - https://docs.google.com/spreadsheets/d/1DYn55YnLDBy2meMMRRMFaMWaeIZibZW9_kyjCOtp6oQ/edit?usp=sharing

Заметим, что даже самый успешный рецепт дает прирост скорости всего в 10%. Тогда как модуль скорости даст нам все 50%. Более того модуль скорости не очень жестит с энергопотреблением и загрязнением. Там заявлено 70%, но из-за ускорения производства реальное увеличение энергопотребление на единицу производимого составит всего 13,33%, столько же и по загрязнению.

Так зачем же нам использовать модули производительности? Дело в том, что каким бы ни был наш завод по размеру, он все равно располагает КОНЕЧНЫМ количеством ресурсов, а значит и на выходе у нас будет некоторое количество производимых элементов. И вот чтобы это итоговое количество увеличить, нам надо везде, где это хотя бы чуть-чуть выгодно, получать бесплатные детали. С модулем скорости мы их получим быстрее, но меньше. Хотя не факт, что быстрее, потому что, нам возможно понадобится больше заводов для снабжения этого быстрого производства.

Я еще поигрался с некоторыми настройками и проверил, что будет, если после исследования на производительность буров, она станет = 50%. Это должно привести к снижению эффективности модуля производительности. Цифры поменялись, но несущественно, на сотые/десятые доли процента.

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц

Factorio
2170 интересуются