Раньше я считал, что компьютерная игра Factorio — это огромная трата ресурсов, сжигающая ежегодно миллиарды долларов ВВП. Мне казалось совершенно ненормальным, что Shopify компенсирует своим сотрудникам её приобретение. Я даже думал, что платить за игру в Factorio сотрудникам Shopify должен её конкурент — Amazon.

Но немного разобравшись в ней, я начинаю подозревать, что Factorio — редкий пример компьютерной игры, на самом деле увеличивающей ВВП. В Factorio игроки собирают ресурсы и изготавливают предметы, а затем автоматизируют этот процесс. Игрок может начать с того, что вручную добывает уголь и железо, плавит железо, а затем использует его, чтобы изготовить бур, присоединить к нему несколько конвейеров, чтобы тот автоматически отправлял железо в печь, затем присоединить ещё несколько конвейеров и отправлять по ним материалы на фабрику, массово изготавливающую конвейеры и буры, и так далее.

Это может показаться скучным, но сколько человеко-часов в год тратится на игры «три в ряд»? Некоторые игры называют медитативными, и к Factorio это относится в двух смыслах: во-первых, в ней присутствует аспект темы и вариации — каждый новый создаваемый продукт является неким сочетанием известных задач (например, новый предмет, который должен перемещаться по конвейерам) и новых трудностей (движение жидкостей по трубам и комбинирование их оттока с твёрдыми продуктами для создания новых предметов). Но также она медитативна в том смысле, что медитация — это способ культивации определённого образа мышления, а Factorio способна и на это. Можно медитировать, чтобы находиться в моменте; вы играете в Factorio, чтобы воспитать в себе привычку никогда не оставлять ручной процесс без автоматизации.

Со временем игровой процесс раскрывает вам метаигру: первые фабрики имеют плохую структуру, в них много избыточности, сложных и неуклюжих способов перемещения объектов и тупиков, дальнейшее масштабирование из которых невозможно. То есть основной цикл игры заключается в следующем:

  1. Выполняем последовательность проектировочных решений, чтобы получить некую внутреннюю логику, но совершить при этом накапливающиеся ошибки.

  2. В процессе масштабирования вы видите, как их последствия усугубляются и требуют всё более грязных решений.

  3. Вырезаем большие куски структуры и переформатируем их в более прямые и логичные линии.

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

Хаотичная «спагетти»-база

Упорядоченная, модульная, красивая база, которую довольно легко понять (если вы играете регулярно). Оба скриншота взяты с форумов Factorio. Я мог вы сделать собственные, но, вероятно, не смогу играть достаточно долго, чтобы получить красивую вторую картинку.

В программировании решение подобных задач называется «рефакторингом»: вы берёте большой запутанный кусок кода, эволюционировавший со временем, записываете, что он должен делать, и пишете то, что выполняет именно эти функции.

[Почему бы не спроектировать всё правильно с самого начала? По двум причинам, известным и программистам, и игрокам в Factorio. Во-первых, начиная работу, вы не всегда знаете, какой будет конечная цель, и лучше создать нечто постепенно развивающееся, чем тратить кучу времени на пустые рассуждения о конечном состоянии. Во-вторых, ресурсы, необходимые для создания идеально спроектированной базы, изначально недоступны, и могут быть получены неэффективным образом благодаря некому черновику базы. Говоря в терминологии Computer Science, расширение плохо сопровождаемую базы Factorio с ошибочной спецификацией является O(log(n)), а развитие базы с идеальной спецификацией — O(n), но в первом случае коэффициент значительно выше.]

В Factorio подобного много (вероятно, её стоит переименовать в «Refactorio»). По сути, игрок строит гигантскую сеть внутриигровых API («плагин сюда, чтобы получить сталь, плагин туда, чтобы получить электросхемы»), достигает стопроцентной надёжности этих API, а затем создаёт что-то поверх них и доводит уже это до идеальной надёжности, параллельно управляя дефицитными ресурсами и справляясь со случайными сбоями.

[Игроки должны строить фабрику и защищать её от инопланетян. Эта защита, как и другие части игры, начинается с самостоятельного бега и отстрела, но постепенно эволюционирует в полностью автоматизированные сети лазерных турелей и огнемётов, постоянно перезаправляемых и ремонтируемых при помощи небольших контуров в более масштабной цепочке поставок. Кусаки в некотором смысле излишни, потому что игрок или а) быстро достигает этапа, на котором он гораздо мощнее врагов и они становятся просто мелким чеклистом строительства, никогда не требующим быстрых действий руководства, или б) враги со временем становятся мощнее, чем игрок, что на самом деле может произойти, если этому игроку не удаётся достаточно автоматизироваться. Так как смысл игры заключается в продуманной автоматизации и масштабировании, игрок, имеющий проблемы с инопланетянами, в духовном смысле уже проиграл.]

Эта метаигра также имеет привкус управления памятью, как в прямом смысле (существуют конечные ресурсы, которые нужно распределять на разные задачи), так и в более метафорическом (одно из ограничений непродуманного масштабирования заключается в том, что игрок теряет контроль над тем, что он делает). Создание структуры, не ограниченной дефицитом ресурсов — это одна задача, а создание структуры, которая не приведёт к перепроизводству чего-то важного — другая, более сложная задача, однако она тоже вознаграждает игрока, потому что так отслеживать проблемы гораздо проще. Неэффективное масштабирование в Factorio может дойти до такой степени, что игроки в принципе могут продолжать развитие, но на практике им приходится отслеживать тщательно проработанный список задач; в этом смысле они проигрывают потому, что превратили игру в рутину.

Существует много игр, эволюционирующих в метаигру; шахматы обладают странной динамикой — игроки примерно час тратят на запоминание, потом тратят долгое время на разработку стратегий, а затем, на последующих этапах своей карьеры, вкладывают ещё больше усилий снова в запоминание; покер начинается с игры в вычисление вероятностей из ограниченной информации, а превращается в игру максимизации информационного разрыва с противником; видеоигры типа «игрок против игрока» со сложными билдами персонажей начинаются как игры о времени реакции, а заканчиваются как игры об выявлении наиболее важных характеристик и использовании всех возможностей для максимальной прокачки этих характеристик; Wordle начинается как простая, но зависящая от удачи проверка словарного запаса, а превращается в упражнение по теории информации. Некоторые игры и образовавшиеся вокруг них сообщества находят способы изящно направлять игроков от игры к метаигре, и обе они интересны на разных уровнях. (В блэкджек может быть очень интересно играть, даже если вы не считаете карты, и это субъективное решение в обоих направлениях: метаигра может ощущаться скучным гриндом, но игнорирование метаигры может быть скучным в ином смысле; оно означает, что игрок участвует в качестве NPC, занимающегося трудоёмкой работой.)

Эта игра в конечном итоге создаёт у игроков привычку смотреть на каждую ситуацию под следующим углом: каков наилучший способ автоматизации этой задачи, и какие зависимости других механизмов подвергнутся угрозе, если я её автоматизирую? На самом деле, это очень полезная привычка для разработчиков и многих людей, чья работа заключается в постепенной разработке ПО. Однажды сразу после игры в Factorio мне пришлось заняться электронными письмами, и я осознал, что мне срочно нужно написать несколько шаблонов писем. Нельзя допустить, чтобы эта система существовала в неавтоматизированном состоянии! Но если я собираюсь использовать множество шаблонов писем, то мне нужна целостная система управления ими, иначе в конечном итоге у меня появится пять разных итераций фразы «Да, давайте это обсудим, вот мой Calendly».

Это хорошая привычка. Если какое-то действие стоит сделать, то есть большая вероятность, что его стоит сделать и в масштабе в 1000 раз больше. И даже если большинство задач не масштабируется таким образом, масштабирование 1% может привести к десятикратному росту общей производительности. Мы можем совершенствовать систему путём непрерывного постепенного изменения, и в некоторых областях это единственный возможный способ улучшения; вы вряд ли сможете увеличить вес своей становой тяги в 50 раз. Но области, для которых это не так, занимают всё большую долю от общей экономической деятельности по очень тавтологической причине: их доля растёт, потому что именно они могут масштабироваться.

Очень ценно культивировать эту привычку поиска возможностей масштабирования, даже если результаты оказываются неравномерными; люди, спорящие обо всём, в конечном итоге получают более удобные места в самолёте, но если они ещё и умеют ежегодно договариваться о повышении зарплаты на 2% больше остальных, то их заработок за всю жизнь будет на 55% выше, а если они в нужное время поборются за бОльшую долю активов компании, то результаты могут быть очень приятными. Постоянная оптимизация — это отличная привычка, очень хорошо прививаемая игровым циклом Factorio; точно так же, как фанаты Tetris говорили раньше о том, что закрывают глаза и видят падающие фигуры, фанаты Factorio отводят взгляд от экрана и видят процессы, которые могут никогда больше не потребовать ручного вмешательства. А ещё игра мотивирует людей думать о масштабе: зачем автоматизировать только одну часть работы, если ты можешь автоматизировать её полностью?

Игра может прививать и плохие привычки:

  1. Допускать то, что всё, что стоит делать, стоит и автоматизировать (и да, существует комикс XKCD по теме).

  2. Схожая привычка допускать то, что всё может масштабироваться произвольно.

Оказывается, у того, что некоторые задачи можно автоматизировать, есть и обратная сторона: это значит, что со временем всё большая доля общемировых проблем будет проистекать из задач, которые нельзя автоматизировать. Удачи вам с комбинированием вызовов API для решения проблемы ревности или высокомерия.

У образа мышления Factorio есть ограничения, вызванные несовместимостью стремления к полной автоматизации с человеческой природой и типичным поведением внутри организаций. Поэтому решение Shopify о возмещении стоимости игры на самом деле оказывается очень мудрым: it's quirky perk, partly a way for leisure time to build better habits—and partly a way to give more people a shared vocabulary for which business problems can be solved, and how to solve them.

Комментарии (45)


  1. OKYHb37
    28.07.2022 16:55
    +11

    Очень правильное описание подхода к разработке и самой Factorio. Сам играю в нее уже не первый год и удивляюсь, как она еще не надоела. Наличие дополнительных сложностей в виде модов, которые увеличивают количество объектов и сложность технологий только подталкивают играть с ними, так как это уже новый вызов.

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

    Классная статья, автор молодец.

    Если не читали тут статьи про Factorio, то очень советую вот эту https://habr.com/ru/post/666320/ (не реклама), целое исследование)


  1. Tarakanator
    28.07.2022 17:03
    +1

    Есть ещё чем-то схожая oxygen not included.
    Начинается как выживание для группы людей, но потом всё больше начинает влиять физика(первое с чем вы столкнётесь при увеличении базы это то, что углекислый газ скапливается внизу), что потом может приводить к настройке разных физических процессов. И в плане логики, мне кажется будет посложнее factorio.


    1. Vizmaros
      29.07.2022 09:45

      Не сложнее, как минимум из-за размеров самих схем. Но в отличие от факторио, в ONI значительно больше ситуаций, когда автоматизировать приходится системы с жидкостями и газами, а значит в одной условной ячейки трубы может быть неодинаковое количество ресурса. Ну и чаще случаются пересечения, поскольку пролом стены может смешивать газы. А в Factorio предметы с конвеера на другой попадают только через манипулятор или соединение конвеера. Не говоря уже о трубах, соединить которые невозможно технически, если в них находятся разные ресурсы


      1. Tarakanator
        29.07.2022 09:58

        я бросил factorio как раз из-за размеров схем. Но это не сложность, это рутина.
        ONI сложнее тем, что приходится учитывать больше параметров.
        Вот пример:
        работают 3/5 паровых двигателей
        пар подогревается 6 водными охладителями(при чём работающими прерывисто)
        Температура пара 230 градусов, поэтому 1/5 входов пара в паровые машины закрыта.

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

        В Factorio ты можешь сделать избыточное производство, в результате заводы всего лишь будут работать неоптимально.
        В ONI избыточная теплогенерация может привести к расплавлению ТЭС.


        1. mayorovp
          29.07.2022 10:29
          +1

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


          1. Tarakanator
            29.07.2022 10:40

            1)А кто сказал что перегреется именно нагреватель?
            2)А кто сказал, что перегреется нагреватель в результате работы этого нагревателя, а не стороннего источника тепла?
            3)ок, нагреватель аварийно выключился, в подводящей трубе вскипела вода. Всё равно авария.


            1. mayorovp
              29.07.2022 10:44

              А кто сказал что устройство должно выключаться только при своём перегреве? И почему это выключение обязано быть аварийным?


              1. Tarakanator
                29.07.2022 10:58

                Если устройство должно выключится не при своём перегреве, это уже не задача устройства, а автоматики. Я привёл пример выше, что отключение самого нагревателя не спасает от закипания воды.
                В моём понимании, если устройство должно выполнять свою функцию(охлаждение воды), но в процессе выключается чтобы не нанести вреда, то отключение аварийное.
                Вот если бы оно отключилось т.к. всю воду охладило, то это небыло бы аварийным отключением


                1. mayorovp
                  29.07.2022 11:04

                  Ну да, задача автоматики. Где в игре автоматика-то? Почему, судя по описанию, надо вручную всем управлять?


                  1. Tarakanator
                    29.07.2022 11:11

                    Тогда я вас неправильно понял.
                    Я думал у вас претензия в том, что тепловой насос не останавливается при достижении критической температуры.
                    А у вас претензия была в том, что в игре нет автоматики... но она есть.
                    И более продвинутая, чем в factorio. Хотя мне и нехватало функционала.


                    1. JKot
                      29.07.2022 20:01
                      +2

                      В любом случае факторио предрасполагает к тому, чтобы можно было поставить исследования и свернуть игру на 5 часов. А ONI требует бесконечного микро контроля всего, т.к поселенцы склонны к самовыпиливанию. Меня именно этим ONI отолкнула. Думаю @mayorovp именно хотел более размеренного геймплея не требующего немедленной реакции на события.


          1. TheShock
            29.07.2022 16:05

            Почему древнее искусство автоматического выключения нагревателей при перегреве оказалось забыто?

            Всё там отлично автоматизируется. Пример нелогичный.


        1. TheShock
          29.07.2022 16:04
          +1

          Вот пример:

          Какой-то глупый пример

          Температура пара 230 градусов, поэтому 1/5 входов пара в паровые машины закрыта

          Зачем настраивать под комбинацию 230 градусов/4 входа, если можно настроить так, чтобы пар был 200 градусов и использовать все 5 входов?

          пар подогревается 6 водными охладителями(при чём работающими прерывисто) Вопрос: сколько нужно включить теплопроводников для подвода тепла от лавы?

          Как связаны водные охладители и лава? Вы водным охладителем гоняете хладагент, чтобы он охлаждал паровые машины? Так достаточно одного, зачем 6? Как-то вы всё на ровном месте усложнили.

          Мы просто вставляем алмазный стержень в лаву и делаем в комнате с паром пол с лавой. А стержень и пол соединяем дверьми, которые открывают если температура начинает превышать 205 градусов, тем самым отрубив соединение стержня и пола. Вокруг дверей, конечно, вакуум. Всё, у нас всегда турбины в нашей геотермалке работают близко к максимум, и никогда не перегреваются. Вот моя схема. В нефти стоят термодатчики, которые не дают нагрется этой комнате на слишком большое значение. А ещё там стоит один охладитель жидкости, который держит постоянную температуру в комнате с турбинами на уровне 20 градусов.

          Аналогично и с освоением вулканом. Небольшая схема и с комнаты с вулканом выходит металл комнатной температуры и ещё киловат шаровой электроэнергии.


          1. Tarakanator
            29.07.2022 16:24

            Когда фигачит вулкан, не факт что теплоёмкости хватит чтобы температура осталась на 200 градусах. Тем более если в этот момент паровые машины остановлены т.к. хватает генерации от солнечных панелей.
            Температура растёт. ЕМНИП при 230 градусах если закрыть 1 вход то пара потребляется меньше, а электичества выходит столькоже. Экономия.

            Водными охладителями я сбрасываю лишнее тепло от базы в ТЭС.

            Возможно у вас нет солнечных панелей или вулкан слабый, и теплоёмкости вашей системы хватает.


            1. TheShock
              30.07.2022 02:23

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

              Решается все точно так же - вам необходимо ограничить подачу тепла. Нету смысла перерабатывать все, что выдает вулкан в реалтайме

              Вот тут пример есть:


          1. hronorog
            29.07.2022 22:06

            А блюпринт с освоением магмы на алмазах у вас есть? Из чего сделано, как провода идут, какая автоматика, сколько воды для пара и тд?


            1. TheShock
              30.07.2022 01:29

              Нет, я просто импровизировал и это ещё на старой версии с большими картами. С трудом даже эти скрины остались.


  1. Kekmefek
    29.07.2022 06:44
    +2

    Если освоить паттерны с главной шиной, ситиблоками, и осознать что в игре есть один бесконечный ресурс - территория, то игра так или иначе наскучает.


    1. skop8
      29.07.2022 16:54

      Если усилить противников в настройках(death world), то не такой уж и дешевый/бесконечный.


    1. iuabtw
      29.07.2022 17:03
      +1

      Территорию можно и ограничить в настройках

      А если наскучила классика, то рекомендую посмотреть на мод с рекурсивными зданиями-заводами(Factorissimo2) и его челлендж - пройти игру не выходя из завода


  1. andersong
    29.07.2022 14:47
    +2

    Несколько месяцев назад открыл для себя Satisfactory: очень похожа на Factorio, но 3D, очень красивая и с юмором.


    1. mayorovp
      29.07.2022 15:20
      +2

      Вот только та самая трёхмерность нехило так усложняет строительство. И электричество ужасно, особенно если хочется чтобы провода не пересекали оборудование. И модов нету.


      1. Prototik
        29.07.2022 16:23

        И модов нету.

        https://ficsit.app/


      1. nidalee
        29.07.2022 16:49

        Вот только та самая трёхмерность нехило так усложняет строительство.
        Упрощает. Особенно учитывая, что у белтов нет коллизий.


        1. TheShock
          30.07.2022 02:25
          +1

          Упрощает, но при этом делает жутко неудобной


    1. arokettu
      30.07.2022 02:07
      +1

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


  1. IndependentFM
    29.07.2022 15:21
    +1

    Единственная игра, из-за которой я почувствовал себя круглым дураком. Своих мозгов не хватает, чтобы сделать все безошибочно, а залезть в гугл для поиска верного решения религия не позволяет (пропадает интерес). Надо будет еще раз попробовать влиться, вдруг я стал умнее...


  1. Sonya2000
    29.07.2022 17:02

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


  1. raamid
    29.07.2022 17:54
    +1

    Кто-то еще пользуется железной дорогой? Обнаружил, что обычная конвейерная лента гораздо проще в строительстве и обслуживании чем возиться с ЖД логистикой. А еще, нет никакого желания строить ядерный реактор, поскольку есть солнечные панели и аккумуляторы.


    1. iuabtw
      29.07.2022 18:12
      +1

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


      1. General_Failure
        29.07.2022 20:31

        Там бы сигналов побольше. Избаловался в своё время разнообразием семафоров в OpenTTD, и с наборов аж из одного сигнала у меня поезда вечно организуют дедлоки, и не только в Factorio.


        1. mayorovp
          29.07.2022 21:26

          Сигналов в Factorio не один, а два. И их вполне достаточно.


          1. General_Failure
            30.07.2022 10:55

            Да, точно, спасибо!
            Вчера сел почитал, разобрался, исправил даже. Но тем не менее, не хватает набора сигналов из OpenTTD.


        1. lgorSL
          29.07.2022 21:41
          +1

          В факторио есть логические блоки, их можно подключать к сигналам/станциям и включать-выключать их.
          И ещё если есть несколько станций с одинаковым названием, поезд поедет на ближайшую свободную. Я так делаю типовые станции типа iron:load или copper:unload, поезда сами как-то разъезжаются по станциям погрузки.


          1. TheShock
            30.07.2022 02:45

            Если бы они выбрали случайную станцию - было бы прикольно, а так вся нагрузка идёт на порядковому номеру.


            1. iuabtw
              31.07.2022 01:38

              Тоже реализуемо, учитывая что существуют логические блоки

              Кто-то даже программировал куцый аналог дума внутри факторию; видео, полагаю, легко гуглится


    1. JKot
      29.07.2022 19:52
      +1

      Кто-то пользуется конвеерной лентой? У жд в бесконечно раз больше пропускная способность и легкое подключение любых новых модулей, сити блоков, ресурсов. Жд дорога просто более умная и удобная замена шине на конвейерах.


      1. raamid
        29.07.2022 23:32

        Ну не знаю, для меня не проблема протянуть конвейерную ленту через полкарты. Если нужна, большая пропускная способность, просто ставлю более быструю ленту. А вообще, стараюсь чтобы была диверсификация ресурсов, поставил ленту от одного месторождения, начинаю тянуть от другого. Тогда и пропускная способность растет.


        1. JKot
          30.07.2022 00:01

          Сколько ракет в минуту вы запускаете? :) Для больших заводов нужны сони самых быстрых лент с ресурсами и десятки одновременно добывающихся месторождений. Просто для меня факторио это про такое: https://youtu.be/dY2nxVNBHQs


      1. arokettu
        30.07.2022 02:04

        Это же монолит против микросервисов


        1. JKot
          30.07.2022 02:34

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


  1. dvoeglazyi
    29.07.2022 19:54

    Хорошая статья, и игра тоже - было дело, провёл в ней несколько дней (как изначально и планировал). Но довольно быстро наскучила - весь смысл игры сводится по сути к "гринду" засчёт этой автоматизации. И игра превращается в "песочницу", в которой дальше вроде как "всё ясно". И насчёт врагов автор статьи, кажется, прав: баланса с ними не было - в определённый момент они или не оставляли игроку шансов, или становились ничтожными и больше не представляли угрозы.

    Сейчас мне почему-то на ум пришло сравнение с Майнкрафтом - там тоже присутствует некая возможность к автоматизации. Но она там лишь потенциальная (т.к. игра для этого не особо предназначена) - неафишируемая. Зато влечёт и как-то иначе - типа, вот, можно попробовать "перехитрить" систему.


  1. KEugene
    30.07.2022 01:24

    Прочитал статью и комментарии. Это секта свидетелей факторио какая-то. Валить отсюда надо, пока не началось.


    1. JKot
      30.07.2022 02:37
      +1

      Не хотите поговорить о поездах и автоматизации? Куда же вы? Я надеюсь вы сваливаете, устанавливать факторио?


  1. General_Failure
    30.07.2022 18:13

    Запускал сегодня факторио, сидел играл.
    И тут бах — сработала сигнализация. Сначала думал что магаз какой-то выхлапывают (хотя странно, день же, там кнопка тревожная у продаванов должна быть тогда) или пожарка сработала.
    Потом вспомнил что это я же в игре сделал сигнализацию, когда заканчивается топливо на электростанции! Динамики на мониторе, и звук почему-то не по центру был, а слева. И окно тоже слева, поэтому мозг у меня глюканул — посчитал звук за внешний, с улицы.