Переломный моментНи для кого не секрет, что гибкая система Factorio непредсказуема, не интуитивна и / Factorio :: Factorio Dev Diary :: Игры

Factorio Игры Factorio Dev Diary 

Factorio Dev Diary #416 - Fluids 2.0

Factorio,Игры,Factorio Dev Diary

Привет!
Берите с собой лучшую смазку, потому что пришло время поговорить о жидкостях!

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

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

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

Почему это не работает!?

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

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

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

Во время одного из обсуждений жидкостей Рсединг предложил алгоритм, очень близкий к тому, с которым он играл несколько раз, — алгоритм из мода Minecraft Thermal Expansion от команды CoFH:

Трубы(в том числе и подземные) и резервуары для хранения объединены в жидкостные «сегменты».

- Каждый сегмент наследует свой объем от составляющих его ячеек для жидкости и может содержать одну жидкость.

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

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

Больше нет реалистичного «течения» жидкости по трубам; жидкость, подаваемая в сегмент, будет немедленно доступна в любой точке сегмента. Это «решение типа ядерной электрической сети», которое обсуждалось в предыдущих FFF. В результате каналы «просто работают», и вам практически не придется беспокоиться о пропускной способности.

It just works™

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

Обратите внимание на визуализации отладки:

Зеленый цвет представляет количество жидкости в объекте.

Синий представляет объем потока, проходящего через объект на этом тике.

Анимации потока жидкости не являются окончательными.

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

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

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

Развязки

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

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

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

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

В новой системе обе установки получают гораздо более равную долю жидкости.

Насосы

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

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

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

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

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

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

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

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

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


Подробнее

Factorio #416 - 01
Factorio #416 - 02
Factorio #416 - 03
Factorio #416 - 04
Factorio #416 - 05
Factorio #416 - 06
Factorio #416 - 07
Factorio #416 - 08
Factorio #416 - 09
Factorio #416 - 10
Factorio #416 - 11
Factorio 416 - 12
Factorio,Игры,Factorio Dev Diary
Еще на тему
Развернуть
Уже можно кричать, что факторио скатился в казуальщину?
Lictor Lictor 22.06.202423:38 ответить ссылка 17.4

Можно. Кричи

Все нормально, они добавили портящиеся предметы
Jagura Jagura 23.06.202400:24 ответить ссылка 10.0
Всегда есть пианадон
lumen lumen 23.06.202404:56 ответить ссылка 0.8

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

Если я и мой модный мир доживем до этой обновы я буду так счастлив

Бля, это чо теперь получается, любители поставить модов в свои игры теперь Модники ? :)

Модельеры
dstwo dstwo 23.06.202407:32 ответить ссылка 1.7
Лол, "гибкая система Factorio". Там же fluid system в оригинале. Система жидкостей, а не гибкая система!
wataru wataru 23.06.202409:02 ответить ссылка 4.0
Машинному переводу то откуда знать, что в факторио системы жидкостей, а не гибкие системы?
Из контекста? Гуглом мы больше не ограничены. Ллм всем доступно и бесплатно.
Постить машинный перевод без вычитки - это зашквар.
wataru wataru 23.06.202418:00 ответить ссылка 2.5
Офигеть, у меня конечно не тысячи часов, но несколько ракет запускал и даже не знал про такую систему_ всегда думал что трубы выдают свой максимум независимо от расстояния
Я на эту проблему полноценно нарвался когда у меня ядерка высосала всю воду из своих резервуаров, хотя пополнение воды насосами на далёком озере было сделано с запасом. Пришлось вставлять в подземные трубы дополнительные помпы на пути через каждые 2-3 сегмента, а потом и вовсе построить дублирующий. Представляю насколько сильно быстрее я бы ахирел если бы исползовал обычные наземные.
Lucheg Lucheg 23.06.202410:08 ответить ссылка 1.8
Не менее весёлый момент упомянули в статье - то как течет жидкость зависит от порядка в котором построены трубы. Нынче восемь только на развилки жидкостной системы, раньше сказывалось и на прямых участках - если строить сегменты труб в случайном порядке (например, дронами) жидкость текла с другой скоростью. Потом исправили, на огромных массивах труб можно заметить как игра подлагивает при добавлении новой секции - весь участок жидкостной системы перерасчитывается в этот момент.
Ты трубы в сатисфактори не видел ещё. Там жидкость при прокачке ещё в обратную сторону потечь может
lumen lumen 24.06.202410:55 ответить ссылка 0.0
видел, но там это интуитивно понятно благодаря описанию насосов и общей наглядности. Ну и когда строишь первую угольную электростанцию с этим в любом случае сталкиваешься. А в факторио оно как-то работало и работало, хз)
Есть пробитие?
"Люди, которые покупают обувь не 42 размера, вы вообще нормальные? Она либо жмет, либо на ноге болтается!"
Psilon Psilon 24.06.202401:57 ответить ссылка 0.0
Наступает время спагетти из труб
Cybnero Cybnero 23.06.202410:10 ответить ссылка 0.6
скорей бы длц вышло.....
Объединение нескольких труб в один участок - просто подарок для любителей ядерных электростанций. Сейчас они жрут много FPS/UPS из-за логики работы жидкостной системы. Каждый участок трубы просчитывается отдельно, каждый тик. И тепло идущее по трубам от реакторов к бойлерам вроде бы тоже жидкость, получим не только снижение нагрузки на железо, но и больше свободы в проектировании эффективных АЭС
По поводу фана/реализма - никогда не мог понять от чего работают конвейеры.
AnToxin AnToxin 23.06.202410:51 ответить ссылка 1.5
При установке пружину заводят, как в часах. Очень мощную пружину, чтоб на сто лет хватило.
кстати да, интересно, есть мод который заставляет для конвейера создавать двигатель?
Боб кажись
Грусно, фактория пошла по пути упрощения. Я помню каким челенджом было сделать эффективную станцию погрузки/разгрузки жидкостей, теперь этого уже не будет
Челленджевым теперь будет DLC с ограничением размера зоны построек или количетсва энергии на новых планетах
А когда это всё ждать в ванили?
К концу лета, начало осени
Jagura Jagura 24.06.202418:58 ответить ссылка 0.0
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Factorio #398 1 ч $
1 tí		1 i à 4		1 m £
M JÊ		ч ïA	-'r • &	
▼ *u¡
подробнее»

Factorio Игры Factorio Dev Diary

ч $ 1 tí 1 i à 4 1 m £ M JÊ ч ïA -'r • & ▼ *u¡
Л*7
		
		
		
		
Ife ..г		
¡EK