Проверяем Архитектурные стили на движке Factorio (часть 2, SOA)
Для понимания того, чем мы тут занимаемся обязательно прочтите предыдущую статью:
Часть 1
Вводная
Добрый день снова, дорогие читатели!
В продолжение первой части мы сегодня будем снова пробовать разные Архитектурные стили и сегодня мы переместимся с Монолита на Сервисо-ориентированную архитектуру (Service-Oriented Architecture или SOA) на движке Factorio. Наконец-то мы не просто соберём данные, но ещё сравним их с нашим предыдущим замером различных параметров — с Monolith.
Наконец-то мы узнаем, какие преимущества имеет первый и второй стиль. А то ли ещё будет позже!
С этого момента я начну писать название Архитектурных стиле на английском языке, чтобы их можно было легко глазами выискивать в тексте и ещё избавиться от двузначности терминов.
Начнём!
Сервисо-ориентированная архитектура (Service-Oriented Architecture или SOA)
Немного вспомним, чем интересен данный архитектурный стиль.
Именно в нём начались первые попытки разбивать запутанные, монолитные приложения по программной логике: что-то занимается фронтом, что-то считает деньги, что-то хранит файлы, что-то взаимодействует с БД и так далее. Чтобы всё это работало относительно независимо друг другу, придумали всё соединять некой шиной — Enterprise Service Bus (далее просто «Шина»). Именно эта шина содержала в себе логику «что, куда и при каких условиях отправлять», а при этом остальные сервисы просто принимают от шины запросы, обрабатывают их и возвращают обратно в шину.
На бумаге это выглядит так, что каждый сервис можно назначить определённую команду программистов и они будут писать код под стандарты Шины не отвлекаясь на то, то твориться в соседних командах/сервисах.
Однако, если углубится в Интернет за поиском дополнительной информации по этой архитектуре, то можно увидеть по ней есть прямо множество статей, но при этом все этот стиль не рекомендуют к применению. А причина проста — она содержала кучу критически важных минусов для Продукта. При этом популярность её обусловлено тем, что именно она дала толчок для развития в сторону других Архитектурных стилей (Service-Based, Space-Based, Event-Driven и Microservices), которые мы ещё рассмотрим в будущем.
У SOA выделяют один существенный недостаток — запутанная логика в Шине. То есть когда приложение будет расширяться, всё больше и больше логики «что-куда-когда» будет заноситься в Шину, а поскольку она является критическим, связующим звеном для всех сервисов — ошибка в ней чревата сбоями в работе приложении. Плюс к командам разработки отдельных сервисов ещё появляется необходимость выделения и команды разработки Шины, работа где будет сложна: поддержка критичной для приложения компонента; постепенно растущая и запутывающаяся логика работы Шины; множество взаимодействий с командами Сервисов со своими уникальными хотелками. В общем, именно на этом аспекте и не удалось получить от Архитектурног остиля ни ускорения разработки, ни надёжности.
Когда мы будем пробовать смастерить эту архитектуру в Facrorio, мы должны будем наткнуться на ту же проблему — поддержка Шины должна будет потреблять достаточно большую долю человекочасов разработки продукта. Если это будет так и у нас — значит мы реализуем нечто похоже на то, что было в реальных приложениях на SOA-архитектуре. Конечно, реальная разработка не является игрой и поэтому тут будут ряд условностей, но без них никуда.
Предварительный план
Давайте сразу же определим основные аспекты Стиля и попробуем перевести это в игру до её начала.
Во-первых, REST API к этому моменту ещё не так был популярен для использования, а значит различные производства будут связываться через всё те же конвейера. Разница только в том, что теперь нам нужно подводить сырьё к заводу по Шине и в неё же вливать результат производства.
Во-вторых, пользователи всё так же будут приходить к нам в приложения по ЖД. И как и в Monolith’е, в SOA это должно быть единственное использование ЖД во всём продукте.
В-третьих, ни в коем случае нельзя смешивать производства, как это было в Monolith’е — если уж ответвились для создания, например, Зелёных Микросхем, то только для Зелёных Микросхем эта ветка и предназначена.
В-четвёртых, электростанция тоже будет частью одной из веток Шины. Но она будет только потреблять ресурсы с Шины, а, но не отдавать (электричество особо на конвейер не положишь).
В-пятых, трубы с жидкостями так же придётся вести по Шине.
В-шестых, конвейера в Шине должны будут двигаться в обе стороны т.к. ряд сырья будет требоваться не только впереди по заводу, но и сзади (например, то же ядерное топливо из середины Шины придётся вести к электростанции, располагаемой в самом начале).
В целом всё. На данный момент я вижу тут две сложности и одну легкость:
Первая сложность — я не представляю, как будет работать Шина и насколько сложно/возможно будет её обслуживать;
Вторая сложность — из-за всё той же Шины весь завод будет занимать кучу места, на что достаточно скоро сагрятся жуки;
Легкость — вертикально расти при такой схеме будет значительно проще. Главное оставлять пространство между ответвлениями от Шины.
Пока же я набросал следующую схему Шины:
В теории всё выглядит хорошо: заводы будут расширятся условно бесконечно вниз, а Шина расширяется условно бесконечно вправо и, чуть медленней, вверх. Даже есть место чтобы развернуть некоторые конвейера в случае необходимости (наверное).
Но опять же — это всё прототип, а игра не так проста и в ней явно возникнут сложности ближе ко второй половине игры. По сути тут нужно будет всегда соблюдать правило «не тулить» и оставлять место как между ветками, так и в самой Шине. Ну и нужно будет ОЧЕНЬ много конвейеров и труб…
В общем, думаю, что можно пробовать начинать…
Старт игры. Пилот
Для того, чтобы обеспечить постройку самой Шины, подключить всё к ней и при этом не испытывать проблем со стройматериалами — я в первую очередь наладил производство базовых предметов (конвейеров, заводов, манипуляторов, печей и т.д.). Для этого я по-быстрому создал небольшой заводик прямо возле ископаемых ресурсов и сделал там по примеру прошлого захода — Monolith’а. Как выяснилось, это было удачным решением т.к. предметы на Шину расходуются крайне быстро и стартового набора не хватило бы даже на то, чтобы создать самые первые производства.
Ну и для науки: видимо отныне все Архитектурные стили всегда придётся начинать с мини-Monolith’а. Это даже чем-то напоминает на MVP.
В целом мой план работает хорошо: сначала я подключил переплавку ресурсов, потом перенёс электростанцию в начало, ну и продолжил создавать различные зоны производства (шестерёнки, колбы и т.д.). Пока всё это хорошо расширяется — заводы можно расширять вниз, а Шину — вправо. А если будет достигнут лимит по расширению завода — никаких проблем не будет сделать ещё одну зону с аналогичным производством далее по Шине.
Пока я делал это всё, меня не покидало желание экономить — то расположить завод теснее, чтобы позже добраться до жуков; то сделать поменьше ширину канала в Шине. Оно и верно — по ощущениям на создание Шины и подключения к ней уходит неприятно много времени, а предметов на конвейере пока не много. В общем, это именно то, с чем приходится морально бороться с собой и не допускать подобные мысли.
Чуть позже у меня нарисовались две проблемы:
Во-первых, у меня меня достаточно быстро истощились стартовые рудник железа, меди и камня, а до ЖД было ещё далеко (я даже не успел наладить производство Зелёных микросхем для Зелёных колб). В итоге пришлось временно тащить пару путей из конвейеров от ближайшей жилы. Когда у меня будет ЖД — я переведу этот костыль на поезда, но пока только так. Относительно Продукта это означает что мы начали не укладываться в Сроки — вместо того, чтобы полноценно впустить пользователей мы всё ещё работаем с ограниченным числом пользователей. То есть у нас происходит что-то вроде закрытого Альфа-тестирования, но при этом приложение готово взять и бóльшую нагрузку — странная ситуация.
Во-вторых, я территориально разросся так, что уже начал подходить к месту дислокации Жуков. То есть мы ещё в добавок начали выходить за Бюджет. Поскольку скоро начнутся нападения (ака нападки Бизнеса на неукладывание в бюджет), я прервал наладку производства Зеленых колб и сконцентрировался на производстве оборонительных сооружений (стены, турели и патроны к ним) и Чёрных колб. На текущем этапе игры убивать их ульи крайне сложно — у меня открыто не так много исследований на военное дело, а воюю уже со Средними червями. В общем, когда «Бизнес» начинает давить на проект в плане затрат — начинается крайне нервная работа в пустую по обоснованию Сроков и Бюджета. Позже, с увеличенным уроном и гранатами, уничтожать ульи стало легче, но всё это всё равно на это потратился достаточно ощутимый процент общего времени, которое можно было бы потратить на движение по пути полноценного старта работы пользователей.
В общем, всё плохо.
Зато я, как ни странно, я не испытываю проблем с Конвейерами: как только я наладил производство Желтых Конвейеров оказалось, что их производственных мощностей хватает для поддержки как Шины, так и Завода в целом (если помните, в Monolith’е с этим были большие проблемы). В общем, как ни крути, Архитектура медленно и верно начинает себя окупать.
Сама Шина уже начинает разрастаться так, что её становится проблемно обслуживать — даже её план уже в экран не помещается. Пришлось снова чуть-чуть отвлечься от ЖД и сделать производство радаров — расставив их у меня открылась вся карта и работать с разросшейся Шиной стало проще.
Ещё очень много тратится времени на расположение, строительство и подключение Шины. При этом полностью воспользоваться вместимостью этой Шины так и не смог — по её широким каналам перемещаются тонкие ручьи предметов и только в где-то в конце оно накапливается в ожидании потребления…
Ну, а спустя некоторое время я вообще упёрся в большое озеро по пути хода Шины и пришлось ещё раз отвлекаться на производство земли для отсыпки территории.
В общем, одни проблемы и я не представляю, как это всё можно было бы предугадать на первоначальном этапе планирования работы с SOA. Уже прошли игровые сутки, а я даже не успел поставить производство предметов для запуска ЖД (напомню, что в Monolith’е к суткам игры мы уже завершили игру).
Из хорошего могу отметить следующее:
Расширять Шину и подключать к ней заводы оказалось достаточно просто, хоть и долго — по сути работает принцип копировать-вставить и дальше начинают работать дроны. Короче, достаточно монотонная работа;
Затыков на Шине нет — все ресурсы поступают вполне себе равномерно и есть ещё много места для роста;
Шину не обязательно прямо всегда строить, тратя конвейеры — редко используемые потоки ресурсов можно не вести вперёд до востребования, однако нужно не забывать всегда оставлять под них места в Шине.
И ещё отмечу один минус: всё это очень трудозатратно по предметам, по территории и по времени — бюджет на разработку явно раздуется на всё это безобразие, а начало получения прибыли всё откладывается и откладывается…
Обрастание фичами
ЖД наконец-то подключено — железо, медь и уголь полились рекой.
Уже сейчас можно заметить, что всё развитие продукта движется крайне медленно: если в Monolith’е основной проблемой было придумать как втулить то или иное запутанное производство, то здесь таких вопросов не возникает, но от этого времени и ресурсов уходит далеко не меньше.
Плюс возникает много смежных проблем: то начали кончатся конвейера для постройки Шины, то земля (пока строил на воде), то жуки вечно норовят прорвать оборону.
Ещё я заметил, что ресурсов как таковых у меня много, но вот они все застряли в неактуальных местах: то в самой Шине, то на не приоритетном производстве — в Monolith’е подобного у нас такого не наблюдалось в подобных масштабах. Зато если построить завод в текущем конце Шины, то все эти зависшие ресурсы из Шины идут именно на новое производство и мы на первое время получаем заметный прирост данный предметов. Из-за этого на графиках всегда можно заметить пик производства в самом начале, а потом оно нормализуется.
Ещё странным выглядит подключение к Шине тех производств, которые не могут быть продолжены (например, Электрические столбы, Длинные манипуляторы, Ящики). У меня возникало куча вопросов вида «зачем они здесь, ведь оно не будет давать результата обратно в Шину»? Но правило есть правило.
Жуки прямо покоя не дают: вдалеке от центра их много и они хорошо защищены. И неизвестно, что с этим можно сделать: в Monolith’е удавалось с ними мало контактировать из-за малого размера завода; в будущих Microservices’ах я предполагаю, что можно будет делать производства равномерно от центра. Но в SOA мы просто ведёт Шину в одну сторону навстречу ульям на весь экран и Чудовищным червям.
Забавный случай произошёл с Шиной: когда я реализовал производство Синих колб я понял, что мне нужно будет везти их обратно в начало шины, где у меня располагаются Лаборатории. Но это оказалось не так просто т.к., во-первых, придётся вести достаточно дорогостоящие Синие колбы через весь завод, что крайне накладно; во-вторых, места для «обратного» хода конвейера внезапно не нашлось и пришлось вести их по достаточно запутанному пути, чтобы обойти все уже существующие дорожки Шины. В итоге нашлось неожиданное решение перенести Лаборатории в центр Шины, что решило эти две вышеуказанных проблемы, но добавило кучу работы по переделке Шины
Такие же проблемы были и с патронами, и ракетным топливом для поездов, и с ядерным топливом для электростанций. В общем, Шина начинает усложняться и явно не этого хотели от SOA архитекторы в своё время.
В целом по карте загрязнений можно увидеть, что активно работает только заводы в начале и конце Шины:
Объясняется это просто: в начале производства находится электростанция и переплавка руд, поэтому они «фанят» всегда и сильно. В конце находятся недавно запущенные заводы, которые ещё не успели заполнить Шину своей продукцией. Ну, а в центре (преимущественно) находятся уже те заводы, которые успели отработать и остановится из-за того, что «Выход заполнен».
Есть и хорошие новости:
Во-первых, если организовывается производство чего бы то ни было, то можно быть уверенным, что уже через полчаса у нас будет много выходного продукта от него;
Во-вторых, сделать дублирующее производство, если чего-то не хватает, проще простого — скопировал и подключил к Шине. Например, я так делал с шестерёнками и зелеными/красными микросхемами и получил заметный прирост их производства. Главное — это вовремя сообразить, что у тебя есть нехватка чего-бы то ни было.
Касательно расширения самой Шины: ближе ко второй половине игры строить её стало морально легче — то ли из-за обилия комплектующих для неё, то ли получилось просто привыкнуть к этой работе. Но это чисто ощущение — времени на неё тратиться всё так же заметно, как и в начале.
Интересности были с электричеством:
Сначала оно кончилось просто потому-что стало поступать мало воды — пришлось переносить его со старого места ближе к озеру (по сути подключать воду в обход Шины). Позже истощилась шахта с углём начались нарушения поставки угля к бойлерам — пришлось отвлекаться и аварийно создавать ещё пару удалённых шахт угля. Ну и аккурат к переходу на АЭС я понял, что достиг максимума в использовании паровых двигателей. Конечно, можно было бы ещё попробовать как-то оптимизировать подачу пара, но благо этого не потребовалось.
Атомка без проблем запустилась не смотря на достаточный долгий процесс обогащения урана — Шина позволила принять много урана и достаточно быстро обеспечить подачу урановых стержней на Шину. Если помните, на Monolith’е я АЭС сделал чуть ли не в конце игры т.к. процесс обогащения урана еле-еле «разгонялся».
Ну и последнее — по исследованиям:
Колб как таковых всегда хватает — делаешь производство и их всегда поступает тысячами в Шину. Но сделать производство новых видов колб реально занимает много времени. В итоге получается такая картина: быстро открываются все исследования, которые требуют тех колб, производство которых у меня уже налажена, но потом возникает долгая пауза в исследованиях т.к. для них нужны новые виды колб; потом производство новых видов колб всё же запускается и вся очередь исследования достаточно шустро открывается; потом опять начинается потребность в новых видах колб и начинается долгая пауза… Чую, что итоговый график будет похож на лесенку — посмотрим по завершению текущей игры. Напомню, что в Monolith’е была ситуация более сбалансированной: пока изучаешь текущее исследование — активно строишь заводы на новые виды колб (хотя и под конец игры этот принцип стал сбоить).
В общем, если вы используйте SOA, готовьтесь к тому, что вы будете долго-долго оставлять Бизнес без актуальных фич просто потому-что морочетесь с Архитектурой как таковой, но потом сможете выкатить всё пачкой и с достаточно большим запасом по производительности.
Рывок до конечной цели
Пришла пара начинать создание ракеты. Тут можно выделить три интересности:
Во-первых, хоть я и расширял создание Зеленых микросхем — их всё равно катастрофически мало. А всё потому-что их производство находится очень далеко актуального производства и большая часть продукции «сжирается» по пути. И тут не помогает ни переход на Красные конвейера, ни переход на улучшенные виды заводов, ни масштабирование. В общем, индивидуальный контроль внутри Шины требует дополнительных трудовложений и ещё больше увеличивает сложность Продукта.
Во-вторых, под конец я столкнулся с похожей мыслью, что была и в начале — «Зачем мне выводить в Шину дорогостоящее производство, если можно подключить её в рядом стоящую ракетную шахту». Посмотрите сами на то, как близко располагается производство Спутников от Ракетной шахты и думаю, что у вас тоже возникнет желание не тянуть их в Шину, а подключить напрямую. Но правило есть правило.
И на этот раз это реально не окупилось — ну зачем мне полная линия дорогостоящих спутников, если достаточно одного раз в несколько часов?
В третьих, из-за перепроизводства стали кончаться уже существующие шахты/жилы нефти, меди и железа. Это странно т.к. я их достаточно много наделал когда подключал ЖД. Но, видимо, это такая особенность Архитектуры — так сказать «Цена за самоподдержание».
Итого по финалу:
Затрачено реального времени в 23 дня;
Убито жуков: 2'411'763
Убито червей: 3848
Убито ульев: 3626
Вот ещё я сделал гифку сравнения размера завода с Monolith’ом:
Сохранение
Видео
Во всей этой картине меня особенно пугает ни затраченное время, ни количество убитых кусак, а на почти 2.4к убитых Чудовищных червей. Не думаю, что другие архитектуры покажут такие же цифры.
В целом приложение получилось достаточно производительным и в меру удобным в плане расширения. Но уж очень громоздкое — ты идёшь на километры в одну сторону и никак ты с этой дороги не свернёшь.
Мне этом приложение напоминает старые, исполняемые файлы на Java: один большой, исполняемый файл, который просто, но долго переносить, а так же запускается он крайне медленно.
Сразу же после окончания у меня встал вопрос: «А сколько же я времени убил на развитие Шины по сравнению с остальными работами?». По ощущениям это было около 40%. Чтобы проверить это я поделил реплей на 11 частей и замерил, сколько времени я тратил на работу с Шиной. Вот результат:
В целом ощущения не подвели — 30–40% времени в зависимости от этапа. При этом можно заметить, что график достаточно равномерный и по мере развития приложения баланс количества работы над Шиной к работе над самим Приложением более-менее сохраняется.
Теперь переходим к замеру параметров данного Архитектурного стиля.
Evolvability
Тут мы сравниваем, как быстро мы провели открытия различных исследований.
В отличие от Monolith’а, в текущем Архитектурном стиле пришлось изучать ещё много чего дополнительно, чтобы справится с Жуками и построить завод на озере. Плюс был немного изменён порядок исследований — то есть у нас появился такой фактор как «Сервисные фичи». Это означает, что есть не представляющие особой ценности Бизнесу, но необходимы для того, чтобы Архитектура работала как таковая.
Ну и ещё тут наблюдается такая тенденция, что изучение новых технологий при налаженном производстве никак не тормозит движение в финишу — так было изучено много фич, которые оказались невостребованными (например, «Огнемёт» или «Танк»). Но количество (но не разнообразия) колб и времени часто хватает с лихвой, так что проблем с этим нет.
Исследование | Время для Monolith | Время для SOA |
Автоматизация | 00:54:35 | 00:31:31 |
Логистический исследовательский пакет | 01:01:53 | 00:43:24 |
Производство стали | 01:04:37 | 00:37:34 |
Логистика | 01:07:14 | 00:30:36 |
Пулемётная турель | 01:08:41 | 00:44:20 |
Электроника | 01:12:27 | 00:35:22 |
Логистика 2 | 01:29:01 | 10:58:13 |
Двигатель | 01:38:41 | 10:55:09 |
Железные дороги | 01:46:36 | 10:59:24 |
Автоматизация железных дорог | 01:54:05 | 11:00:32 |
Железнодорожные сигналы | 02:04:03 | 11:02:00 |
Военная промышленность | 02:04:26 | 01:04:27 |
Каменная стена | 02:04:45 | 00:49:07 |
Военная промышленность 2 | 02:05:47 | 11:11:00 |
Военный исследовательский пакет | 02:08:42 | 11:11:19 |
Продвинутая металлургия | 02:16:33 | 11:09:18 |
Огнестрельный урон | 02:22:54 | 01:54:49 |
Скорострельность оружия | 02:27:14 | 01:29:43 |
Огнестрельный урон 2 | 02:35:39 | 11:04:50 |
Скорострельность оружия 2 | 02:44:53 | 11:07:44 |
Огнестрельный урон 3 | 03:21:40 | 19:36:24 |
Быстрый манипулятор | 03:22:17 | 00:48:12 |
Автоматизация 2 | 03:22:53 | 11:08:08 |
Транспортировка и хранение жидкостей | 03:23:41 | 11:11:51 |
Вагон-цистерна | 03:30:01 | 11:14:46 |
Переработка нефти | 03:33:41 | 11:19:48 |
Скорость лабораторий | 03:38:00 | 11:16:14 |
Скорость лабораторий 2 | 03:48:23 | 11:18:45 |
Электроснабжение 1 | 03:55:13 | 11:40:48 |
Обработка серы | 04:08:43 | 11:21:28 |
Взрывчатые вещества | 04:11:04 | 11:31:50 |
Аккумулятор | 04:18:41 | 11:28:04 |
Пластмассы | 04:31:33 | 11:23:49 |
Продвинутая электроника | 04:52:07 | 11:25:44 |
Химические исследовательская пакет | 04:57:29 | 11:26:22 |
Пояс для инструментов | 05:04:18 | 11:10:48 |
Пакетный манипулятор | 05:18:05 | 11:34:05 |
Бонус вместимости манипулятора 1 | 05:29:31 | 11:44:52 |
Бонус вместимости манипулятора 2 | 05:51:40 | 11:47:31 |
Модули | 06:05:41 | 11:29:09 |
Модуль скорости | 06:13:55 | 11:29:46 |
Модуль продуктивности | 06:21:32 | 11:30:23 |
Стационарный аккумуляторы | 06:43:18 | 11:42:43 |
Продуктивность добычи 1 | 07:26:42 | 11:39:28 |
Огнестрельный урон 4 | 07:43:50 | 20:38:24 |
Ворота | 07:45:57 | 11:53:37 |
Оптика | 07:46:10 | 01:03:08 |
Солнечная энергия | 07:53:07 | 11:50:58 |
Скорострельность оружия 2 | 08:07:46 | 11:36:23 |
Горючие жидкости | 09:11:45 | 11:34:40 |
Дрон-защитник | 09:24:49 | 21:53:30 |
Количество следующих за персонажем дронов 1 | 09:58:13 | 22:07:49 |
Количество следующих за персонажем дронов 2 | 10:48:08 | 22:15:10 |
Бетон | 10:52:31 | 12:01:41 |
Продвинутая переработка нефти | 10:53:51 | 73:35:46 |
Смазочная жидкость | 10:54:50 | 74:23:11 |
Продуктивность добычи 2 | 11:21:01 | 74:47:59 |
Переработка урана | 11:33:58 | 74:31:40 |
Продвинутая металлургия 2 | 11:50:32 | 74:36:51 |
Ядерная энергия | 12:37:14 | 74:39:04 |
Производственный исследовательский пакет | 12:42:13 | 74:37:48 |
Конструкция малой плотности | 13:02:14 | 74:41:09 |
Ракетное топливо | 13:22:09 | 74:52:16 |
Процесс обогащения им. Коварекса | 15:29:05 | 85:48:59 |
Переработка ядерного топлива | 15:33:37 | 86:21:06 |
Электродвигатель | 15:34:31 | 74:23:42 |
Робототехника | 15:35:50 | 74:24:22 |
Скорость рабочего дрона 1 | 15:36:51 | 74:27:12 |
Сила торможения 2 | 15:37:14 | 74:14:54 |
Скорость рабочего дрона 2 | 15:38:35 | 74:28:08 |
Сила торможения 1 | 15:40:28 | 74:12:34 |
Продвинутая электроника 2 | 16:06:20 | 74:34:20 |
Вспомогательный исследовательский пакет | 16:13:01 | 74:48:57 |
Скорость лабораторий 3 | 16:29:44 | 74:17:51 |
Скорострельность оружия 5 | 17:03:17 | 74:17:52 |
Сила торможения 3 | 17:19:43 | 85:55:42 |
Сила торможения 4 | 17:43:03 | 86:15:55 |
Сила торможения 5 | 18:13:07 | 86:20:34 |
Блок управления ракетой | 19:15:06 | 115:23:24 |
Модуль скорости 2 | 19:16:09 | 74:59:50 |
Модуль продуктивности 2 | 19:17:12 | 75:00:35 |
Модуль продуктивности 3 | 19:25:36 | 86:47:16 |
Модуль скорости 3 | 19:34:08 | 86:43:26 |
Ракетная шахта | 20:34:18 | 115:30:55 |
Космический исследовательский пакет | 23:24:52 | 115:30:01 |
Автотранспорт | 11:54:54 | |
Скорость лабораторий 4 | 74:22:41 | |
Скорость лабораторий 5 | 86:01:48 | |
Взрывчатка скал | 11:52:28 | |
Портативная солнечная панель | 11:57:55 | |
Автоматизация 3 | 86:04:33 | |
Атомная бомба | 116:08:47 | |
Бонус вместимости манипулятора 3 | 75:02:50 | |
Бонус вместимости манипулятора 4 | 86:11:14 | |
Бонус вместимости манипулятора 5 | 86:28:21 | |
Бонус вместимости манипулятора 6 | 86:32:29 | |
Бонус вместимости манипулятора 7 | 116:11:33 | |
Лазерные технологии | 75:29:25 | |
Личный аккумулятор | 11:59:00 | |
Логистическая робототехника | 74:26:38 | |
Логистическая сеть | 11:48:15 | |
Модуль эффективности | 11:30:57 | |
Модуль эффективности 2 | 75:01:20 | |
Модульная броня | 11:57:14 | |
Мины | 21:48:32 | |
Прибор ночного видения | 11:58:17 | |
Портативный генератор электрического щита | 21:57:51 | |
Огнемет | 20:46:38 | |
Ракетостроение | 21:55:27 | |
Оборудование для игнорирования конвейеров | 11:58:39 | |
Отсыпка территории | 11:32:27 | |
Скорострельность оружия 3 | 21:27:26 | |
Скорострельность оружия 4 | 21:45:26 | |
Переработанное горючие 1 | 21:50:59 | |
Переработанное горючие 2 | 22:02:52 | |
Стальной инструмент | 01:01:45 | |
Танк | 03:32:07 | |
Тяжелая броня | 02:02:24 | |
Усиленная взрывчатка | 11:56:02 | |
Усиленная взрывчатка 2 | 19:08:11 | |
Военная промышленность 2 | 73:32:50 | |
Взрывные боеголовки | 73:34:28 | |
Усиленная взрывчатка 3 | 73:46:13 | |
Огнестрельный урон 5 | 73:59:08 | |
Скорострельность оружия 5 | 74:11:14 | |
Грузоподъёмность рабочего дрона 1 | 74:29:56 | |
Военная промышленность 3 | 115:24:17 | |
Огнестрельный урон 6 | 116:15:29 | |
Скорострельность оружия 6 | 116:19:24 | |
Усиленная взрывчатка 4 | 116:22:02 | |
Скорость рабочего дрона 2 | 116:23:00 | |
Усиленная взрывчатка 5 | 116:26:28 | |
Усиленная взрывчатка 6 | 116:30:22 | |
Скорость лабораторий 6 | 116:32:32 | |
Сила торможения 6 | 116:35:06 | |
Сила торможения 7 | 116:38:54 | |
Продуктивность добычи 3 | 116:44:30 | |
Скорость рабочего дрона 4 | 116:45:53 | |
Скорость рабочего дрона 5 | 116:48:50 |
Диаграмму придётся обезличить т.к. порядок исследований был нарушен. Вот график «по возрастанию» количества исследований:
Шкала оси Y — сутки; шкала оси X — исследование по порядку.
Что можно сказать по этому графику:
Самое главное и очевидное с первых часов игры — на достижении всех основных целей потребовалось в 5 раз больше времени, чем в Monolith’е. То есть, чтобы примерно сравняться по времени разработки с Monolith’ом нужно увеличивать команду разработки в 5 раз.
Я знаю правило по поводу увеличения количество сотрудников в проекте вида «две женщины не могут родить в 2 раза быстрее», но тут я это намеренно опустил из расчётов т.к. другой коэффициент продуктивности по увеличению количества программистов я удачно применить не могу. В разных компаниях эта формула разная: можно нанять наивысших специалистов с ЗП по 1 кв.метру квартиры в Сингапуре в месяц, но которые будут работать 24/7 и выдавать ту самую удвоенную (а то и больше) скорость разработки;, а можно нанять толпу лентяев за пачку Анакома и удивляться, что ничего не ускорилось. В общем, берите пока наиболее простой расчёт от меня и накладывайте его на свой реалии.
Если разделить значения в графике SOA на 5, то получится тоже очень интересный график:
Во-первых, сразу видно, что за то же самое время мы смогли сделать значительно больше фич. Да, часть из них не требуются в Monolith’е (та же «Отсыпка территории» или военные исследования), но всё же факт есть факт. Если бы не это не приходилось бы делать, то можно было увеличивать число сотрудников команды не на 5, а на 3, но это уже утопическая лирика.
Во-вторых, как только мы в начале игры закончили Monolith-времянку, мы почти сразу же получили не хилый буст по фичам, который и не снился в Monolith’е — по сути мы его догнали по скорости. Но потом начался этап, когда нужно было поднимать производство новых видов Колб и появилась необходимость активно расширять Шину, создавая новые производства. И так до следующего буста по кругу.
В общем, это та самая «лесенка», о которой я предполагал ранее — на шаге 17 мы получили буст от Зелёных Колб и быстро изучили всё нужное, но потом появился простой до шага 65, где пришлось ждать наладку производства Чёрных колбы. Подобное было потом на шаге 79 — от Синих колб; на шаге 111 — от Фиолетовых; на 123 — от Желтых. Как то так.
Ещё можно заметить, что у нас в SOA начались первые исследования немного ран