Сообщество - Factorio

Factorio

98 постов • 1 083 подписчика

Популярные теги в сообществе:

5

Фабрика размером с галактику: как я утопил 2 планеты в Солнце и сломал лимиты движка Factorio (Часть 2)⁠⁠

Привет снова, инженеры!

В прошлом посте я рассказывал, как наивная идея «собрать мега-сборку на Space Age» обернулась тремя месяцами раскопок в Lua и борьбой с рецептурным адом и UPS.

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


Боль №3: Космос сошел с ума, или как вытащить планеты из Солнца

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

Открываю карту галактики и наблюдаю прекрасное:

  1. Планеты-камикадзе внутри звезды.
    В самом центре системы ярко сияет главное солнце. А прямо внутри его текстуры, в пылающей фотосфере, беззаботно нарезают круги две орбитальные станции с солнечными коллекторами. Они буквально спавнились внутри диска звезды на нулевом радиусе.
    Пришлось лезть в data-final-fixes.lua, вспоминать полярные координаты, пересчитывать радиусы орбит и аккуратно выводить эти станции наружу, чтобы они вращались вокруг звезды, как нормальные рукотворные объекты, а не жарились в термоядерном аду.

  2. Черная дыра вместо созвездий.
    Вторая проблема — мододелы обожают делать крутые планеты, но совершенно не думают, как они выглядят вместе. В итоге за пределами Солнечной системы висели кучки планет посреди абсолютной черной пустоты. Ни звезд, ни ориентиров — просто летающие шары в темном подвале.
    Чтобы придать космосу масштаб и логику, я разметил карту на 5 удаленных звездных секторов («Кузница», «Океанический фронтир», «Крио-рубеж», «Энергетический сектор» и «Сингулярность Предтеч») и прописал каждому сектору свое яркое солнце-ядро. Теперь у дальних систем есть центр гравитации, а у космических кораблей — понятная навигация.


Боль №4: Обновление модов — игра в русскую рулетку на 475 патронов

Сборка живет, Factorio 2.0/2.1 активно допиливается, и разработчики модов тоже выкатывают обновления. На днях я решил провести ревизию: скачал свежие версии сразу для 63 модов.

Наивный расчет: «Авторы ведь исправили баги, станет только стабильнее».
Реальность: игра перестала запускаться примерно шестью разными способами.

  • Искусственные заборы. Автор одного популярного мода на луну просто взял и добавил в манифест зависимостей строчку ! janus (запрет на запуск с планетой Янус). Почему? «Ну, мне показалось, они тематически не очень сочетаются». То, что у сотен игроков они прекрасно сосуществовали, автора не смутило.

  • Привет из 2020 года. Скрипт подтянул с портала мод версии 1.1.6, посчитав его новее нашей 1.1.5. Только вот 1.1.5 была неофициальным свежим портом под Factorio 2.1, а 1.1.6 оказалась архивной версией пятилетней давности для старой игры.

  • Фатальный nil. В библиотеке тепловых расчетов разработчик в патче решил причесать код интерфейса и… случайно снес строчку проверки if not storage.players. Итог: при любой попытке загрузить существующую карту движок пытается опросить несуществующего игрока и вываливается в Windows с крашем attempt to index field '?' (a nil value).

Пришлось вручную тестировать каждый чих, возвращать стабильные версии и патчить чужие «исправления».


Боль №5: Предел рекурсии Wube Software (21 > 20)

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

Error while loading space-location prototype "erimos-prime": Too deep recursion for localised string: 21 > 20 (limit)

Что произошло?
В движке Factorio 2.1 есть жесткое ограничение: дерево локализованной строки (текста описания объекта) не может быть глубже 20 уровней вложенности.

А теперь следите за руками: есть планета Эримос Прайм.

  1. Первый мод дописывает ей свойства атмосферы: desc = { "", desc, "Текст 1" } (глубина 2).

  2. Второй мод добавляет статус орбитальной обороны (глубина 3).

  3. Третий мод вешает расчет загрязнения (глубина 4).

  4. Четвертый добавляет инфу о ресурсах…

К моменту, когда до планеты добрался 21-й мод со своим микро-описанием, строка превратилась в матрешку из 21 вложенной таблицы. И C++ парсер Wube просто выкинул белый флаг: «Лимит рекурсии превышен, я закрываюсь».

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


Что в сухом остатке?

На данный момент:

  • Все 475 модов засинхронизированы.

  • Контрольный прогон через движок выдал заветное: Prototype list checksum: 1364196656, exit code: 0.

  • Сохранения загружаются без единого предупреждения, а полет между секторами наконец-то похож на настоящее космическое путешествие, а не на блуждание по темному чулану.

Дальше останется лишь по ходу игры аккуратно полировать баланс отдельных рецептов.

А пока — чертежи готовы, поезда заправлены.

Фабрика должна расти.

Показать полностью
9

Как я убил 3 месяца на «сборку мечты» в Factorio 2.0 Space Age: 400+ модов⁠⁠

Привет, инженеры!

После выхода официального дополнения Space Age 2.0 у меня, как и у многих фанатов игры, снова зачесались руки. Пять ванильных планет — это круто, но когда наиграл в Factorio тысячи часов, хочется не просто слетать на Вулкан и Глебу, а развернуть настоящую галактическую империю масштаба Space Exploration и Krastorio, но на новом, ультра-быстром движке 2.0.

Наивный я думал: «Ну закину в папку модов Space Age, Krastorio 2, пару десятков планетных паков, настрою и буду кайфовать».

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

Боль №1: Мертвые петли рецептов и крафтовый ад

Когда соединяешь глубокие моды вроде AAI Industry, Krastorio 2 и сторонние планеты, игра неизбежно сходит с ума.

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

Пришлось вручную писать bridge-скрипты на этапе data-final-fixes.lua, чтобы выстроить логичную цепочку:

1. Плавный переход от базовых паровых механизмов к электричеству;

2. Единая металлургия без дублирования пяти разных видов железных плит из разных модов;

3. Интеграция качественных предметов (Quality) из Space Age во все сторонние производственные цепочки.

Боль №2: Война за 60 UPS (когда игра не прощает ошибок)

  • Каждый, кто строил межпланетные фабрики, знает это страшное слово — UPS (Updates Per Second). Когда у тебя на орбите висят десятки космических платформ, сотни поездов курсируют между станциями, а логистические дроны закрывают небо — игра быстро падает с 60 до 15–20 кадров, превращаясь в пошаговую стратегию.

    Пришлось провести тотальную чистку:

    1. Вырезать кривые скриптовые циклы в control.lua, которые опрашивали сущности каждый тик (on_tick).

    2. Оптимизировать конвейерные потоки под новые алгоритмы движка 2.0.

    3. Настроить космические платформы так, чтобы расчет падения астероидов не сжирал половину ресурсов процессора.

    Результат: даже при открытых 10+ планетных системах с активным производством счетчик стабильно держит 60.0 UPS.

Что получилось в итоге?

Получился монолитный проект под названием Astro-Genesis Ultimate 2.0:

  • 40+ планетных систем: ледяные бездны, радиационные пустоши, океанические миры с плавучими платформами и токсичные атмосферы, требующие специальной защиты.

  • Глубокая логистика: космические лифты, автоматические грузовые челноки и орбитальные стыковочные узлы.

  • Собственный эндгейм: загадочный сектор Предтеч «Астра» на дистанции 120 000 000 км с кастомными механиками антиматерии и сингулярности.

  • Полная стабильность: ни одного краша, чистый лог без красных строк и ошибок локализации.

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

    Позже опубликую скрины уже с игрой

Как я убил 3 месяца на «сборку мечты» в Factorio 2.0 Space Age: 400+ модов
Показать полностью 1
5

Факторио – сколько то, или Царство Нургла на Глебе, продолжение #5⁠⁠

Серия Всякое вне тем

Для лиги лени: Игра отличная, обучение к космонавтике отсутствует. Обучение садоводству отсутствует.
Если кто-то не знает, чем занять себя в выходные – это оно.

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

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

АГА КАК ЖЕ.

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

Размечтался.

Каждая био лаборатория по производству био науки потребляет удобрения как не в себя. Два завода по производству удобрений будьте добры рядом поставить.  Еще лучше заранее накопите сундуков так 10 гнилья на каждый, итого 20. На цикл «сделали – сунули в ракету – доставили». Итого 4 завода по удобрениям.

Каждая био лаборатория требует два завода по производству паучих глаз. И эти глаза опасные, из них что-то вылупляется при гниении. И каждый завод по производству паучих глаз требует еще 2 завода по удобрениям, итого еще 4. Это если вы строите экономику на заводах, а не на биолабах.

Каждый завод по удобрениям легко выгребает синюю конвейерную ленту, забитую этими самыми удобрениями.

Итого надо 6-8 лент, набитых гнильем, и ящиков по 10, а лучше по 20, буферов под этот поток.

На всю эту массу спор и удобрений набегают все ближайшие пауки - топтуны. Пауки жирные, толстые. И выносят поле 10 на 10 турелей 10 (кажется) уровня с обычными патронами просто на раз. Можно было бы делать бронебойные патроны, но меди постоянно не хватает. Огромные плантации деревьев - с около нулевым выходом по меди. Про производство меди в хотя бы 4 конвейерные ленты, как на Новисе или Вулкане, можно только мечтать.

Чтобы получить ракетные турели, нужно сначала отвезти на Новис пару тысяч биоколб.

Поэтому два раза меня чуть не сожрали самого, один раз сожрали, и пришлось срочно притащить с Новиса 500 турелей, потому что местное производство на Глебе не успевает воспроизводить все сразу.

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

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

И что корабль надо делать как можно более узким, и что надо было на орбиту Глебы выгонять не 2 корабля, а 4. Из них 2 только под сбор и сброс железной руды и углерода с орбиты, это хотя бы бесплатно, и 2 под транспорт.

Заключение

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

Игре уже 10 лет (ранний доступ: 25 февраля 2016), я играю с ковида, и не надоедает.

Рекомендации

8-битный Тьюринг-полный компьютер в Factorio

Показать полностью
4031

Я сделал это! Долетел до разрушенной планеты и взял все достижения в Factorio⁠⁠

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

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

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

Цветное табло сделал сам впервые, в зависимости от наличия определенных вещей на ленте или в хабе, загоралось определенное число лампочек, а цвет менялся от красного до зеленого.

Сделал также подсчет расстояния до планеты через комбинаторы, т.к. в игре не нашел, где это можно считывать, посылал на арифметический комбинатор значение текущей скорости раз в 60 тиков, там он суммировался и зацикливался, погрешность оказалась меньше 1%, примерно на 30ой секунде. Данное значение планировалось использовать для постепенного замедления корабля в процессе приближения к разрушенной планете.

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

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

Но мне очень не повезло с первым сидом, поэтому было решено разбить на две игры, в первую выбил ачивки "создайте локомотив за первые полтора часа игры", "первая вражеская постройка должна быть уничтожена артиллерией", "Исследуйте технологию с помощью исследовательского пакета с другой планеты, прежде чем разблокировать производственный или вспомогательный исследовательские пакеты.", "Запустите ракету в космос, создав вручную не более 111 предметов.", во второй игре уже выбил все остальное, поставил на Фульгоре молл на легендларное всё и оставил игру на несколько дней саму играться, потом отправил всё на корабль и полетел.

Около года ни во что не играл и решил таким образом провести несколько выходных, к тому же вышло последнее крупное обновление 2.1, пока, правда, в экспериментальном режиме, прошел все на ней без модов. На первом видео урывисто все показано т.к. в процессе съемки показывал жене где что и как, она присутствовала на финале полета, делала вид что ей все интересно, люблю её.

Ну и в заключение - разрушенной планеты нет, даже её изображения, и ничего после нее тоже. Если что-то видели дальше по исследованиям и локациям - это моды, самый популярный вроде бы Shattered planet. Но у меня уже времени не хватит его пощупать.

Всем спасибо за внимание, мне просто очень хотелось этим поделиться.

Показать полностью 2 1
6

Факторио – сколько то, или Царство Нургла на Глебе, продолжение #4⁠⁠

Серия Всякое вне тем

Для лиги лени: Игра отличная, обучение к космонавтике отсутствует. Обучение садоводству отсутствует.
Если кто-то не знает, чем занять себя в выходные – это оно.

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

Полученные пластик, сера, ракетное топливо – уже не гниют.

Вторым по сложности оказалась необходимость автоматизировать, хотя бы копипастой, постройку обороны.
Не понимаю, как сказать дроидам «все сровнять, болото засыпать, поверх строить». Как все сносить понятно, как потом на болоте строить не понятно.

Выход железа и меди с одного дерева – просто слезы, конечно.

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

В том числе и на первые космолеты. Убогие и корявые, надо строить СуперКосмолет Gen3.

Получается пока какой-то космолет модель Т.
Спереди Т образный таранный нос с пулеметами, лазеры не эффективны на перегоне

К ним проводка патронов. От них проводка сборщиков

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

Одна, ну две, печки под железо и сталь. 6 крашеров в режиме конвертации «все в руду». 4 завода вокруг .

Основное назначение – сброс руды на Глебу и сверхбыстрая перевозка с Глебы на Новис и обратно. Для чего нужно хотя бы 14 двигателей и 20 + 20 баков и все для получения кислорода и керосина горючего и окислителя

Потому что производительность плоды - желе – бактерии – просто никакая, и без руды с орбиты не жизнь.

Показать полностью
11

Факторио – сколько то, или Царство Нургла на Глебе, продолжение #3⁠⁠

Серия Всякое вне тем

Для лиги лени: Игра отличная, обучение к космонавтике отсутствует. Обучение садоводству отсутствует.
Если кто-то не знает, чем занять себя в выходные – это оно.

Чем дольше сижу на Глебе, тем больше проникаюсь ее атмосферой, и скоро пойду пробовать дедушкин суп.

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

На 100500 час игры индеец Зоркий глаз решил сделать синие (третьи по счету) конвейеры и пошел конструировать смазку из желе. Посмотрел на карту, и подумал, а чего это оно фиолетовое? Не понятно.

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

Факторио – сколько то, или Царство Нургла на Глебе, продолжение #3

И еще пауканы приходят. Выедают урожай. Я уж их душил душил, но один большой паукан, если пулеметы набивать стандартными патронами, даже на прокачке 10, успевает потоптать 10-20 пулеметов. Не жалко, это всего лишь 3-4 ряда пулеметов, блоком по 5 штук, но надоедает.

Начинаешь строить линию Мажино – оказывается, ресурсов нет.

Но, конечно, стало попроще, когда разобрался, что и как и куда.

Итоговый блок очень простой.

Блок воспроизводства семян.
Первая линия, 5 заводов, делает желе.
Вторая линия, 5 заводов, делает продукт и кучу говн.
Третья линия , 5 заводов, из кучи говн делает удобрения и отправляет их на круг к биореактору – размножителю семян.
В конце каждой линии, конечно, отброс говен на линию говен.

Почему так ? Потому:

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

https://wiki.factorio.com/Yumako_seed/ru

Надо будет в заводы навтыкать модулей продуктивности.

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

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

«Все тенали бороговы» (англ. Mimsy Were the Borogoves) — научно-фантастический рассказ Льюиса Пэджетта (псевдоним американских писателей Генри Каттнера и Кэтрин Люсиль Мур)
https://ru.wikipedia.org/wiki/Все_тенали_бороговы

Литература

https://wiki.factorio.com/Biochamber/ru

Показать полностью 1

Продолжение поста «Факторио – 12 или сплошное болото»⁠⁠1

Серия Всякое вне тем

для ЛЛ: все ясно, он застрял

Глеба прекрасная планета, в своей способности не только вызывать боль постоянным гниением, но и тем, что только на ней я в полной мере ощутил, что такое "периодические процессы" и "коэффициент размножения". Чуть пропустил, чуть потерялся, и все - семян нет, глаза пауков сгнили, кругом одно гнилье. И постоянно, то перевес на ленте подачи фруктов, то лента пустая, то все сгнило.

И очень не хватает камня, засыпать это сплошное болото.

Вытягивает только реактор, и помогает сброс карбона с орбиты, с 2 десантных барж - которые тоже надо перестраивать. На тепловые башни пока не перешел, таскаю уран с Новиса. И даже производство рыбьих глаз еще не сделал.

Отличное дополнение. Еще бы где найти пару свободных недель!

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества