Factorio Dev Diary

Подписчиков:
18
Постов:
24
,Factorio,Игры,Factorio Dev Diary
Здравствуйте!
Добро пожаловать в раздел «Факты недели».
Указатели или доски объявлений — обычное явление в видеоиграх, вероятно, не намного уступающее вездесущим деревянным ящикам или взрывчатым бочкам. Это хороший, чистый и понятный способ общения с игроком, и это было то, что мы давно хотели увидеть в Factorio...

Display Panel - Дизайн (Эарендель)

Полная функциональность новой сущности "Display Panel" отображения будет полностью объяснена ниже. Для дизайна нам нужно знать только то, что это сущность, которая может отображать любую иконку по вашему выбору (предмет, рецепт, виртуальный сигнал).
Первая версия, которую я увидел, была указателем, добавленным Klonan. Это был хороший плейсхолдер, и общая концепция отображаемой сущности как указателя была чем-то, что стоило рассмотреть. Теоретически указатель мог бы работать, но есть несколько отвлекающих факторов:
Указательный столб — это в первую очередь 2D-структура, и под этим я подразумеваю, что он высокий и плоский, но не имеет большой глубины. Если опорный столб указателя находится в середине плитки, то как более высокая сущность, это выталкивает область отображения вверх и наружу плитки, которую занимает сущность.
- Если указатель переместить вперед, чтобы дисплей поместил больше информации в пределах плитки сущности, то, поскольку это в основном двухмерная структура, будет казаться, что большая часть плитки позади него пустует, и он будет выглядеть странно, если его выстроить в ряд с другими объектами.
- Поверхность дисплея в итоге становится вертикальным прямоугольником, но значки, которые появляются на дисплее, — это значки, которые предназначены для просмотра в графическом интерфейсе или горизонтальной плоскости, например, на земле или транспортной ленте. Это заставило бы все значки выглядеть более неуместными и бороться с кажущейся проекцией камеры Factorio.
Если бы какая-либо версия указателя работала, то она, вероятно, должна была бы быть больше похожа на один из тех временных дорожных знаков, которые стоят на земле и опираются на какие-то треугольные опорные стойки. Большая проблема в том, что ни один из этих вариантов не имеет нужной эстетики.

Первый дизайн - Демонстрационная пластина

Мой первый дизайн был быстрым макетом чего-то, что исправило бы многие из этих проблем. Это была бы широкая, блочная, в основном горизонтальная поверхность дисплея, которая бы работала более естественно с имеющимися у нас значками. Это больше похоже на металлическую табличку дисплея, которую вы можете увидеть в старом промышленном музее или военном мемориале. Следующая проблема заключается в том, что если бы значок был нарисован на поверхности, то на самом деле он должен был бы быть немного сжат по вертикальной оси из-за направления камеры. Чтобы избежать этого, я слегка наклонил поверхность вперед, чтобы она была обращена к камере. Многие панели дисплея наклонены к ожидаемому положению головы стоящего читателя, поэтому это выглядело разумно.
Последнее, что было, это то, что значки, как правило, лучше всего смотрелись и были четкими на темно-сером фоне, поэтому это тоже было добавлено. Изображение ниже примерно то к чему я пришел тогда. Это не было задумано как полноценный дизайн и не было сделано в обычном разрешении 4x концепт-арта. Тем не менее, это работало лучше, чем указатель, поэтому его добавили в игру на несколько месяцев. Ему даже удалось пробраться в несколько FFF.

Второй дизайн - Больше логики

Когда пришло время сделать правильный дизайн, некоторые требования изменились. Это был уже не просто статический дисплей, он имел логическое соединение для изменения значка и многого другого. Он также был имплементирован позже как часть системы логической сети, вместе со всеми комбинаторами, выключателем питания и программируемым динамиком. Таким образом, новый дисплей должен был выглядеть как часть этого пласта технологий.
Новый дизайн основан на базе в стиле комбинатора. Все комбинаторы разные, поэтому база дисплея также «такая же, но другая» в некотором роде.
Для самой лицевой стороны дисплея я выбрал ЭЛТ (электронно-лучевую трубку). Такая изогнутая поверхность дисплея идеально подходит для эстетики этой части технологического дерева. Экран такого типа обычно наклонен вперед, но если вы посмотрите на множество старых дисплеев NASA, многие из них были наклонены довольно сильно вверх. Вероятно, это сделано для того, чтобы их было хорошо видно из положения сидя или стоя. По причинам, упомянутым ранее, для наших иконок лучше всего, если поверхность дисплея находится ближе к камере, что составляет угол 45 градусов. Экран ЭЛТ наклонен примерно на 40 градусов, так что он почти обращен к экрану, но вы все равно можете видеть некоторые интересные детали сверху.
Первая итерация нового дизайна была основана на вращении всей структуры без изменения ее формы в каждом направлении. Это заставило экран двигаться в зависимости от ориентации сущности, что более соответствует форме объекта, но было не очень здорово, когда значок и текст смещались влево или вправо, поэтому это пришлось изменить.
Вторая итерация сохраняет экран устойчивым на протяжении всех вращений. Это означает, что форма структуры отличается для каждого вращения. Было немного трудно удержать точки соединения цепей в разумных местах, но это сработало.
Мы могли бы сделать эту сущность всего в одном возможном расположении но наличие вращающихся логических соединений цепей довольно важно, потому что это одна из немногих сущностей в игре, ориентированных на отображение, и наличие проводов что пересекали бы экран, — это не то, что вам нужно. Вращение сущности для изменения положений соединений логических  цепей помогает сохранить экран чистым. Даже если вы вращаете их как часть более крупного массива комбинаторов, они все вращаются вместе и предотвращают запутывание проводов. (Кроме того, даже постоянный комбинатор имеет 4 вращения, поэтому было бы странно, если бы на панели отображения было бы только 1).
Этот дизайн довольно новый, поэтому нам нужно будет его еще протестировать, прежде чем называть его окончательным. Пока нет 3D-модели, она будет сделана, если мы решим, что эта версия нас устраивает.

Display Panel - Функциональность (Клонан)

Дисплейная панель по своей сути и простейшему назначению — это всего лишь способ отображения сообщений игрокам, поэтому она стала естественной первой функцией.

Показ сообщений

В графическом интерфейсе дисплейной панели игроки могут ввести сообщение, которое позже будет показано. По умолчанию сообщение отображается только при наведении курсора на дисплейную панель игроком.
,Factorio,Игры,Factorio Dev Diary
,Factorio,Игры,Factorio Dev Diary
Однако иногда нам нужно, чтобы информация была видна постоянно, поэтому мы добавили опцию, позволяющую сделать текст видимым всегда (в альтернативном режиме).
Для коротких сообщений это нормально, но мы не можем просто спамить целыми абзацами на экране игрока все время. Поэтому мы сделали так, что будет отображаться только первая строка текста, а полное сообщение будет появляться только при наведении.
jîî jîî jî'Jîî /îfjfjfjfjrjî'jfjf'j:
mm

fT-- yr -	*
rvd	pCjjagg
- «V«a.
Su
A-O
15 Modules - don't touch
if
IfcJS
£2
r , | * « »1
JS?>,Factorio,Игры,Factorio Dev Diary
Modules - don't touch
i ; t.;	'
-— ---------— | t
Every time I come ba'ckto base, all
the modules are gone.
b:j	?nJ * ,j tr,j
Seriously, stop stealing them! It's beyond frustrating. I put them in the^chest for a reason.
ton,Factorio,Игры,Factorio Dev Diary

Показ значков

Затем нам показалось само собой разумеющимся, что мы можем задать какой ни будь значок для показа. Это не требует никаких объяснений, вы выбираете значок, и он рисуется на сущности.
Однако, мы пошли еще дальше, добавив опцию «Показать на карте», которая выводит использование экранных панелей на новый уровень.
,Factorio,Игры,Factorio Dev Diary
,Factorio,Игры,Factorio Dev Diary
Нажатие на значок на карте открывает указатель для легкого редактирования.
Это очень похоже на систему пользовательских тегов, но не требует ручного управления при добавлении или удалении части вашего завода. И, конечно, Коварекс заставил это работать с новыми параметризованными чертежами, так что штамповка стандартного дизайна будет иметь панель отображения с правильным значком и с идеальным выравниванием.

Подключение к коммутационной сети

Подключение дисплейной панели к логической сети открывает целый ящик пандоры. Изначально мы не знали, как это сделать - ввод текста с помощью логики? Логическая сеть не так работает.
Поэтому мы остановились на простой системе:
Вы указываете список сообщений, каждое из которых имеет свое собственное условие.
- Список оценивается сверху вниз (их можно перетаскивать, чтобы изменить порядок).
- Отображается первое сообщение, которое соответствует условию.

Мы также добавили функцию использования «Любого сигнала» в качестве подстановочного знака для установки значка, чтобы вы могли создавать динамические дисплеи комбинаторов.
Масив комбинаторов выбирает рецепт для всех дробилок, а на панели дисплея отображается текущий выходной сигнал.
Мы довольно часто использовали дисплейные панели в наших офисных LAN-вечеринках, они отлично подходят для многопользовательской игры, где общение является ключевым фактором. Display panels будут доступны бесплатно как часть обновления базовой игры 2.0.

Исправления захвата инсертера (Твинсен)

Играя с новыми быстрыми транспортными лентами, я заметил проблему. В некоторых ситуациях даже самые быстрые манипуляторы не могли забрать предметы с лент. Они почти дотягивались до них, но промахивались. Похожая проблема, которая всегда присутствовала в игре, — это твёрдотопливные манипуляторы, которые не успевали забрать топливо для себя с экспресс-транспортных лент. И лично я находил эту проблему крайне раздражающей и не имеющей никакой игровой пользы.
Быстрые манипуляторы не могут справится с зеленым конвейером. Видео на скорости 0,5x.
Твердотопливные манипуляторы не могут ухватить топливо с экспресс-транспортной ленты.
Видео на скорости 0,5x.
Если посмотреть на них в замедленном темпе, особенно в примере с твердотопливным, то кажется, что рука прекрасно дотягивается до предметов, поэтому она должна просто поднять их, если они достаточно близко. Реализация простого захвата должна исправить обе проблемы. Но.. как обычно, все было не так просто.
Манипуляторы имеют 2 независимые скорости движения:
Скорость вращения — насколько быстро вращается рука вокруг своей оси.
- Скорость вытягивания — насколько быстро вытягивается и втягивается рука.
После некоторой отладки выяснилось, что скорость выдвижения была слишком медленной: рука поворачивалась на правильный угол, но кисти требовалось много времени, чтобы достичь нужной длины. Поэтому нам пришлось отладить эту скорость. Я также улучшил логику привязки, так что манипуляторы будут лучше реагировать на предмет, когда он достаточно близко.
С изменениями обе проблемы исправлены. Вставки теперь более последовательны, менее склонны к досадным сбоям, а также дают им небольшой бафф при снятии с транспортных лент.
Здравствуйте!
Сегодня мы хотим поделиться с вами интересными новостями!

Factorio: Space Age - Дата выхода

Мы планируем выпустить дополнение Factorio: Space Age 21 октября 2024 года . Причина выбора этой даты в том, что после летних каникул у нас будет достаточно времени для доработки релиза, а также останется достаточно времени после него, если нам понадобится выпустить исправления ошибок до рождественских праздников.
Цена дополнения «Космическая эра» составит 35 долларов США, столько же, сколько и текущая базовая игра.
Вы можете добавить игру в список желаний в Steam .

Factorio: Космическая эра - Содержание

Factorio: Space Age продолжает путешествие игрока после запуска ракет в космос. Открывайте новые миры с уникальными испытаниями, используйте их новые ресурсы для получения передовых технологических достижений и управляйте своим флотом межпланетных космических платформ.

Космические платформы - FFF-381

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

Вулканус - FFF-386 , FFF-387

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

Фулгора - FFF-398 , FFF-399

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

Глеба - FFF-413 , FFF-414

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

Повышенные рельсы - FFF-378

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

Качество - FFF-375

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

И дальше...

На этом путешествие не заканчивается, в Factorio: Space Age вас ждет еще много интересного, и еще многое предстоит раскрыть:
- Музыка космической эры - каждая новая планета сопровождается уникальным саундтреком чешского композитора Петра Вайсара - FFF-406
- Новые враги и средства защиты. Некоторые новые планеты населены уникальными и опасными существами, от которых вам придется защищаться.
- Загадочная 5-я планета — обещает самый уникальный геймплей, но она остается окутанной тайной. Это самая дальняя планета от солнца, поэтому она темная и холодная.

Факторио 2.0

Но это еще не все. Factorio: Space Age также совпадет с выпуском Factorio версии 2.0, которая будет бесплатным обновлением для всех пользователей.
Версия 2.0 имеет широкий спектр игровых изменений и улучшений:
- Более умные рабочие роботы - FFF-374
- Новые рельсы - FFF-377
- Удаленный просмотр - FFF-380
- Улучшения комбинаторной и схемной сети - FFF-384 , FFF-405
- Улучшения управления поездом - FFF-389 , FFF-395
- Новая жидкостная система - FFF-416
- Переработанная генерация ландшафта Nauvis - FFF-401
И еще больше, каждую новую неделю!

Получайте последние обновления

Если вы хотите быть в курсе последних новостей, обязательно посетите наш еженедельный блог о разработке или подпишитесь на нашу рассылку .
Вы также можете добавить дополнение Factorio: Space Age в список желаний в Steam , чтобы получить уведомление о его выходе.
,Facto,Factorio Dev Diary
Привет,
Мы обычно показываем готовые вещи в пятничных фактах, но лично мне всегда нравилось заглянуть за кулисы и увидеть там (временный) беспорядок. Это побудило меня сделать небольшой обзор того, как с моей точки зрения ощущается общая разработка дополнения. Если вы похожи на меня, возможно, вы это оцените.
Наша история началась в феврале 2021 года с FFF-365, когда мы объявили о планах по созданию пакета расширения.

Первый год - 2021 - Создание скелета

Во-первых, мы сосредоточились на подборе персонала, и команда увеличилась вдвое почти до 30 человек, при этом заметно расширился отдел GFX с 2 до 8 человек.

Создание плана – вертикальный срез

Первым и очевидным шагом было множество долгих обсуждений плана всего расширения на высоком уровне. Поскольку мы хотели повторить стиль игры, мы очень часто использовали выражение «вертикальный срез». Вертикальный срез должен был стать самым простым способом прохождения расширения, чтобы мы могли начать улучшать его на основе отзывов. Ретроспективно это была очень хорошая идея.
Мы наняли Эренделя, и он был рад помочь с частью дизайна игры. Благодаря своему огромному опыту в моддинге и беспрецедентной производительности он всегда мог очень быстро предоставить полностью рабочий проект планеты и ее механики. Если это было возможно, он часто писал часть проекта механики с помощью скриптов Lua, чтобы иметь тестируемую версию до того, как она будет принята и должным образом интегрирована в движок на C++.
Черновики Эарендела всегда были чрезмерными, когда дело касалось сложности игрового процесса, поэтому мы обычно начинали с упрощения его до половины исходного размера, а затем снова наполовину... но гораздо проще отказаться от прототипа, оставив лучшие моменты, а не создавать что-то с нуля.

Планеты

Следующим делом были планеты, поскольку большинство других вещей так или иначе связаны с ними. Класс "Planet" был создан 2021-01-26, так что это было за несколько дней до анонса первого пакета расширения. Мы всегда знали, что хотим иметь расширение, основанное на посещении разных планет, поэтому поддержка независимых поверхностей уже много лет была в коде игры. Поскольку моды часто использовали несколько поверхностей, она уже была достаточно протестирована. Это избавило нас от многих проблем, но все еще оставалось много вещей, которые нужно было настроить, чтобы независимые поверхности и планеты работали достаточно хорошо в соответствии с нашими стандартами.
В это время мы приняли решение, что планеты будут основаны на прототипах и тесно связаны с прогрессом, а не исследованием псевдо-бесконечных случайно сгенерированных карт.
Итак, мы просто определились с основной темой каждой из планет и начали закладывать необходимую для этого основу, например, возможность указать определенные условия создания определенных рецептов, различные свойства планет, влияющие на такие вещи, как мощность солнечных батарей, и также поддержка пользовательского интерфейса, позволяющая комфортно переключаться между местами.

Космические платформы

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

Надземные рельсы ( FFF-378 )

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

Спойлеры ( FFF-414 )

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

Второй год – 2022 – Первый играбельный прототип

Спустя год (!), у нас появилось еще одно обновление FFF-367 , краткая версия звучит так: "Большие части игры играбельны, и мы приближаемся к состоянию, когда можно провести тестирование от начала до конца", с оговоркой "в самом минималистичном виде".

Первое прохождение

Эта ставка было верным, так как именно в это время я начал первую смелую попытку пройти все расширение от начала до конца.
Прохождение заняло 7 месяцев, и в начале этого пути не было возможности на самом деле играть от начала до конца. Но идея заключалась в том, чтобы пытаться продвигаться вперед, заполняя все пробелы между отдельными функциональными частями контента по мере продвижения в игре.
Когда я начал, часть с планетарной логистикой еще не работала, поэтому мне пришлось расширять фабрику и тестировать другие вещи (например, возвышенные рельсы и качество), прежде чем отправиться в космос.
Поскольку я построил более крупные объекты на Нависе и хотел больше тестировать возвышенные рельсы и систему поездов, я был более мотивирован улучшить её. В это время я разработал прерывания поездов, а Клонан создал группы поездов ( FFF-389 ).

Космическая логистика

Первая версия космической логистики была абсолютно ужасной в использовании, так как на космической платформе было несколько несвязанных зданий, называемых катапультами космической платформы.
Каждый эжектор представлял собой отдельное здание с самостоятельным инвентарем и полунезависимыми запросами.
Работать с этим было мучительно, подобно тому, как происходила доставка вещей в космос, что описано позже в FFF-381. Это было коряво, но, тем не менее, от этого уже можно было отталкиваться.
Смотри, теперь у двигателей есть «пламя»!

Продвижение по планетам

Вулканус была первой планетой для тестирования, так как у неё не было очень специфических технических требований по сравнению с другими планетами (Глеба с её сельским хозяйством и Фулгора с молниями ещё не были готовы).
Базовый Vulcanus с временной графикой приподнятых рельсов.
Глеба была второй. Что касается посадочных площадок, то можно увидеть одну из проблем оригинальной конструкции, где каждая посадочная площадка индивидуально принимала какой-то груз из космоса. Это имело 3 основные проблемы:
1) Было очень неприятно обрабатывать каждый запрос по отдельности.
2) Поскольку посадочные площадки еще не были поставщиками логистических услуг, мы, как правило, повсюду использовали повторяющуюся схему «посадочная площадка → пассивный сундук поставщика».
3) Поскольку посадочные площадки можно было построить где угодно, было слишком банально иметь возможность сбрасывать предметы из космоса куда угодно. Это одна из причин, почему теперь у нас есть только одна расширяемая посадочная площадка на планету.
Простая Глеба с ранними посадочными площадками и слишком большим количеством пригодных для сбора урожая видов растений.
Фулгора была третьей планетой, которую я посетил, с ее оригинальным дизайном, похожим на дизайн базовой игры, и именно с этого места я начал относиться к ней скептически...(подробнее позже).
Простая Fulgora с графикой временных приподнятых рельсов и ванильной добычей руды.
Короче говоря, 7 месяцев спустя, проведя в сохранении 370 часов (!), я наконец смог добраться до конечного экрана.
Вскоре после этого у нас была вечеринка в офисе по локальной сети, где мы попытались провести многопользовательское прохождение, чтобы получить больше отзывов и также протестировать многопользовательский режим. Мы играли с понедельника по пятницу, и мы едва добрались до последней планеты, совершенно измотанные в последний день, так и не сумев закончить игру до конца.

Первая итерация и вывод

Прохождение дополнения в первый раз было одновременно и хорошо, и плохо.
Хорошо, потому что теперь у нас была база, и с этого момента ситуация могла стать только лучше. Графика, звук и музыка будут обновлены. Пользовательский интерфейс новых систем будет улучшен, а игра в целом станет сбалансированной.
Плохо, потому что у меня были серьезные сомнения относительно концепции пакета расширения, в основном изложенной в FFF-399 .
Было огромное количество проблем, и хотя подавляющее большинство имело четкое решение, некоторые из них были другими:
- Это было слишком долго (370 часов — это слишком много, даже с учетом первоначальных трудностей).
- Это было слишком однообразно (и речь идет даже не о Фульгоре).
- Некоторые механики оказались слишком непроработанными/раздражающими для использования при масштабировании (логистика космической платформы, поезда и т. д.).
- Масштаб всех дел, которые нужно было сделать, был слишком велик, и зачастую это казалось слишком монотонным.
В заключение был сформулирован очень конкретный набор рекомендаций для остальной команды разработчиков:
- Прогресс игры должен быть быстрее. В основном за счет снижения стоимости вещей, сокращения ненужных этапов рецептов и повышения качества геймплея.
- Геймплей, ориентированный на конкретную планету, должен быть более отчетливым.
Именно тогда были внесены изменения в планеты. Вулканус был изменен так, чтобы получать основные ресурсы из лавы, чтобы избежать добычи меди, железа и камня, а количество растений, собираемых на Глебе, было уменьшено с 12(!) до 2. Мы также разрешили использование специфичных для планет производящих строений для экспорта в другие места, что значительно увеличило мотивацию к расширению, а также сделало прогресс быстрее и более вознаграждающим, так как эти машины очень мощные.

Третий год - 2023 - Усердие

Я снова прошел игру от начала до конца, это заняло 240 часов, что все еще слишком много. Но нужно учитывать, что я сильно увеличил размер фабрики, пытаясь получить почти все в легендарном качестве, с целью 1 миллиона науки в минуту (SPM).
Я еще не достиг 1 миллиона SPM, но, возможно, достигну этого до релиза :).
В целом игра получилась короче оригинальных 370 часов и, что самое главное, она оказалась более увлекательной.
Большая часть работы, вероятно, ушла на тысячи мелочей, но позвольте мне назвать несколько более существенных изменений.

Объяснение новых вещей

Мы поняли, что нам нужен лучший способ понять новые части игры, поэтому была создана Факториопедия ( FFF-397 ).
Поскольку механика стабилизировалась, мы начали добавлять в нее улучшения и всякие мелочи, улучшая одновременно с этим общие возможности.
Теперь мы можем показывать взаимодействия с графическим интерфейсом в симуляциях (мне кажется классным, что у нас на самом деле есть два полностью независимых активных состояния пользовательского интерфейса в игре: одно в симуляции и одно, управляемое игроком). Мы также создали гораздо более мощную систему триггеров пропуска и пересмотрели практически все триггеры подсказок, чтобы быть более точными.

Геймплей и интерфейс

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

Ловец астероидов

Завершение работы над ловцом астероидов ( FFF-385 ) было большим делом, главным образом потому, что мы очень осторожно относились к его принципу работы, поскольку его работа была чрезвычайно слабой с точки зрения производительности.
Увидеть это в игре стало одной из важнейших вех в восприятии платформы.

Графика

Внешний вид планет приобретал более официальную форму.
Космическая платформа больше не представляла собой просто серые квадраты ( FFF-381 ).
Были переработаны звуки многих новых эффектов, а также много старых вещей.
Большинство машин стали полностью анимированными окончательными версиями того, чем они должны были быть.
Это также время, когда мы возобновили еженедельный FFF, так как чувствовали, что у нас есть достаточно, чтобы делится этим еженедельно до релиза.
Это помогало нас мотивировать и закончить работу.

Год четвёртый – 2024 – Всё складывается

На четвёртом году разработки мы завершили вторую итерацию игрового дизайна.
Все больше и больше членов команды также продвигались вперед и завершали свои прохождения, которые становились все более и более гладкими.
После этого мы сделали еще больше сокращений, в результате чего второе прохождение LAN-группы, которое мы планировали неделю назад, было завершено на четвертый день, даже не слишком стараясь ускорить прохождение.
Это был явный признак того, что следование рекомендациям, которые мы разработали 2 года назад, принесло результаты. И игру можно было закончить не только быстрее, но и сам геймплей стал интересней.
Основная проблема заключалась в том, что в последний день мы не могли продолжать многопользовательскую игру со всеми подключенными, имея 60 ИБП, нам пришлось замедлить скорость игры до 85%, чтобы компьютеры всех могли успевать.

Текущее состояние

Изменения жидкости ( FFF-416 ) в сочетании с литейным цехом ( FFF-387 ) и тот факт, что поезда с расплавленным металлом имеют гораздо более высокую плотность предметов по сравнению с железными/медными пластинами, позволяют сделать сетап финальной игры сильно отличающимися от лейтгейма базовой игры.
Мне нравится, что литейная сама по себе очень сильна и может изменить подход к планировке, но она работает хорошо только до тех пор, пока у вас есть постоянный поток кальцита, поступающий с Вулкануса, поскольку это единственная планета, где вы можете добывать его.
Это пример того, как решение проблем типа «почему нет железа» может привести вас на другую планету. И я люблю это!
Благодаря использованию кальцита, высокой производительности горнодобывающей промышленности и литейным заводам становится очень эффективно превратить горнодобывающие аванпосты напрямую в экспортеров расплавленного металла.
Литейные и электромагнитные заводы — хорошие друзья в эндшпиле.
Обратите внимание, что каждый из выходов — это 8 ( 
FFF-393 ) зеленых стак-конвейеров, так что это эквивалентно 85,3 полностью загруженным синим конвейерам производства.
Это сила легендарного качества.
Есть еще одно здание, обычно совмещаемое с литейным и электромагнитным заводами, о котором будет рассказано позже.
Повышенные темпы производства могут свести с ума ваши проекты железнодорожных перекрёстков.
Малый размер стака угля и камня в сочетании с невозможностью их плавления делает их переработку в некотором роде особенной.
Поскольку вы не можете использовать громоздкие стандартные чертежи развязок на ранней стадии игры на Вулканусе, в сочетании со сложной местностью, выходят уникальные аванпосты.
Последняя картинка может дать вам представление о возможном масштабе игры в самом конце.
Эти стековые манипуляторы(которые раньше были пакетными манипуляторами) массово транспортируются на другую планету в качестве ингредиента для создания легендарных стековых манипуляторов( 
FFF-393 ).

Третья итерация

Третья итерация происходит прямо сейчас. Основное внимание уделяется огромному количеству отзывов, которые мы получили с последней LAN-вечеринки.
Она будет сосредоточена на 2 основных категориях:
- Ошибки, улучшения геймплея и балансировка.
- Оптимизации. В космическую эру завод становится все больше, и нам нужно применить программистскую магию, чтобы все работало гладко.
Поскольку дела стабилизируются и я начинаю быть вполне доволен состоянием игры, мы готовы назвать конкретную дату выхода Space Age...
О которой мы сообщим вам на следующей неделе :)
,Factorio,Игры,Factorio Dev Diary
Привет!
Берите с собой лучшую смазку, потому что пришло время поговорить о жидкостях!

Переломный момент

Ни для кого не секрет, что гибкая система Factorio непредсказуема, не интуитивна и порой разочаровывает. Пропускная способность трубы уменьшается с расстоянием с непостоянной скоростью, поэтому единственный способ достоверно узнать, сколько жидкости вы можете протолкнуть через трубу, — это обратиться к таблице на вики . Кроме того, пропускная способность может варьироваться в зависимости от порядка построения труб. Играть с этой системой крайне неудобно.
Было много попыток переписать жидкостную систему, но все они по той или иной причине закончились неудачей. Существующий алгоритм довольно быстр и достаточно хорошо работает для стандартного ванильного игрового процесса, и мы постарались его не трогать, насколько это возможно. Однако во время тестирования Space Age стало ясно, что существующая система больше не справляется со своей задачей. Масштабирование производства, обеспечиваемое новыми машинами и качеством, поставило алгоритм потока на колени.
Почему это не работает!?
Пытаясь избежать полной перезаписи, мы сначала попробовали увеличить пропускную способность за счет увеличения объема канала. Это «решило» основную проблему низкой пропускной способности за счет значительного увеличения размеров буфера. Резервуары для хранения стали практически бесполезными, а оборонительные стены с огнеметными турелями вбирали десятки тысяч единиц жидкости, высасывая базы досуха. В конечном итоге мы не смогли прийти к соглашению о том, как действовать; переписывание было сочтено слишком сложным, но ни у кого не было идей получше. Вопрос был вновь отложен на потом.
Я был крайне недоволен этим выводом. Трюк с увеличенной емкостью был скорее костылем, позволяющим скрыть проблему, чем четко сформулированным решением. Поскольку проще попросить прощения, чем разрешения, я рискнул и начал переписывать систему жидкости сам.

Новый алгоритм

Во время одного из обсуждений жидкостей Рсединг предложил алгоритм, очень близкий к тому, с которым он играл несколько раз, — алгоритм из мода Minecraft Thermal Expansion от команды CoFH:
Трубы(в том числе и подземные) и резервуары для хранения объединены в жидкостные «сегменты».
- Каждый сегмент наследует свой объем от составляющих его ячеек для жидкости и может содержать одну жидкость.
- Машины могут подавать жидкость в сегмент с неограниченной скоростью и могут забирать жидкость из сегмента со скоростью, пропорциональной тому, насколько заполнен сегмент. Другими словами, если сегмент заполнен наполовину, то скорость вытягивания равна половине максимальной.
- В частном случае насосы могут работать с большей скоростью, если они подключены непосредственно к резервуару для хранения.
Больше нет реалистичного «течения» жидкости по трубам; жидкость, подаваемая в сегмент, будет немедленно доступна в любой точке сегмента. Это «решение типа ядерной электрической сети», которое обсуждалось в предыдущих FFF. В результате каналы «просто работают», и вам практически не придется беспокоиться о пропускной способности.
It just works™

Демонстрации

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

Длинные трубопроводы

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

Развязки

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

Входное голодание

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

Насосы

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

Расстановки для эндшпиля

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

Веселье важнее реализма

Новая система представляет собой довольно большой шаг назад с точки зрения «реализма» моделирования жидкости в Factorio. Но как гейм-дизайнеру вам всегда приходится искать компромисс между тем, что имеет смысл в реальном мире, и тем, что интересно для игры. Сборка машин отвлекает от огромного объема работы, которая уходит на реальную автоматизацию, и помещает ее в аккуратную маленькую коробочку. Аналогичным образом, новая система жидкости обеспечивает поведение, которое вы ожидаете от трубопровода, абстрагируя при этом все детали реального потока жидкости.
Это очень интересная система для игры. Эта система открывает много интересных возможностей, которые мы не предсказывали, и некоторыми из наших историй мы поделимся в будущих FFF. Я также могу подробно рассказать об архитектуре этой новой системы и о том, как я подошел к рефакторингу, в другой раз.
Есть несколько деталей, над которыми еще предстоит работать, но в целом новая система работает очень хорошо. Мы не можем дождаться, когда вы это протестируете!
,Factorio Dev Diary,Factorio,Игры
Здравствуйте!
Несмотря на то, что при разработке версии 2.0 много времени было потрачено на новые функции и качество жизни, мы по-прежнему заботимся о мелких деталях и технических улучшениях.

Детерминированная многопоточность — это сложно

Недавно нам сообщили об ошибке рассинхронизации, связанной с API моддинга и несколькими компьютерами под управлением Windows и Linux, которые использовал игрок. Моим первым инстинктом было обвинить разработчика мода в том, что он сделал что-то не так, но за эти годы я видел достаточно отчетов об ошибках, чтобы знать, что отклонять один из них без предварительного расследования — плохая идея и отличный способ сесть в лужу.
Воспроизвести рассинхронизацию мне не удалось, но плеер смог с легкостью. Сначала я подумал, что это проблема Windows и Linux (у нас было много таких), но потом плеер смог воспроизвести ее с Linux на обоих компьютерах. Затем я подумал, что это аппаратная проблема: мы видели немало неисправных компьютеров, которые просто не делают того, что должны. Убедить кого-то, что его оборудование сломано, сложно и в лучшем случае отнимает много времени.
После нескольких неудачных попыток воспроизвести проблему на моем одном компьютере Боскид, используя несколько своих компьютеров, смог это сделать. Я думаю, что возможность воспроизводить ошибки локально занимает около 90-95% времени, потраченного на исправление обнаруженных ошибок. Воспроизведя проблему по требованию, Боскид смог сузить ее до того факта, что компьютеры имели разное количество ядер ЦП. Благодаря этим новообретенным знаниям он смог провести тест, который можно было запустить на моем единственном компьютере, чтобы воспроизвести рассинхронизацию, искусственно притворившись, что у меня меньше ядер процессора, чем на самом деле.
В конечном итоге проблема заключалась в том, что нужно было собрать вместе 4 разных движущихся части, чтобы выявить проблему детерминизма потоков, которая присутствовала в игре с тех пор, как я добавил ее туда 22 июля 2017 года.
1) Моду необходимо было прослушивать событие, генерируемое чанком, и менять тайлы на чанке, когда оно происходило.
2) Моду необходимо было запросить создание нескольких фрагментов.
3) Моду необходимо было принудительно сгенерировать все запрошенные фрагменты прямо сейчас .
4) Игру необходимо было запустить на двух компьютерах с разным количеством ядер процессора.
Логика генерации фрагментов «прямо сейчас» будет пытаться использовать все доступные ядра ЦП, но это было сделано таким образом, что количество ядер - в сочетании с другими движущимися частями - слегка меняло результаты генерации фрагментов.
Исправление оказалось не таким уж сложным в реализации, и оно появится в версии 2.0, но оно просто показывает, что многопоточность — это сложная задача, а детерминированная многопоточность тем более.

Многопользовательская игра с автопаузой

У нас есть особенность выделенных серверов: когда последний игрок отключается, сервер автоматически приостанавливается. Это прекрасно работает и означает, что вы можете оставить выделенный сервер включенным, не беспокоясь о том, что кусаки съедят вашу базу, когда вы уйдете. За исключением некоторых крайних случаев, с которыми нам так и не удалось справиться (до сих пор).
Случай 1: Когда вы присоединяетесь к автоматически приостановленному серверу, он мгновенно возобновляет работу, даже если вы не полностью загрузились в игру. Оказывается, решить эту проблему было невероятно просто, но по какой-то причине с годами она не ушла в прошлое. В версии 2.0 автоматически приостановленные серверы будут оставаться приостановленными до тех пор, пока хотя бы один игрок полностью не загрузится в игру.
Случай 2: Присоединяющимся игрокам необходимо не отставать от текущей игры. Это отлично работает для «обычных» игр и позволяет существующим игрокам продолжать игру, не дожидаясь присоединения игроков. Но игроки сталкиваются с проблемами, связанными с гораздо большими картами или медленным подключением к Интернету. Для присоединения кого-либо может потребоваться 1, 2 или несколько минут, чтобы загрузиться и полностью подключиться к серверу. В версии 2.0 мы добавили опцию «автоматическая пауза, когда игрок присоединяется», которая работает именно так, как указано.

Более быстрые задачи строительных роботов

Такое ощущение, что каждую неделю кто-то спрашивает: «Почему мои строительные роботы не работают?» и на скриншоте, который они предоставляют, есть небольшое предупреждение, показывающее «600 рабочих мест, не хватает материалов/роботов». Эта проблема существовала с самого начала появления роботов, и до сих пор у нас нет хорошего решения для нее.
Проблема в том, что, учитывая задачу, которую должны выполнить роботы-конструкторы, игре необходимо найти лучшего робота из логистической сети, который находится в пределах досягаемости, чтобы выполнить эту задачу. Проверка того, находится ли эта логистическая сеть в радиусе действия объекта, равна O(Roboport-Count). Мы не контролируем, насколько медленным это будет, потому что игрок может построить 1 Робопорт, или 100 000, или столько, сколько сможет вместить его компьютер. Поэтому нам нужно убедиться, что эта операция не приводит к остановке игры во время ее работы. Мы делаем это, обрабатывая всего несколько задач строительных роботов за каждый такт.
В версии 1.1 игра будет проверять строительные работы 3 раза за каждое обновление. Если ему не удастся найти робота, он остановится для текущего обновления. Оповещения о неудачных попытках длятся 10 секунд. Таким образом, при 60 обновлениях в секунду и 10 секундах на каждое оповещение это означает, что будет создано 600 оповещений до истечения срока действия первого. Вот откуда берется волшебное количество предупреждений «600 рабочих мест, не хватает материалов/роботов».
Так работало с тех пор, как я работал над Factorio, и, скорее всего, так будет продолжаться на каком-то базовом уровне. Мы не можем просто увеличивать количество задач, проверяемых при каждом обновлении, потому что знаем, что работа потенциально замедлится тем больше, чем больше робопортов строит игрок.
Ранее в этом году кто-то ( сообщение на форуме ) снова столкнулся с этой проблемой, но решил «решить» ее самостоятельно, сделав то, что, как мы сказали, мы не можем сделать: «запустить проверенные задачи для каждого обновления», за исключением того, что они перешли с 1 на каждое обновление. до 374. Также построено 36 815 роботопортов. Как и предполагалось, это было медленно.
Но это заставило меня задуматься: а что, если бы я мог сделать медленную часть намного быстрее ? Хотите быстрее изменить алгоритм? Вдохновение пришло ко мне, когда я вспомнил, что в игре уже есть набор логики, позволяющей взять зоны логистики и строительства роботопорта и вычислить полученное объединение прямоугольников. Проще говоря, он создает красивый набор дедуплицированных прямоугольников, которые покрывают общую площадь всех роботопортов. Мы используем это для рендеринга, чтобы избежать перерисовки, когда роботопорты находятся рядом друг с другом.
Это, в сочетании с сортировкой полученных прямоугольников, означало, что я мог выполнить простой двоичный поиск, чтобы проверить, находится ли данная задача в пределах сети. В конце концов проверка изменилась с O(N) на 36 815 роботопортах до O(N) на 900~ прямоугольных объединенных областях и до O(logN) на 900~ прямоугольных объединенных областях.
Время проверки «есть ли оно в этой сети» из дорогого превратилось в практически незаметное. Благодаря этому ускорению я смог увеличить скорость проверки задач для версии 2.0 и, надеюсь, решить эту проблему.
Как всегда, сообщайте свои мысли в привычных местах.
Форум Редит
,Factorio,Игры,Factorio Dev Diary
Привет! На прошлой неделе вы видели, как выглядит Глеба, а теперь пора узнать, что там можно делать.
Так как это биологическая планета, полная жизни, логично ожидать, что наш инженер собирается что-то с этого собрать.
У нас уже есть способы сбора природных ресурсов, в частности деревьев. На Нависе мы либо просто рубим их топором, либо позже наши строительные роботы проведут маленький миролюбивый экстерминатус леса.
Фрукты обрабатываются на сборочной машине, в результате чего получаются семена и пюре.
Однако эти инструменты не совсем готовы к тому, чтобы стать частью цепочки массового производства на наших заводах...
Оба метода Наувиса запускаются вручную, поэтому они не являются лучшими для автоматизации. Да и деревья не вырастают снова, поэтому после того, как участок был вырублен, вам нужно  переходить на следующий.

Агрикультурная башня

Агрикультурная башня — это новая машина, доступная на Глебе. Она автоматически собирает деревья в пределах своего радиуса действия.
На Глебе есть два растения, которые особенно интересны тем, что их можно не просто собирать, но и пересаживать у башни. Сегодня мы рассмотрим одно из них.
Сельскохозяйственная башня, сбор урожая и повторная посадка деревьев. Многие вещи, которые вы видите здесь, могут быть изменены.
Сбор урожая дает плоды, которые затем можно переработать на сборочной машине в полезные продукты – и семена.
Затем семена можно положить обратно в агрикультурную башню, чтобы засеять новые растения. Растение со временем вырастет, и когда оно созреет, агрикультурная башня автоматически соберет его.
Каждое новое растение высаживается с промежутком в три клетки друг от друга, создавая квадратный узор. Это делает весь процесс более искусственным, похожим на плантацию, а не на дикую природу.
Сельскохозяйственные растения можно высаживать только на очень специфических клетках, так что придется учитывать некоторые экологические условия. Но, как вы можете догадаться, это Factorio, так что мы, конечно же, позволим вам разрушить эту среду с помощью специальных почв, похожих на насыпи, которые вы сможете изучить с помощью исследования.
Крупномасштабное сельское хозяйство с использованием искусственной почвы.

Биокамера

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

Порча

Все это время вы, вероятно, задаетесь вопросом (или уже публикуете комент об этом, не дочитав до конца), что за странные белые линии на изображениях выше.
Теперь мы подходим к тому, что делает Глебу по-настоящему особенной. Когда фрукты собираются или большинство других биологических продуктов производится, они со временем портятся, превращаясь в новый предмет, который мы называем Порча.
,Factorio,Игры,Factorio Dev Diary
Этот процесс неизбежен и не может быть отложен, однако время порчи разных предметов разное: от примерно 2 часов до нескольких минут. Это означает, что есть способы контролировать механику и оптимизировать ее, чтобы в конечном итоге получить менее испорченный продукт.
Органические предметы со временем превращаются в порчу.
Причина, по которой вы оптимизируете продукт для лучшего качества, заключается в том, что результаты рецептов наследуют свежесть ингредиентов. Это означает, что если вы создадите продукт из испорченного на 30% ингредиента, продукт также будет испорчен на 30%.
Свежий салат из заплесневелой капусты сделать не выйдет.
По сути, портимые предметы следует воспринимать как временные, и и здесь начинает быть важна пропускная способность, тогда как буферизация запасов, напротив, совершенно бесполезна.
Когда мы рассматривали идею ограниченного срока жизни предметов, одним из первых вопросов было, должны ли они просто исчезнуть или превратиться во что-то. Если бы они просто исчезли, это было бы удобнее, так как вам не нужно было бы беспокоиться о грудах порчи, которые неизбежно накапливаются, но вы бы не знали, что что-то испортилось, поскольку не было бы никаких следов этого.
Вот почему существует порча, и у нас есть несколько способов избавиться от нее: вы можете сжечь ее, отправить в переработку или создать питательные вещества, которые уже наполовину испорчены.
Три примера избавления от порчи.
Чтобы эта механика не была чрезмерной и позволяла принимать осмысленные решения, есть некоторые предметы, свежесть которых не влияет на конечный продукт, поскольку конечный продукт не портится. С другой стороны, новые пакеты сельскохозяйственной науки портятся, что снижает их ценность для исследований, поэтому у вас будет стимул попытаться принести домой самые свежие научные пакеты, какие только сможете.
,Factorio,Игры,Factorio Dev Diary
Есть некоторые предметы и рецепты с портящимися ингредиентами, которые необходимо создавать на разных планетах, поэтому помимо оптимизации производственной цепочки также будет иметь смысл создать быструю космическую платформу для их доставки.
Основными инструментами для управления испорченными предметами являются устройства для вставки с новой возможностью определять приоритетность самых свежих или наиболее испорченных предметов при сборе из инвентаря и фильтровать порчу с помощью разделителей.

Дизайнерское путешествие

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

Заключение

В общем, мы уверены, что игровой процесс «Глебы» достаточно разный, чтобы быть интересным, но в то же время основан на достаточно схожих принципах, чтобы казаться знакомым и даже веселым!
Визуальные эффекты по-прежнему могут быть изменены вместе с улучшениями некоторых эффектов. Графика новых машин, которую вы можете увидеть здесь, исходит в основном от нашего обычного подозреваемого Эарендела в области концепт-арта, а Ежи отвечает за 3D-конвейер. Агрикультурная башня имеет очень длинную телескопическую стрелу, намного длиннее, чем любые другие ноги или руки, поэтому ее изготовление было очень технически сложным, как для Ежи, так и для Лу, ломающего себе голову кодом рисования. Биокамера была более простой, но Ежи отлично провел время со своими сумасшедшими симуляциями геометрических узлов.
Есть еще много деталей, которыми можно поделиться, но их будет легче усвоить, когда игра будет у вас в руках и/или в каком-нибудь более позднем FFF.
Как всегда, вынесите свою полуиспорченную рыбку на рынок мнений:
Форум Редит
,Factorio,Игры,Factorio Dev Diary

Введение(Albert)

Создать новый мир в Factorio относительно «легко», просто создайте новый набор тайлов для земли, добавьте несколько новых моделей деревьев, создайте кучу новых декоративных элементов, несколько декалей (необязательно), новый скин для скал ( опционально) и бац! Вы получите новую планету. Ну, честно говоря, вам также придется поиграть с алгоритмами генерации шума и авторазмещения ландшафта, поэкспериментировать с правильными LUT. Добавление нового шейдера тоже не повредит, если вы хотите добиться успеха.
Проблема достижения этого с такой упрощенной точки зрения заключается в опасности впасть в поверхностный автоматизм. Так что, вероятно, все ваши планеты в конечном итоге будут выглядеть одинаково, и разнится лишь цветом.
Глеба — единственная планета, на которой есть все необходимое для создания новой планеты, похожей на Наувис, в Факторио. Но она все же отличается на многих уровнях. Что делает Глебу особенной, по крайней мере для меня, так это то, как мы изменили основную концепцию планеты и особым образом подправили ключевые элементы, чтобы сделать ее более уникальной.
Прежде чем получить свое окончательное название, Глеба внутренне называлась «биологической планетой» , и очевидным направлением для этого была бы планета, похожая на джунгли. Это было бы хорошо для нового биома в Наувисе, но для экзотической планеты, никогда не исследованной и полной жизни (больше, чем когда-либо)... на этот раз нам нужно было что-то более инопланетное. Не слишком клешировано, экстравагантно и, по возможности, в новой цветовой палитре. Имеющую некоторую связь с реальностью Наувиса. Но в тоже время и отличаться от Наувиса. Уфф, окей!.
Итак, мы начали думать о микрокосме мира лишайников, грибов и водорослей под водой. Нечто, существующее в нашей реальности, во что уже можно поверить, ведь оно отвечает всем требованиям, упомянутым выше.
В этом видео мы постарались показать, что именно мы подразумеваем под внешним видом Глебы. Планета все еще находится в стадии разработки. Но лучше показать это сейчас, потому что нам нужно будет продолжать показывать элементы Глебы в будущих постах.
Карта была сделана вручную, но с реалистичным видением алгоритма авторазмещения и генерации карты. Используемые «деревья» представляют собой концепт-арты, используемые в качестве заполнителей. Скалы также являются заполнителями, некоторые наборы тайлов будут изменены, чтобы лучше их интегрировать. Некоторые безделушки будут добавлены и изменены. Цветокоррекция в большей или меньшей степени отсутствует, а шейдер дождя на переднем плане будет изменен.
Для планеты, полной жизни (больше, чем когда-либо!), сейчас она выглядит довольно статично, но мы планируем добавить еще несколько анимированных «вещей», чтобы действительно оживить этот опыт.
И вообще, мы намеренно избегаем показывать красную область планеты (посмотрите на карту на последних кадрах видео), которую пока рано показывать.
Это видео было бы на 55% хуже (а то и больше), если бы Петр не сочинил и не записал этот саундтрек для Глебы. Вы же помните нашего дорогого Петра, да? из FFF # 406 Музыка космической эры . Трек не совсем такой, каким он будет звучать во время игры, сейчас он доделывает некоторые ремиксы треков, чтобы они идеально соответствовали требованиям игрового процесса.
Теперь наш обычный галактический туроператор проведет нас через сложные нюансы природы биомов и мест обитания Глебы.

Добро пожаловать в Глебу(Earendel)

,Factorio,Игры,Factorio Dev Diary
Ваш спуск заканчивается тревожным всплеском. К счастью, вы не тонете. Шум вашей посадочной капсулы стихает и растворяется в успокаивающем шуме дождя. Люк открывается, открывая зеленый болотистый пейзаж, окутанный легким туманом. Воздух густой и влажный, а издалека доносятся приглушенные крики невидимых животных.
Вы покидаете свою капсулу и идете вброд по мелкой мутной бирюзовой воде. На поверхности плавает так много растительности и мусора, что дно трудно увидеть, хотя в большинстве мест оно едва достигает вашего колена. Такое ощущение, будто все, что находится под поверхностью, извивается под вами.
Из воды вырастают странные извилистые грибы, ветвясь и извиваясь, поднимаясь вверх, словно уродливые деревья. Похожие на волосы усики свисают с концов их тонких ветвей, лаская вас липкой слизью, когда вы пытаетесь пробраться под ними.
Вы поднимаетесь на берег, и хотя вы находитесь вне воды, это вряд ли можно назвать сушей. Влажная, эластичная земля хлюпает под ногами, словно оливковый жир.
Ландшафт покрыт запутанной сетью корневидного мицелия и густыми матами разнообразных разноцветных лишайников. Этот ковер со сложным переплетением является домом для самых разных крошечных животных, которые бегают по нему, чтобы избежать вашего взгляда. Предположительно, в основном это насекомые и земноводные, их щебетание и шипение сигнализируют о раздражении, когда вы приближаетесь.
В этой области преобладают грибные чашечки, которые улавливают дождь и создают свои собственные маленькие экосистемы. Многие из них меньше руки, но самые крупные из них представляют собой огромные воронковидные стволы из материала, похожего на кору: их структура пронизана дырами и кишит маленькими розовыми червяками.
Время от времени слизевик покрывает большую часть местности болезненно-жёлтой слизью. На её поверхности местами видны пузыри газа.
Поверхность начинает твердеть по мере того, как вы выходите из низин, становясь более похожей на губчатую кору. Формы растительности в этой области более тонкие и хрупкие. Обесцвеченные оттенки зелёного и сине-зелёного придают региону красивый, но призрачный вид.
Возвышающиеся стебли лишайников веерообразно расходятся на вершине, как полупрозрачный зонт, всегда разделяясь на 5 ветвей перед тем, как спустить вниз жёсткие жгучие листья.
Поднимаясь ещё выше, земля становится суше. В этой области постоянный дождь на планете сводится к лёгкому моросящему дождю. Грунтовые воды быстро впитываются в пористую поверхность, похожую на камень, делая это место первым с твёрдой почвой. При ближайшем рассмотрении земля оказывается гигантской слитой массой тёмно-серых строматолитов. Кажется, что каждая часть этого места живая.
Большие башни из бежевой губки тянутся к небу, фильтруя воздух и выпуская споры в лёгкий ветерок. Ярко-жёлтые образования, похожие на луковицы, вырываются из их пор возле вершины, почти как цветы, распускающиеся на солнце.
На другой стороне холма ландшафт сменяется осенними оттенками. Лишайниковые маты здесь имеют хрустящий оранжевый цвет. Земля пронзена множеством колючих лоз тёмного грибного мицелия, которые окружают и охраняют своё плодовое тело, свисающее на землю, как большая мягкая красная виноградина.
Самые большие грибы здесь имеют вздутые стволы, поддерживающие огромный надутый мешок со спорами. В большинстве случаев новые мешки растут поверх предыдущих, образуя неустойчивую стопку шаров, готовых к разрыву.
Дальнейший путь снова ведёт к более низкой местности, но здесь болотистые земли больше красные, чем зелёные. Нежные покровы полупрозрачного розового лишайника беспомощно валяются, как водоросли на берегу, их веерообразная форма искривлена в массу скользких морщин.
Толстый мягкий ковёр из розового и красного лишайника вздувается при наступании на него. Более бледные участки почти прозрачны, обнажая корневые системы под поверхностью. Здесь корневой мицелий выглядит больше как щупальца и губка.
Эта область кишит различными размерами трубчатых кораллов, стремящихся вылезти над поверхностью воды. Обитающие в воде экземпляры более яркие, а наземные выглядят более болезненно.
Вместе со звуком дождя вас постоянно сопровождали различные животные крики. Таинственные дальние вопли и звуки, когда-то создававшие фоновый шум, но теперь один из звуков заметно ближе. Источник его не виден, однако он вскоре разражается трубным воплем.
Мелкие существа, скрывающиеся в лишайниковых зарослях, внезапно замолкают.
Теперь слышен новый звук. Звук огромных волн, разбивающихся о берег, за которым следуют сотрясающие землю удары шагов… каждый раз всё громче и громче... топ.. тОп.. тОп.. тОП.. ТОП!
Как всегда, просматривайте другие отзывы и обрушивайте на нас свои мысли в обычных местах:
Форум Редит
,Factorio,Игры,Factorio Dev Diary
Здравствуйте!
Сегодня у нас для вас еще одна интересная порция фактов.

Повторы(StrangePan)

Возможность повтора действий требовалась с тех пор, как мы добавили функцию отмены. Добавление Redo(повтор) было одним из моих первых проектов в Wube, о котором я очень рад объявить уже давно. Теперь в дополнение к использованию CTRL+Z (или ⌘Z) для отмены порядка сборки, деконструкции или обновления вы можете использовать CTRL+Y (или ⌘⇧Z) для повторной отправки ранее отмененного заказа. Вы также можете использовать новый ярлык повтора на панели быстрого доступа. Это работает именно так, как вы ожидаете.
,Factorio,Игры,Factorio Dev Diary
Новый ярлык «Повторить» загорается, когда нужно что-то переделать, и отключается, когда переделывать нечего.

Отменить информацию и подтверждение(StrangePan)

Одна вещь, которая часто очень раздражает и разрушительна, — это отмена действий (иногда случайно). Либо отмена чего-то, что было сделано очень давно.
Для начала мы добавили всплывающее текстовое уведомление, которое появляется при использовании горячей клавиши отмены. Это дает вам некоторое представление о том, какого черта вы только что сделали.
Undo deconstruction of 33 entities Undo construction of ei ~ Substation Undo deconstruction of Substation Undo construction of Small electric pole,Factorio,Игры,Factorio Dev Diary
Кроме того, при попытке отменить действие, произошедшее более нескольких минут назад, появляется всплывающее диалоговое окно подтверждения. Чтобы по-настоящему объединить все это, Генхис добавил потрясающий визуальный предварительный просмотр, который показывает объекты, которые будут затронуты, выделяя объекты, которые нужно деконструировать, и показывая призраки объектов, которые нужно построить.
Еще одна вещь, которую мы обнаружили во время нашего игрового тестирования, — это то, что легко забыть, что у вас было в стеке отмены. Это особенно актуально в Space Age, где игроки постоянно используют Remote View, чтобы прыгать между планетами и космическими платформами. Поэтому мы добавили всплывающую подсказку к кнопкам быстрого доступа «Отменить» и «Повторить», которая точно описывает, что вы собираетесь отменить и на какой планете или космической платформе.

Отменить улучшения(StrangePan)

Отмена по своему общему назначению работает отлично, но есть одна серьезная проблема, которая остается на протяжении многих лет. Запись проекта и последующее использование «Отменить» на самом деле не отменяет все:
Рецепты, заданные чертежом, остаются.
- Созданные провода не удаляются.
- Вращения не восстанавливаются в прежнем направлении.
- Фильтры/запросы не отменяются.
Это представляет собой проблему, поскольку одна из аксиом отмены действий заключается в том, что «все, что вы сделаете, будет отменено». Очистка потерянного чертежа должна «просто работать» с отменой. Итак, приступим к работе.

Отменить проводное соединение

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

Отменить настройки объекта

Тобиас добавил возможность отмены настроек объекта. Когда вы используете SHIFT + щелчок правой кнопкой мыши, чтобы скопировать настройки объекта, и SHIFT + щелчок левой кнопкой мыши, чтобы вставить их в другой объект, это действие также помещается в стек отмены (и стека повтора).
Это также относится к настройкам, скопированным при размещении чертежа поверх объектов, поэтому еще одна проблема с чертежом исключена из списка.

Отменить поворот чертежей

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

Заключение

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

Задержка вождения автомобиля(Lou)

У любого, кто имел сомнительное удовольствие от вождения автомобиля в мультиплеере со значительной задержкой, наверняка после прочтения названия сердце участилось на 100мс :).
Для остальных позвольте мне описать проблему: объезжать препятствия в Factorio достаточно сложно, делать это с задержкой реакции вашего автомобиля на ваши действия еще сложнее, особенно если вы хотите ехать быстро (что обычно и является причиной для вождения в первую очередь).
Вождение в 1.1 с задержкой 30 тиков (500 мс при 60 ИБП). Клянусь, я был трезв.
Так что, буквально занимаясь слаломом на боевом танке, было бы неплохо не создавать ощущения, будто это происходит на катке, верно?
Основная идея такая же, как и у всех других функций сокрытия задержки — предсказать будущее состояние игры на основе доступной информации и показать игроку предсказанное состояние вместо текущего. Реакция на ввод мгновенная = задержка скрыта.
Хотя есть вещи, которые невозможно предсказать идеально (действия других игроков) или предсказать их было бы слишком дорого (взаимодействие с врагами, другими движущимися транспортными средствами (например, поездами), роботами, (де)конструирующими препятствия), базовое вождение казалось достаточно простым. - статические препятствия и состояние автомобиля. И на самом деле базовая реализация была достаточно простой.
Но, как мы привыкли шутить в офисе, «в Factorio нет ничего простого»; и это вдвойне важно, когда вы пытаетесь эффективно имитировать Factorio, чтобы скрыть задержку.
Вот некоторые из проблем:
Неверная оценка значений модификаторов скорости (топливо, местность, био-сопли(та самая желто-зеленая слизь из плевок червей, которую мы все так любим)).
- Проблемы со звуком — некоторые звуки не воспроизводятся, когда должны, другие воспроизводятся несколько раз, когда не должны.
- Проблемы с графикой — от простых, таких как неправильное отображение автомобильных фар, до неправильного создания гусениц и частиц выхлопных газов.
- Множество проблем с входом и выходом из машины при странных обстоятельствах.
- Проблемы с удаленным просмотром, редактором и переключением между ними.
- Интересная проблема, из-за которой расчеты урона для состояния игры и состояния задержки имели разный порядок действий, который почти всегда был эквивалентным, за исключением случаев нанесения очень небольшого урона сущности с очень небольшим количеством оставшегося здоровья (из-за ошибок округления).Именно это и происходит, когда вы пытаетесь разрушить препятствие, толкая (а еще лучше поворачивая неподвижный танк)
- Множество мелких проблем: выбор скрытой машины с задержкой, скрытие скрытой машины с задержкой, не перемещаемой ремнями. Взаимодействие с еще не опубликованной механикой, расположение экрана при отключении скрытия задержки из-за боя и т. д.
Хотя можно было бы ожидать, что некоторые недостатки прогнозирования будут едва заметными, к сожалению, это не так из-за того, как мы обрабатываем определенные аспекты сокрытия задержки.
Ошибка, из-за которой начальная скорость введенного транспортного средства не учитывалась правильно (задержка 60 тиков). (Призрачная/прозрачная визуализация состояния автомобиля в игре является опцией отладки).
Ошибка, из-за которой транспортное средство не двигалось ремнями с задержкой (задержка 30 тиков).

Задержка одномоментных эффекты

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

Результат

Вождение в текущей версии с задержкой 30 тиков (500 мс с 60 ИБП).
Как вы можете увидеть на видео, результат заключается в том, что задержка практически не ощущается для большинства рядовых целей и задач.
Как всегда, переведите свои мысли в привычные места:
Форум Редит
,Factorio Dev Diary,Factorio,Игры
Привет!
Добро пожаловать на «Factorio Friday Facts» от Feargall! (FFFF, если хотите.)
За последние несколько месяцев вы несколько раз видели астероиды в качестве фоновой части некоторых других FFF, но, несмотря на все их сдержанное величие, на самом деле это был довольно сложный трюк! Пойдемте со мной, и я возьму вас в путешествие 3720 к 1 через это поле астероидов.

Астероиды меня беспокоят

Сначала мы начали с астероидов-заполнителей, которые были такими же, как и любой другой спрайт — предварительно отрендеренным 2D-изображением со светом и тенями как его частью. Это сработало, но выглядело довольно странно, что все астероиды были ориентированы в одном направлении и двигались только в плоскости XY, не вращаясь.
Ранние астероиды-заполнители от v453000
Итак, вращение — это то, о чем мы говорили в процессе проектирования астероидов.

Проекты астероидов (Эарендель)

Когда мы остановились на трех различных типах астероидов, мы могли приступить к созданию реальных конструкций астероидов. Учитывая обстановку, было ясно, что астероиды должны быть максимально визуально отличны друг от друга.
Мы могли бы использовать одну и ту же традиционную форму астероида для всех их подтипов и использовать цвет только для их различения, как в случае с заполнителями. Но тогда они-бы выходили  более яркими, чем нам хотелось, но главная проблема в том, что в целом они будут выглядеть халтурно.
Вместо этого мы решили создать астероиды, которые будут отличаться во всех аспектах.
Во-первых, общая форма. Это важно из-за освещения на астероидах. Во многом их можно идентифицировать по форме их левой освещенной стороны. Металлические астероиды будут выглядеть как сильно деформированные вогнутые формы из изрытого металла. Углеродные астероиды будут представлять собой выпуклые массы гравия и пыли, немного больше похожие на слитые сферы, перемешанные вместе. Оксидные же астероиды будут иметь твердые ограненные формы с более прямыми линиями и острыми углами.
Что касается материалов, то металлические астероиды будут иметь металлический блеск. Углеродные астероиды будут грубыми, с более гравийными дефектами поверхности. Оксидные астероиды будут более блестящими и похожими на стекло, но менее похожими на чистый драгоценный камень и более потрепанными, пыльными или морозными.
С помощью этих приемов мы могли бы получить красивые и отчетливые астероиды, но это усугубляло еще одну проблему: астероиды были очень различимы и очень узнаваемыми, когда любой из них повторялся. Чтобы избежать заметных повторений, нам понадобится множество вариаций, а поскольку спрайты довольно большие, это будет очень дорого.
Другой вариант — скрыть часть сходства, заставив астероиды вращаться, но...

7680 причин не вращаться (Фергалл)

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

Представляем шейдеры

Казалось очевидным, что нам понадобится какой-то метод динамического применения информации об освещении астероида. Здесь на помощь приходит лучший друг игрового художника — карта нормалей. Для тех, кто не в курсе, карта нормалей — это изображение, которое, по сути, хранит наклон того, что оно представляет.
Чтобы использовать эту информацию о наклоне для применения освещения, нам нужно выполнить некоторые умные математические вычисления в шейдере, чтобы определить направление наклона от фиксированной точки света.
Обновление освещения с вращением
Это дает нам «рассеянное» освещение, но информации о цвете нет! Поскольку мы не хотим создавать космическую оперу в стиле 50-х, нам нужно, чтобы наши астероиды не были черно-белыми. Поэтому при их рендеринге нам необходимо отделить информацию о цвете от информации об освещении.
Мы можем смешать сгенерированное освещение из карты нормалей с нашим необработанным цветным изображением, и это даст нам хороший результат.
Однако вы заметите несколько вещей: освещение очень «плоское», металл металлических астероидов и блеск льда не проступают. Это связано с тем, что шейдер еще не учитывает блеск материалов. Но мы не хотим равномерного увеличения блеска, на разных участках он должен быть разным! Итак, мы визуализируем еще один проход, на этот раз для зеркального освещения.
Мы применяем это, просто используя диффузный цвет для обработки цвета отражения и делая астероиды ярче в нужных областях.
Но лед по-прежнему выглядит неправильно! Он слишком твердый, лед пропускает сквозь себя немного света и рассеивается, придавая ему красивое голубое свечение. Это известно как подповерхностное рассеяние или SSS. Итак, еще одно изображение и проход рендеринга для них, смешанный только в тех областях, на которые косвенно падает свет.
Однако на всех астероидах по-прежнему слишком много теней. Хотя это технически точно, поскольку в космосе нет ничего, что могло бы отражать свет, для наших земных глаз это выглядит неестественно. Таким образом, мы можем уменьшить интенсивность тени и добавить дополнительный источник света под дополнительным углом к ​​первому.
И мы закончили! Спасибо Earendel и Posila за помощь в решении некоторых вопросов с расчетами освещения.
Обновление освещения с вращением

Шейдер космической пыли (Фергалл)

Хотя шейдер звездного поля Ежи и движение астероидов в некоторой степени помогали показать игроку, что платформа движется, в целом эффект было сложно увидеть, нам нужно было что-то очевидное всеобъемлющее, но не чрезмерное.
Одним из решений мог бы быть классический эффект варп-скорости, как в «Звездном пути» или «Докторе Кто», но он казался немного мультяшным и немного оторванным от псевдореалистичного стиля Factorio. Поэтому вместо этого я остановился на компромиссе, состоящем из некоторых размытых движением микрометеоритов и межпланетной пыли, предположительно от всех взорвавшихся астероидов.
Космическая пыль пролетает мимо
Одним из способов создания этого эффекта было бы создание огромного количества дыма и частиц с некоторым размытием в движении, однако в больших количествах частицы требуют довольно много ресурсов, и поскольку этот эффект должен масштабироваться с платформой любого размера, которую вы просматриваете, это будет приведет к экспоненциальному увеличению затрат.
Вместо этого я решил создать одну текстуру со всеми «частицами» на ней. В целях дальнейшей оптимизации эта текстура затем «упаковывается» с несколькими другими текстурами, используемыми в шейдере. Это позволяет сохранить небольшое количество сэмплеров, но при этом позволяет сохранить много деталей.
Все 4 изображения объединены в 1 изображение RGBA.
Немного математики с координатами текстуры и мы можем заставить это изображение двигаться, а замаскировав красный, зеленый, синий и альфа-каналы, мы сможем получить доступ к «упакованным» данным, которые нам нужны.
Просто панорамирование всех текстур
Однако пыль все еще движется более или менее с той же скоростью, что выглядит странно. Таким образом, мы заставим пылинки и частицы двигаться с разной скоростью, просто изменяя скорость в функции панорамирования. Но мы также не хотим, чтобы все точки двигались с одинаковой скоростью, это будет слишком похоже на единую сплоченную структуру. Вот тут-то и пригодятся некоторые маскирующие текстуры. Мы можем использовать изображение №1, чтобы выборочно маскировать отдельные частицы в разное время, что помогает создать иллюзию множества мелких предметов, движущихся независимо. Это делается с помощью математических вычислений, чтобы построить график пика вокруг значения, затем мы присваиваем целевое значение переменной времени и повторяем его обратно.
«Случайный» выбор точки для отображения
В настоящее время частицы постоянно используют изображение следа на 100%, но они должны быть менее размытыми, если движутся медленно. Благодаря предварительному планированию при создании изображения мы можем сделать это, вырезав пиксели ниже порога. Поскольку изображение следа представляет собой линейный градиент, это означает, что мы можем довольно легко контролировать длину, мы просто вычитаем целевое значение из значения изображения.
По мере того, как платформа набирает обороты, пятнышки становятся более длинными.
Если мы повторим процесс пару раз с разными скоростями и масштабами, мы создадим эффект принудительного параллакса. Т.е. пыли ближе к камере больше и она движется быстрее.
Теперь все, что нам нужно сделать, это объединить все это вместе и привязать интенсивность к уровню масштабирования, чтобы это не слишком отвлекало при построении, и все готово!
Космическая пыль над движущейся платформой
В любом случае, с элементом переднего плана покончено.
Хотя пыль помогает проиллюстрировать движения, пространство по-прежнему кажется двумерным. Почему все астероиды идеально плоские с нашей платформой?
Итак, нам нужны элементы фона, больше астероидов! Опять же, мы могли бы просто создать больше астероидов, которые рендерятся за платформой и не сталкиваются, но это казалось неоптимальным.
Вместо этого я использовал технику под названием «нанесение текстур», чтобы создать бесконечное количество астероидов из одного атласа текстур, содержащего всего несколько изображений. Эта (F)FFF уже довольно длинная, поэтому я не буду вдаваться в подробности, но функция в основном разбивает экран на сетку и стремится разместить в каждой по 1 астероиду со случайным смещением.
Для тех, кто интересуется этой техникой, Дэниел Эллиот создал подробное видео о её реализации, которая является почти точной реализацией, используемой здесь.
Атлас текстур всех фоновых астероидов
Шейдер разбивает это изображение на отдельные астероиды, изменяя UV-координату образца текстуры. Если мы создадим сетку рандомизированных UV-разверток, мы сможем разместить в них астероиды. Однако если астероид поместить за границу двух ячеек сетки, он будет обрезан. Поэтому нам нужно было сослаться на соседние ячейки, чтобы выяснить, не перекрывают ли они текущую ячейку. К счастью, с этим можно справиться, просто используя одну и ту же функцию +/-1 в любом заданном направлении.
Здесь вы можете увидеть сетку ячеек, которую мы генерируем, а также перекрывающиеся образцы (окрашены в красный цвет).
Мы даем каждому астероиду случайную скорость вращения, движения и масштаб и проделываем все это снова в другом масштабе для параллакса. Затем мы делаем то же самое и используем те же расчеты для динамического освещения, что и раньше, и получаем бесконечные поля астероидов!
Продолжаем и продолжаем вечно
Большое спасибо, что отправились со мной в это долгое и техническое путешествие. Кажется, наш корабль уцелел.
Как всегда, пишите нам обычных местах:
Форум Редит
,Factorio,Игры,Factorio Dev Diary
Здравствуйте!
Мы знаем, что вы любите все взрывать, и расширение «Космическая эра» принесет еще более совершенные и мощные способы борьбы с врагами.

Ракетная турель

Ракетная турель как и ожидалось из ее названия стреляет ракетами:
Мощная дальнобойная турель 3х3.
- Разблокируется на одной из трёх начальных планет.
- Минимальная дальность — 15, максимальная — 36 (улучшение +10% за каждый уровень качества).
- Стреляет любым типом ракеты (включая атомную бомбу).

Графика Ярослава; Звуковые эффекты от Яна
Это очень полезно в качестве обновления для космических платформ, поскольку только лазерные и артиллерийские турели начинают бороться с более крупными астероидами. Каждый размер астероида имеет устойчивость к разным типам повреждений, но об этом на следующей неделе.
Чтобы ракетные турели хорошо работали на космических платформах, нам пришлось немного подправить рецепт ракетных боеприпасов, удалив из рецепта электронные схемы. Это значительно упрощает налаживание производства ракет на платформе, где меди достаточно мало.

Приоритеты/фильтрация целей турелей

Использование более мощных турелей, использующих ракетные боеприпасы, приводит к еще одной проблеме: на самом деле мы не хотим тратить дорогие ракеты на маленькие астероиды, с которыми легко могут справиться пушечные или лазерные турели.
Поэтому мы добавили функцию приоритетов целей турелей с дополнительной опцией игнорирования вещей, которых нет в списке (что фактически делает ее фильтром белого списка). Мы можем использовать это, чтобы сосредоточить огонь на более крупных астероидах или даже заставить наши ракетные турели полностью игнорировать маленькие астероиды.
Эта функция не является эксклюзивной для ракетной турели, поэтому есть несколько хороших оптимизаций, которые мы можем применить и в других контекстах. Например, мы обнаружили, что установка приоритета на лазерных турелей для плевак помогает уменьшить объем урона, который может получить наша защита при крупных атаках кусак. Мы также можем оптимизировать использование боеприпасов у стен, настроив ракетные турели стрелять только по кусакам и плевакам, тогда как с остальными легко справиться лазерные турели.
Артиллерийская башня не поддерживает приоритеты/фильтры из-за особенностей работы оптимизированной логики артиллерийской стрельбы. Вероятно, это не такая уж большая проблема, потому что нам все равно следует просто ВСЕХ УБИТЬ.
Есть еще одна часть расширения «Космической эры», где фильтрация целей будет играть решающую роль, но это будет на следующей неделе…

Подключение контура турели

В версии 2.0 мы добавили возможность подключать турели к сети:
Включить/выключить
- Установка целевых приоритетов
- Установки на игнорирование не указанных в списке целей
- Считать боеприпасы
Это открывает несколько хороших возможностей, одна полезная вещь — чтение содержимого турели, чтобы включать и отключать остановку поезда, приносящего боеприпасы.
Артиллерийская башня также имеет логическую связь с сетью, но только включение/выключение и считывание боезапаса.

Заключение

Исследование ракетной турели — важная веха в путешествии в космическую эпоху. Она открывает больше возможностей для выживания платформ и заводов, а также дает вам возможность решить новые логистические дилеммы.
Хотя ракетная турель является эксклюзивной для Space Age, целевые приоритеты и подключение к сети станут доступны всем в обновлении 2.0.
Также не случайно турель имеет сходство с головой Спайдертрона. Можно было почти ожидать, что рецептом Спайдертронов космической эры будет ракетная турель + четыре экзоскелета...
Как всегда, дайте залп своих мыслей по привычным местам:
m 1	raw	Г\)Х>Х)тт
	iw •	
		r » -. '
		\ * ^T4-**
'/Л*/	A V	
. ■ 1		
r* » / ^ 11 *1	/^ у. 1 ^ ~’V 1 1 - _y 1 «Lv ШМ	1 ^ f			^ «Л# j i.	i* I jJ** *'щ	U r J «Л* \i	
	* à'-v j^ Kr, j W	1 fRs^1 • !						
		г ' Jl						
	A !•
Sb%	ы*£Г
1 R,s	
	■>>	p K* *«	5Si
ykv			
P ^	•* f J		
' * • ’			•
Здравствуйте!
Сегодня мы рассмотрим функцию, которую некоторые из нас мечтали изменить уже много лет, — передачу маяка.
Основная цель маяков — позволить значительно увеличить производительность в поздней игре, оставаясь при этом нечто большим чем просто модулем или более быстрой машиной. Чтобы использовать маяки, вам необходимо настроить под них планировку здания.
Маяки справляются с этой ролью, но...

Проблема

Мы не уверены, что получившиеся раскладки настолько интересны — об этом и мы, и многие игроки говорили уже много раз.
Сборка из 12 маяков
Первая из двух типичных компоновок — окружение машины максимальным количеством маяков (на каждую сборочную машину влияет 12 маяков).
Лучшая вычислительная производительность
- Не так эффективно
- Дорогостоящие как по конструкционным материалам, так и по потребляемой мощности.
Через него легко проложить множество ремней, так как вокруг крафт-машины есть место, на самом деле это настолько просто, что кажется, что конечный макет игры не так уж и сложно построить.
Вид на карту сборки 12 маяков
Есть несколько небольших изменений, которые вы можете сделать, например, приблизить боковые маяки, но в целом большинство из 12 макетов маяков выглядят одинаково для подавляющего большинства рецептов, поэтому фабрики в поздней игре в конечном итоге выглядят как массивы квадратов.
Сборка на 8 маяков
Другой вариант — чередование рядов машин и маяков (по 8 маяков на каждую сборочную машину).
Высокая эффективность использования пространства
- Хорошее соотношение цена/прибыль
- Мало места для ремней
Из-за зазора всего в 2 клетки между маяками и машинами вы можете пропустить лишь очень небольшое количество транспортных лент. Есть несколько приемов, которые помогут вставить до 2 транспортных лент и вытащить 1 транспортировочный ремень, но как только вы освоите эти приемы, вы просто будете повторять их снова и снова. В качестве альтернативы, поскольку это довольно экономно, это хорошо для логистики роботов, и в этом случае вы просто копируете пары сундуков запросчика + поставщика рядом с машинами, что тоже не совсем креативно.
Поскольку других существенных альтернатив этим двум макетам не так много, в целом использование маяков кажется ограничивающим разнообразием сборок и имеет тенденцию казаться монотонным и неинтересным, особенно по сравнению с тем, насколько разнообразны ранние этапы игры.

Идеи

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

Перегрузка маяка

Перегрузка маяка — механика из мода Earendel Space Exploration . Это приводит к отключению любой машины, на которую воздействует более чем один маяк. Это означает, что схемы с 12 маяками, 8 маяками или любые другие схемы просто невозможны. С обычным диапазоном маяков вы все равно можете сделать обратную схему с 12 маяками и окружить один маяк машинами, но становится непрактично повторять и размещать плитки, потому что теперь есть 12 машин, которым нужны входы и выходы вместо одной.
При попытке перегрузки маяка поначалу кажется, что все в порядке. Маяки более мощные на базовом уровне и имеют больше слотов для модулей, поэтому отдельный маяк более гибок. Отключение случайного одиночного маяка для увеличения случайных областей производства дает гораздо большую выгоду, но вы должны быть осторожны, чтобы не перекрыть машину двумя маяками и не перегрузить ее. Проблема в том, что в расположении маяков нет особой гибкости: обычно вы просто строите маяки в сетке, избегающей перекрытия, поэтому это не намного интереснее, чем базовая игра. Но, по крайней мере, выглядит лучше.
Макет перегрузки маяка
Что становится более разнообразным, так это широкомасштабный маяк из Space Exploration, поскольку в конечном итоге вы проектируете целые сборки вокруг одной структуры. Однако это становится довольно неудобным для плитки, поскольку вам нужно избегать перекрытия машин с несколькими маяками. Размер всей сборки определяется дальностью действия маяка, поэтому она почти всегда группируется вокруг одного маяка или короткой линии маяков по модульному принципу.
Примеры расположения радиомаяков на большой территории от Sticklord и Oblivion, двух спидранеров Space Exploration.
Они ориентированы на прямую установку, чтобы сделать ключевой продукт в радиусе действия одного радиомаяка большой площади.
У вас есть большая гибкость в том, как вы строите в области маяка, поэтому это может быть удобно для сборок с прямой вставкой. В целом, вся свобода дизайна предоставляется при строительстве внутри пространства маяков, но варианты размещения самих маяков становятся довольно скучными, это просто еще одна сетка.
Довольно типичная установка радиомаяка в Space Exploration.
Эта сборка от Xylokite имеет 3 маяка большой площади в линию и предназначена для вертикального расположения, чтобы маяки образовывали сетку.

Скрытые маяки из мода «Built-in-Beacons»

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

Ограничения мода (Эарендель)

Никто из нас не предполагал, что наши моды станут правильным решением для базовой игры. Мы знали о недостатках, но моды очень ограничены в том, что они могут делать с маяками в версии 1.1.
Другие моды тоже экспериментировали с различной механикой маяков, но что-то более интересное, чем некоторые изменения базовых значений, требует множества неприятных обходных путей и сценариев во время выполнения. Существуют некоторые творческие подходы, но ни одна из этих механик не подходит для базовой игры.
Даже в контексте освоения космоса перегрузка маяка не была тем решением, которое мне нужно. Это было лучшее решение, которое я смог найти, учитывая имеющиеся у меня варианты и несколько простых сценариев. Я рассмотрел множество вариантов, но постепенно исключил большинство из них как невозможные или непрактичные из-за ограничений движка, и в итоге остановился на Beacon Overload.
Очевидно, что эти ограничения не являются проблемой, если мы можем «просто изменить игровой движок», но мы не можем менять игровой движок для каждой нашей идеи, иначе все замедлится. В идеале, если у нас есть хорошая идея, мы быстро прототипируем ее как мод для тестирования. Интерактивная демонстрация помогает другим людям оценить идею. Проблема в данном случае в том, что мы знали, что «решение» будет настолько далеко за пределами возможностей игрового движка, что создание мода для него было бы непрактично. Вместо этого нам нужно было бы детально рассмотреть все наши идеи, найти лучшую и убедиться, что она правильная, прежде чем мы создадим версию прототипа.

Решение (В453000)

Наши мечты всегда заключались в идее убывающей отдачи. Чем большим количеством маяков вы окружите машину, тем меньший эффект будет иметь каждый из них.
Однако встречные вопросы и сомнения имелись:
Уверены ли мы, что это действительно лучше, или мы просто обмениваем одну ошибочную систему на другую?
- По крайней мере, мы знаем недостатки нынешней системы, и это не так уж и плохо.
- Не было бы хуже, если бы эффект результата было сложнее просчитать в голове, если бы он не был линейным?
- У нас нет времени реализовывать то, в чем мы не уверены.
И до версии 1.0 минусы, казалось, перевешивали потенциальные плюсы, но мечта всегда была в глубине наших мыслей (в первую очередь у меня и Эарендела). Фактически, мы были настолько известны этим, что, когда Боскид проводил рефакторинг некоторых частей кода эффекта маяка, он делал это таким образом, чтобы можно было что-то подобное, на случай, если в конечном итоге это понадобится...
И желание это было! Эарендель выдвинул свое предложение:
Эффект передачи равен квадратному корню из количества маяков.
- Усиление базового эффекта передачи с 50% (0,5).
 - Добавление масштабирования качества для передачи эффекта
Я протестировал его и окончательно определил значения.

История цифр

Первоначальная идея Эарендела включала вычисление квадратного корня, но мы предполагали увеличить передачу маяков с 0,5 до 1,0, отчасти потому, что это хорошее число.
Вдобавок ко всему, сделав маяки менее сумасшедшими при большом количестве, мы могли бы позволить им масштабироваться с повышением качества.
В более раннем FFF мы заявили, что маяки снижают потребление энергии только за счет более высокого качества, потому что мы думали, что качество уже делает вещи достаточно сумасшедшими, и мы не хотим продвигаться дальше. Но с тех пор мы в 4 раза усилили ремни с возможностью штабелирования предметов, так что теперь это звучит намного привлекательнее.
Поигравшись с этим, я быстро пришел к выводу, что 2-кратного усиления недостаточно, и небольшое количество маяков по-прежнему кажется слабым, в то время как более высокие значения также ослабляются. Я решил, что попробую удвоить его еще раз, и пошел с 4-кратным усилением - когда я позже говорил об этом с Эаренделем, он отметил, что это также значение, которое он выбрал для перегрузки маяка, и я был рад получить подтвеждение своих мыслей, когда мы независимо пришли к одному и тому же мнению.
Когда я готовил изменения и готовился презентовать их финальному боссу (Коварексу), я сделал листы и график.
Я чувствовал себя глупо, потому что не осознавал, что квадратный корень из 16 маяков равен 4, поэтому, если мы усилим маяки в 4 раза, это означает, что все сборки с количеством маяков менее 16 будут усилены. Мне показалось, что это слишком много, поэтому я остановился на 3x, что дает мощность передачи 1,5.
При усилении 4x или 3x масштабирование качества необходимо было немного снизить, поэтому вместо 1–2,5, как в большинстве других вещей, мощность передачи масштабируется от 1,5 до 2,5 для маяков, что по-прежнему отлично. В конце концов, они все еще уменьшают потребление энергии.
Я чуть не расплакался, увидев, какими красивыми оказались значения:
Для существующих заводов это изменение на удивление незначительно. Машины, на которые установлено 8 маяков, фактически будут работать на 6% быстрее, а машины с 12 маяками — на 13% медленнее.
Это удивительно, потому что это означает, что базовая игра остается почти такой же, мы получаем те усиления, которые всегда хотели, а качество позволяет еще больше прогрессировать.

Результаты

Использование маяков действительно дает эффект, даже если вы разместите всего несколько из них. В космическую эпоху это особенно важно, поскольку обычно именно тогда вы хотите увеличить производство для запуска большого количества ракет.
Поскольку модули производительности снижают скорость машины, в старой системе первые два маяка возвращают машине скорость крафта выше 100%. В этот момент вы осознаете, что сделали обновление благодаря возросшей производительности, но на самом деле это не так увлекательно, когда воспринимаемая скорость примерно такая же.
Теперь, поскольку одиночный маяк имеет в 3 раза больший эффект, этого более чем достаточно, чтобы преодолеть негативный эффект производительности, который ощущается намного лучше.
Базовая электронная схема, теперь с +24% производительностью и +50% скоростью всего с несколькими маяками.
В некоторых ситуациях речь идет не только о маяках, но и о том, что пространство здания ограничено, поэтому высокоэффективные маяки естественным образом подходят для таких мест, как космические платформы.
Космическая платформа с маяком
Будучи полной новинкой, один маяк с зелеными модулями может значительно снизить энергопотребление машины. Это становится особенно заметным с более высокими качествами, поскольку передача эффекта маяка увеличивается, модуль эффективности становится более мощным, а маяк снижает энергопотребление с более высоким качеством, так что оно того стоит еще больше. Все машины на скриншоте выше потребляют -80% энергии.
В результате космические платформы смогут выбирать баланс между скоростью создания, энергоэффективностью и производительностью. Все это действительно важно в ограниченном пространстве, так что это интересное решение, над которым стоит подумать.
Более крупные структуры, такие как Литейная, обычно имеют высокую скорость крафта, чтобы чувствовать себя мощными и достаточно эффективно использовать пространство по сравнению с меньшими объектами. Из-за размера до них можно добраться с помощью большего количества маяков (16 для Литейной плитки 5x5), что слишком сильно увеличивает их и без того сумасшедшую скорость крафта. Убывающая отдача делает эти различия более разумными.
Не волнуйтесь, Литейная по-прежнему сходит с ума, особенно со всеми бонусами качества к концу игры.
Обмен нескольких маяков на машины, расположенные рядом друг с другом, вероятно, приведет к появлению некоторых новых возможностей для некоторых сборок, оптимизированных для ИБП.
Я не смею утверждать, что это эффективная конструкция ИБП, но вы поняли идею, и я очень рад видеть, какие конструкции вы придумаете.
Благодаря качеству вы сможете еще лучше использовать несколько дорогих модулей, которые вы получили, поместив их в маяки самого высокого качества, которые вы можете получить.
Еще одна вещь, которую следует учитывать при выборе качества, это то, что, возможно, у вас не так много легендарных модулей скорости, но много модулей производительности или наоборот, что может существенно повлиять на то, какая сборка будет более доступной для вас в данный момент, и это может даже повлиять на долгосрочная стратегия: какую планету вы посетите в первую очередь.

Заключение

Я раздражал все свое окружение, включая коварекса, постоянными разговорами о механике включения и выключения маяка вот уже около 7 лет. Дошло до того, что, если бы я поднял этот вопрос, я бы получил реакцию: «О, ты снова со своими маяками» , и, честно говоря, я не мог их винить.
В последние месяцы я уже оставил надежду, что мы когда-нибудь реализуем это, поскольку расширение, казалось, становилось полнофункциональным...
Но однажды у нас была дискуссия с Эаренделем, и я спросил его, какие последние функции он хотел бы реализовать. Эарендель ответил всего одним словом, очень взволнованным и, на удивление, очень уверенным голосом: «Маяки!» .
Информация, которую мне не хватало, заключалась в том, что он ранее уже провел некоторое исследование с помощью boskid и сказал мне, что код в основном готов для этого.
Я был потрясен самым положительным образом.
Нам потребовалось всего несколько дней, чтобы получить рабочую версию, а поиск правильных значений занял всего несколько недель, что очень хорошо, учитывая масштаб изменений. Полученные значения оказались лучше, чем я когда-либо мог себе представить, что сделало изменение действительно привлекательным, поэтому убедить kovarex в этом в конечном итоге тоже не составило труда.
В версии 2.0 увеличение количества маяков по-прежнему будет хорошей практикой для быстрого выполнения задач и экономии производительности компьютера. Однако теперь появится гораздо больше возможностей для творчества, а качество окупаемости инвестиций становится под большим вопросом.
В целом это можно рассматривать как улучшение маяков, которое должно помочь вам прогрессировать быстрее, особенно на ранних этапах игры, что снова делает Space Age менее утомительным и более интересным.
Деталь, которая делает реализацию boskid неоправданно интересной, заключается в том, что это поведение определяется очень простой так называемой таблицей «профиля» в Lua.
Это означает, что моды могут возвращать маяки к работе, как в 1.1.x, тривиально реализовывать перегрузку маяков, создавать перегрузку маяков, которая допускает перекрытие, увеличивать эффект маяков с увеличением количества маяков или что-то еще, что они могут придумать.
Я невероятно рад, что Эарендель рядом со мной. Как вы, вероятно, можете сказать по тому, что мы оба пишем этот пост в блоге, вместе мы можем воплотить в жизнь очень многие мечты. Огромное спасибо также выражаем boskid, который выслушал нас и позаботился о том, чтобы очистить код, чтобы быть готовым к тому, чего мы хотим.
Мы все чрезвычайно гордимся тем, что наконец нашли способ внести изменения, к которым многие из вас призывали на протяжении многих лет.
Мы вас услышали, всему свое время и место.
Дайте нам знать, если вы так же как и мы, взволнованы эффектом, который принесет это изменение:
Форум Редит
,Factorio,Игры,Factorio Dev Diary

Статистика(Клонан)

Любите ли вы наблюдать за тем, как растут ваши производственные графики, так же, как и мы?

График аккумулятора

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

Научный график

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

Производство по мирам

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

График качества

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

Linux-приключения(Рейгард)

Я уже появлялся в нескольких FFF, но никогда официально не представлялся. Меня зовут Рейгард. Я играю в Factorio с июня 2017 года, делаю моды для игры с момента выпуска версии 0.17 в марте 2019 года и, наконец, присоединился к Wube в марте 2023 года. Мои основные обязанности в компании — программирование расширений и поддержка Linux, а также представление интересов сообщества мододелов. Я ежедневно использую Linux в течение нескольких лет и все глубже погружаюсь в черную дыру настройки и минимализма.
«Почему большинство игр не поддерживают macOS и Linux?» — это мнение, которое я часто вижу в Интернете. Поддержка новой платформы — это гораздо больше, чем просто изменение некоторых флагов и компиляция. Windows, macOS, Linux и Nintendo Switch используют разные компиляторы, разные реализации стандартной библиотеки C++ и имеют разные особенности реализации, ошибки и функции. Вам необходимо настроить CI для новой платформы, расширить систему сборки для поддержки новых компиляторов и архитектуры, а также иметь в команде хотя бы одного человека, который достаточно заботится о платформе, чтобы активно ее поддерживать. Если вы занимаетесь видеоиграми, вам, вероятно, потребуется добавить поддержку другого графического интерфейса (Vulkan или OpenGL), поскольку DirectX является эксклюзивным для Windows.
Многие разработчики, взглянув на долю рынка Windows , решат, что поддержка других платформ не стоит усилий. Кроме того, с стремительным ростом Steam Deck и Proton разработчикам игр стало легче, чем когда-либо, игнорировать поддержку Linux, потому что Valve прибегает к черной магии, которая все равно позволяет их игре работать.
Factorio так хорошо поддерживает macOS и Linux, потому что в Wube всегда был кто-то, кто активно использует эти платформы и готов взять на себя бремя их поддержки. Наша встроенная поддержка Apple Silicon — отличный тому пример. Сегодня я расскажу вам о некоторых приключениях, которые произошли со мной при поддержке Linux в Factorio.

Wayland 

Моей первой задачей после присоединения к команде было добавить в игру поддержку Wayland . Wayland — это новый протокол отображения, который разрабатывается для замены устаревшей и небезопасной системы X11 . Современные дистрибутивы Linux начинают переключаться на Wayland по умолчанию, поэтому поддержка его в Factorio имеет первостепенное значение.
Мы используем библиотеку SDL , которая аккуратно обрабатывает большинство низкоуровневых системных взаимодействий и абстрагирует их в общий интерфейс. SDL поддерживает Wayland, поэтому все, что мне теоретически нужно было сделать, — это собрать SDL с включенным Wayland, и он «просто заработает». Однако это не совсем просто подключи и работай. Wayland предоставляет «протоколы» в виде XML-файлов, которые вы затем используете в wayland-scanner двоичном виде для преобразования в программу C и файлы заголовков.
Поскольку в то время я был относительно новичком в C++, мое первоначальное решение было запутанным и включало проверку сгенерированных протоколов Wayland в нашем дереве исходных кодов, чтобы их можно было регенерировать вручную каждый раз, когда мы обновляли SDL. Несколько месяцев назад, вооружившись многолетним опытом, я улучшил этот рабочий процесс, чтобы автоматически генерировать файлы как часть процесса сборки, чтобы они всегда были актуальными с XML-файлами протокола, с которыми поставляется SDL.
Factorio поддерживает Wayland с версии 1.1.77, но его необходимо явно включить, настроив SDL_VIDEODRIVER=wayland в вашей среде. Для Factorio 2.0 я добавил раскрывающийся список для выбора ваших предпочтений в графическом интерфейсе:
X11 (слева) и Wayland (справа) с масштабом дисплея рабочего стола, установленным на 125%.
Обратите внимание, как игра отображается с собственным разрешением дисплея при работе под Wayland.

Оформление окон на стороне клиента

Как только поддержка Wayland была реализована, я получил отчет об ошибке , в котором говорилось, что в окне отсутствовала строка заголовка и кнопки закрытия (так называемые «декорации окна») при работе в GNOME . Большинство сред рабочего стола позволяют окнам предоставлять свои собственные украшения, если они того пожелают, но в качестве альтернативы предоставляют реализацию по умолчанию на стороне сервера. GNOME в своей бесконечной мудрости решили, что все клиенты должны предоставлять свои собственные украшения, а если клиент этого не сделает, они просто пропадут. Я не согласен с этим решением; Factorio не нуждается в оформлении какой-либо другой платформы, более того, в любой другой среде рабочего стола, но GNOME может (ab) использовать свою популярность, чтобы заставить программы соответствовать его особенностям или остаться позади.
Чтобы исправить это, мне пришлось добавить еще одну зависимость — libdecor . Он работает, и SDL даже поддерживает его, но видеоигра вообще не должна обеспечивать оформление окон.
В игре появились украшения, но тема не соответствует. Спасибо, ГНОМ!

Захваты при изменении размера окна

Видео стоит больше тысячи слов:
Я использую оконный менеджер Sway , и особенность этого оконного менеджера заключается в том, что он автоматически изменяет размер плавающих окон до размера их последнего отправленного кадра. Это выявило проблему с нашим графическим стеком: игре требуется три кадра, чтобы правильно отреагировать на изменение размера окна. В результате происходит быстрое перетягивание каната: Sway отправляет массу событий изменения размера, а Factorio отвечает устаревшими размерами кадрового буфера, вызывая хаос, показанный выше.
Я провел два полных дня, рассматривая наш графический код, но не смог придумать объяснения, почему это происходит, поэтому эта работа все еще продолжается. Поскольку эта проблема возникает только при запуске игры на Wayland под управлением Sway, это не является большим приоритетом, но это было слишком интересно, чтобы не поделиться.

Динамически подключаемые библиотеки

В программе C++ существует три способа загрузки/подключения библиотеки:
Включив его в исходный двоичный файл (статическое связывание).Загрузка системы при запуске вашей программы (динамическое связывание).Ваша программа загружает его явно после запуска («динамическая загрузка» или то, что я называю «связыванием во время выполнения»).У нас есть множество библиотек, таких как SDL, FontStash и Lua, которые скомпонованы статически, но в Factorio 1.1 также есть много динамически скомпонованных библиотек.

Среди этих библиотек — X11 и PulseAudio, которые устарели в пользу Wayland и PipeWire соответственно. Это вызывает кошмар совместимости, поскольку если какие-либо динамические зависимости отсутствуют, игра не запустится. Это явно не подойдет!
Наличие этих зависимостей меня смутило, поскольку мы используем SDL для большинства низкоуровневых системных вызовов, аудио и видео, а SDL полностью полагается на связывание во время выполнения. Расследование показало, что источником большинства этих зависимостей является Allegro , низкоуровневая библиотека, которую мы использовали на протяжении большей части альфа-фазы Factorio, но с тех пор заменили на SDL. Единственное оставшееся использование Allegro в версии 2.0 было в качестве вторичного аудио-сервера на случай, если у пользователя возникли проблемы с аудио-сервером SDL, но сервер SDL был стабильным в течение очень долгого времени, поэтому настало время для его удаления. Это исключило из игры 123 024 строки кода и резко сократило количество динамических зависимостей:

Проблемы с буфером обмена

Оказывается, Allegro — не единственное, что требовало от нас связывания с X11. Еще в 2017 году мы получили сообщение об ошибке , в котором пользователь не мог вставить большие строки чертежей в игру, и Oxyd исправил это, добавив поддержку инкрементной передачи данных из буфера обмена X11 в обработчик буфера обмена нашего графического интерфейса.
Я надеялся использовать встроенную в SDL функциональность буфера обмена, но, к сожалению, SDL не поддерживает инкрементную передачу. Это означает, что есть три варианта:
Продолжайте связывать с X11, требуя, чтобы пользователи установили X11 в своей системе, чтобы иметь возможность запускать игру (я не хочу возиться со статическим связыванием).Выясните, как выполнить связывание во время выполнения, и реализуйте это.Переведите наш код инкрементной передачи в SDL, чтобы мы могли использовать функции буфера обмена SDL, а другие игры на основе SDL могли бы извлечь выгоду из нашей работы.
Как вы могли догадаться, я выбрал третий вариант. Работа над улучшением нашего кода продолжается, но она должна быть завершена к выпуску Factorio 2.0.

Асинхронное сохранение

Многие из вас, возможно, не знают, что Factorio поддерживает сохранение игры в фоновом режиме без зависания при этом. Эта функция спрятана в скрытых настройках и работает только на macOS и Linux. Это отличный пример использования возможностей платформы для пользы игры, которые были бы нам не доступны, если бы мы просто прошли через Proton.
Асинхронное сохранение работает с использованием системного вызова fork, по существу дублирующего игру. Основной экземпляр, с которым вы взаимодействуете, продолжает играть, но недавно разветвленный дочерний элемент запускает процесс сохранения, а затем завершает работу по завершении. Я использовал его в течение многих лет, и у меня никогда не было проблем, но настройка остается скрытой, поскольку с ней есть несколько нерешенных проблем, и для ее работы требуется значительный объем оперативной памяти.
Я бы хотел продвинуть эту функцию из ее скрытого статуса в версии 2.0. Если вы играете на Linux или macOS, включите асинхронное сохранение (ctrl+alt+нажмите «Настройки» -> «Остальное» -> non-blocking-saving) и сообщайте о любых обнаруженных проблемах. Меня особенно интересует воспроизведение, казалось бы, случайного зависания , которое происходит в конце процесса. Заранее спасибо!

Постоянное развитие

Это был лишь краткий обзор работы, которую я проделал, чтобы обеспечить наилучшее качество Factorio для Linux. По-прежнему существует много открытых отчетов об ошибках и других проблемах, но в целом я доволен положением вещей и могу с уверенностью сказать, что у Factorio отличная поддержка Linux.
Как всегда, отправьте текстовый буфер с вашими отзывами в привычные места:
Форум Редит
,Factorio Dev Diary,Factorio,Игры
В ноябре 2021 года мы начали переговоры с Петром Вайсаром , очень талантливым чешским композитором, о создании саундтрека для расширения Factorio. С тех пор мы вместе работаем над саундтреком к Factorio Space Age. Концептуализация и поиск решений наших немалых проблем, а также наполнение расширения качественной музыкой, специально разработанной для получения наилучших впечатлений от Factorio.
Петр – особенный музыкант, поскольку он не только признанный мастер электронной музыки, но и его образование и опыт работы в консерватории позволяют ему сочинять музыку, используя весь диапазон классического оркестра. Его современный стиль перехода к более экспериментальным решениям делает его очень гибким при создании музыки для расширения Factorio Space Age.

Оркестровая музыка

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

Запись сеансов

Запись музыки с традиционным оркестром – это большая задача, требующая длительного процесса и очень сложной координации. От музыкальной режиссуры и сочинения до оркестровки, координации всех музыкантов, аранжировок, записи, постпродакшена и т. д.
В случае с нашим саундтреком задействовано 174 профессионала, не считая команды Factorio.
Музыкальная продюсерская компания Soundsgate , которая представляет Петра, берет на себя весь этот процесс за нас.
Запись нашего саундтрека проходит с ноября 2023 года в студии Český Rozhlas в Праге.
Я публикую здесь несколько фотографий с первой записи.

Текущий саундтрек останется саундтреком к Наувис

Стиль саундтрека к Factorio 1.1 уже придал наш дорогой Дэниел Джеймс Тейлор. Петру пришлось адаптировать свою работу, чтобы продолжить работу над саундтреком Дэниела Наувис. Это не значит, что расширение саундтрека не добавит в игру новых красок и текстур. Совершенно наоборот. Новый контент расширения, как следует из названия, расширяет звуковой ландшафт Factorio в новых измерениях.
В общем, саундтрек пытается сопровождать игрока на протяжении всех мыслительных процессов, необходимых для игры, чтобы сосредоточить внимание во время проектирования заводов и их логистики. Поэтому музыка должна создавать сбалансированную и непринужденную атмосферу, позволяющую игроку сконцентрироваться.
Музыка не является украшением, она помогает игроку лучше погрузиться в игру, а также визуализировать то, что не показано на экране.

Мотив Факторио

Постоянным элементом всего саундтрека (я добавляю также работу Дэниела) является мотив Factorio. Я уверен, что это уже вытатуировано у тебя в мозгу. Помните мелодию, которая звучит при загрузке игры? Да, так и есть. Что ж, Петр разработал целую вселенную на основе этих парочек заметок.
Эта мелодия звучит по всем планетам с множеством разных настроений, ритмов и инструментов. Хорошая часть в том, что ты не слышишь это отчетливо, ты просто чувствуешь это. Это потрясающе, потому что создает такой целостный космос, который, несомненно, принадлежит Factorio. Одним из примеров является видео Вулкануса, представленное ниже.
Все планеты также разделяют идею чувства чуда. Мы хотим выразить, насколько невероятно приятно и позитивно открытие всех этих новых миров. В основе некоторых треков на разных планетах лежит эта идея.

Ограничения движка Factorio

У движка нет возможности сообщать музыкальной системе, что происходит в игре. Другими словами, музыкальная система понятия не имеет, находится ли игрок в центре битвы, уничтожая гнезда кусачих, или тщательно размещает транспортные ленты для удовлетворения потребностей растущей фабрики.
Этот факт сильно ограничивает творческие решения на момент написания партитуры. Представьте себе, что игрок тихо расставляет трубы, чтобы просто соединить 2 машины, и внезапно на заднем плане звучит эпическая боевая музыка. Это создало бы глупую ситуацию, а мы этого не хотим.
Решение, которое мы решили принять, заключается в том, что вместо того, чтобы пытаться проиллюстрировать само действие, нам лучше перейти к описанию пейзажа в более атмосферном решении. Атмосфера планеты и ее нюансы. Настроение и его вариации.
Музыка должна быть нейтральной, без сильных эмоциональных пиков, но с другой стороны она должна быть насыщенной и динамичной, иначе она станет скучной. Поэтому очень важно контролировать баланс между нейтральностью и выразительностью.

Есть 4 новые планеты + Космос, так что у нас будет 5 уникальных звуковых ландшафтов.

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

Космос

Космическая платформа самая сложная, поскольку у нее есть 2 режима: неподвижный в пространстве и движущийся. Поэтому мы решили охватить оба случая двумя взаимодополняющими элементами:
Мы используем космическую атмосферу (очевидно) с небольшим количеством синтетической электроники, пытаясь описать, каково это — плавать в холодной пустоте Вселенной.
- Мы используем ритмичный бас для ощущения движения платформы, мощные двигатели, толкающие большую массу металла. Как космический паром, «медленный», но неудержимый.

Вулкан

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

Фульгора

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

Остальные 2 планеты

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

Более 5 часов саундтрека

На каждой поверхности игры звучит около 1 часа музыки. Это значит, что нам нужно проиграть 5 часов саундтрека, +1 час Наувиса. На следующей неделе мы поговорим о некоторых методах, которые мы разработали, чтобы не только покрыть этот промежуток времени, но и превзойти его.

Что дальше?

Теперь у нас есть все демо и записи оркестрованных партий. У нас еще нет окончательных миксов, только несколько премиксов Петра. Каждый шаг в этом процессе приводит к изменениям, обычно в лучшую сторону.
Мы также начинаем лучше видеть графику и игровой процесс. Итак, я собираюсь поместить весь этот материал в движок перед окончательными миксами, чтобы протестировать его и получить обратную связь.
Я совершенно уверен, что мы сможем настроить весь саундтрек таким образом, чтобы окупить всю энергию, которую Петр (и все участники) вложили в такой сумасшедший проект.
Следите за обновлениями.
Как всегда, направляйте свои мысли в привычные мест:
Форум Редит
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме Factorio Dev Diary (+24 постов - Factorio Dev Diary)