[Перевод] Образ мышления Factorio

tzeim24vylgfcwnj_hjap70iqza.jpeg

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

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

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

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

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

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

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

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

tsychslfu1_thgu4_diqanjx4me.jpeg

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

tzeim24vylgfcwnj_hjap70iqza.jpeg

Упорядоченная, модульная, красивая база, которую довольно легко понять (если вы играете регулярно). Оба скриншота взяты с форумов 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.

© Habrahabr.ru