Бездна

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. Я также могу подробно рассказать об архитектуре этой новой системы и о том, как я подошел к рефакторингу, в другой раз.

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

Развернуть

арт барышня art крестоносец digital painting девушка с оружием 

арт барышня,арт девушка, art барышня, art girl,art,арт,крестоносец,digital painting,art girl,art,Crusader,digital art,девушка с оружием

Развернуть

Flounder man art artist Спекулятивная биология 

"Cущества и иx зарисовщик"

Y/i iltvrip>8## 1# !■ ii* I V y I ILJ splendor made of decay For Vultyries, Yemen is not a creature, but a place, with inexhaustible food and perfect breeding grounds. But for Yemen Yultyries' prosperity means infection and festering.,Flounder man,art,арт,artist,Спекулятивная биология
Apple Nautilwyrm Sjsnif# In the Scarlet Forest, the Apple Nautilwyrm. a small variant of the nautilwyrm. is primarily found. These creatures mainly feed on the liquefied bark of the scarlet trees using digestive fluids. Their constantly extending and retracting tentacles are primarily used to
Flounder man,art,арт,artist,Спекулятивная биология
Flounder man,art,арт,artist,Спекулятивная биология

Развернуть

Hitman Игры gif 

Развернуть

Lilja to Natsuka no Junpaku na Uso Art VN Визуальные новеллы фэндомы Foreign VN 

г ^ \ д- •:•• Ш .ni 1 / к \ ^ /1 / \\l ^-Ъ&гР- ' Ч ттЖт|Дг 1 I/Á 1 1 ///у 1л J) À í> • :-‘r ?, ■Kl зШмШ lï vft.V ' Л1 i,,Lilja to Natsuka no Junpaku na Uso,Art VN,vn art,Визуальные новеллы,фэндомы,Foreign VN,Зарубежные VN

Развернуть

гифки живность котэ До невозможного прекрасные яйца яванского леопарда Баян 

Развернуть

Antoine Decamps artist Sci-Fi art spaceship 

Развернуть

kakitama Anime Artist artist AO Anime фэндомы Anime Ero Pantsu Anime Ero Anime Ero Oppai 

kakitama,Anime Artist,Аниме арт, Аниме-арт,artist,AO,Anime,Аниме,фэндомы,Anime Ero Pantsu,Adult pantsu, тянки в трусиках,Anime Ero,Взрослые Няшки,Anime Ero Oppai,Грудастые Няшки, Anime Boobs, Аниме Сиськи, Oppai,kakitama,Anime Art,artist,Anime Original,Anime,fandoms,,Anime Adult,Oppai

Развернуть

Rogue Trader (CRPG) Wh Games Wh Other Warhammer 40000 фэндомы cassia orsellio Navigator Psyker 

Rogue Trader (CRPG),Wh Games,Wh Other,Warhammer 40000,wh40k, warhammer 40k, ваха, сорокотысячник,фэндомы,cassia orsellio,Navigator,Psyker
Развернуть

Brad (lisa) Lisa Игры TheFaiao 

"Fireball 4"

Brad (lisa),Lisa,Игры,TheFaiao

Развернуть