Factorio как играть на одном компьютере

Обновлено: 05.07.2024

В последнее время много копий сломано вокруг технических собеседований. Очевидно, что инвертирование двоичного дерева на доске практически никак не связано с практическими навыками реального программиста. Примитивный Fizzbuzz по-прежнему остаётся самым эффективным тестом. Как следствие, выросло внимание к опенсорсным проектам, но оказалось, что это тоже не очень хороший показатель, потому что у большинства профессионалов нет на них времени.

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

Factorio?

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

Начинаете с нуля. Добываете вручную железную руду и камень, строите плавильную печь, чтобы плавить руду в железные пластины, из которых можно скрафтить автоматический твёрдотопливный бур. Можно самостоятельно забирать железную руду из бура и закладывать её в плавильню, но более эффективно использовать автоматический конвейер. Потом можно использовать полученное железо, чтобы сделать другой бур, который автоматизирует добычу угля. Затем строится конвейер для забора угля и конвейер для его передачи в бур. Эта крошечная фабрика производит железные пластины, из которых можно сделать третий бур — и начать добычу медной руды, которая позволяет крафтить медные плиты, а из них можно сделать медный провод, необходимый для работы погружного насоса. В сочетании с паровым котлом и паровым двигателем это даёт нам первую электроэнергию. Её можно использовать для исследовательского центра и изобретения новых технологий, таких как сборочный автомат. Как только разблокируете сборочные автоматы, можете использовать сделанный вручную провод для создания сборочной машины, которая будет автоматически изготавливать эти провода.

Выбор направления

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

Конкретные ожидания можно сформулировать так:

Командная работа

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

Если игрок уйдёт в себя, начнёт делать всё сам или молча исправлять проблемы, это быстро навлечёт на него гнев команды по тем же самым причинам, по которым коллеги злятся на программистов-ковбоев. К счастью, в Factorio есть встроенный эквивалент git blame : он показывает последнего игрока, который изменил любую сущность. Таким образом, если кто-то поставил костыль и не сообщил команде о проблеме, то когда этот костыль наконец сломается — все узнают, кто виноват. Если хотите выиграть, придётся плотно сотрудничать с товарищами по команде.

Отладка

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

Отладка в Factorio быстро усложняется. Как только вы построите нефтеперерабатывающий завод, то займётесь крекингом, где на выходе три разных трубы (мазут, дизельное топливо и попутный нефтяной газ), и если какая-то из них по какой-то причине стопорится, то весь завод прекращает работу.

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

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

Код-ревью

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

Стиль написания кода и фреймворки

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

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


Логистическая сеть

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

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



Неоптимальный дизайн завода на дронах, источник

Многопоточность

Поезда в Factorio — прямой аналог многопоточности: один поезд — это один поток выполнения, а каждое пересечение поездов или остановка — место в памяти, куда два потока потенциально могут писать одновременно. Светофоры — это блокировки (или мьютексы). Все баги в железнодорожной сети проявляются точно так же, как состояние гонки в ПО, потому что они буквально являются физическим состоянием гонки. Все компромиссы применимы и здесь — слишком длительная блокировка уменьшает пропускную способность. Неправильное проектирование светофоров обычно вызывает взаимоблокировку, точно так же, как в программном обеспечении, потому что в итоге возникает циклическая зависимость блокировок. Самая распространённая взаимоблокировка — это когда поезд слишком длинный и неожиданно блокирует второй перекрёсток, ожидая входа в первый. Затем этот второй перекрёсток препятствует отправлению другого поезда, предотвращая разблокировку первого перекрёстка.

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

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

Масштабирование

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

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

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

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

Микросервисы и модули

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

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

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

Распределённые системы

Space Exploration — полностью переделанная версия Factorio для колонизации космоса. Здесь планеты становятся ограниченными ресурсами, требуя от игроков колонизировать другие миры и использовать ракеты для передачи ресурсов между планетами. Из-за огромной задержки с доставкой материалов между планетами, координация этих баз приводит к возникновению проблем, сходных с глобально распределённой системой баз данных. Даже в логической сети приходится бороться с задержкой, потому что автоматическая система теряет из виду элементы, которые запущены, но ещё не достигли целевой планеты. Если это не учитывать, возникают дубликаты запросов для всех нужных элементов. С точно такой же проблемой сталкиваются распределённые системы при попытке обеспечить согласованность между узлами.

Вывод

В целом софтверная индустрия не имеет ни малейшего представления, как находить и нанимать лучших разработчиков. Наверное, совместная игра в Factorio стала лучшим техническим собеседованием, которые мы когда-либо проводили. И это нас сильно смущает. Такое собеседование дико непрактично, занимает более 20 часов в мультиплеере с первого раза или 8 часов для команды опытных игроков. Что из этого можно извлечь? Не знаю. Мы, конечно, не можем перейти на Factorio в качестве метода собеседований — с таким же успехом можно просто дать кандидату домашнее задание.

Factorio

Factorio

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

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

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

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

Информация о сетевых режимах:

factorio как играть по сети в мультиплеер

factorio как играть по сети в мультиплеер

В этом случае вам не нужно использовать сторонние программы для игры в мультиплеер по сети. Для этого вам нужно:

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

Подключение к интернету через разные технологии(wi-fi, 3g, vpn)

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

Таких программ очень много. Зарекомендовавшие и просты в использовании:

  • Hamachi
  • Tunngle
  • Garena (платформа)

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

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

Мегапакет: как разработчикам Factorio удалось решить проблему с мультиплеером на 200 игроков

image

В мае этого года я участвовал в качестве игрока в MMO-мероприятии KatherineOfSky. Я заметил, что когда количество игроков достигает определённого числа, через каждые несколько минут часть из них «отваливается». К счастью для вас (но не для меня), я был одним из тех игроков, которые отключались каждый раз, даже при наличии хорошего подключения. Я воспринял это как личный вызов и начал искать причины проблемы. Спустя три недели отладки, тестирования и исправлений ошибка наконец устранена, но это путешествие было не таким уж простым.

Проблемы многопользовательских игр очень трудно отследить. Обычно они возникают в очень конкретных условиях параметров сетей и при очень специфичных состояниях игры (в данном случае — наличие более 200 игроков). И даже когда удаётся воспроизвести проблему, её невозможно должным образом отлаживать, потому что вставка контрольных точек останавливает игру, путает таймеры и обычно приводит к завершению соединения из-за превышения срока ожидания. Но благодаря упорности и замечательному инструменту под названием clumsy мне удалось выяснить, что же происходит.

image

Проблема была достаточно фундаментальной, и у меня ушло 2 недели на её устранение. Она довольно техническая, поэтому ниже я объясню сочные технические подробности. Но для начала вам нужно знать, что с версии 0.17.54, выпущенной 4 июня, в условиях временных проблем с подключением мультиплеер стал более стабильным, а сокрытие задержек — гораздо менее глючным (меньше торможений и телепортирования). Кроме того, я изменил способ сокрытия задержек в бою и надеюсь, что благодаря этому они будут немного более плавными.

Многопользовательский мегапакет — технические подробности

Если объяснять упрощённо, то мультиплеер в игре работает следующим образом: все клиенты симулируют состояние игры, получая и отправляя только ввод игрока (называемый «действиями ввода», Input Actions). Основная задача сервера — передача Input Actions и контроль того, что все клиенты выполняют одинаковые действия в одном такте. Подробнее об этом можно прочитать в посте FFF-149.

Так как сервер должен принимать решения о том, какие действия нужно выполнять, действия игрока движутся примерно по такому пути: действие игрока -> клиент игры -> сеть -> сервер -> сеть -> клиент игры. Это значит, что каждое действие игрока выполняется только после того, как совершит путь туда-обратно по сети. Из-за этого игра бы казалась ужасно тормозной, поэтому почти сразу же после появления в игре мультиплеера был введён механизм сокрытия задержек. Сокрытие задержке имитирует ввод игрока без учёта действий других игроков и принятия решений сервером.


В Factorio есть игровое состояние Game State — это полное состояние карты, игрока, сущностей и всего остального. Оно детерминированно симулируется во всех клиентах на основании действий, полученных от сервера. Игровое состояние священно, и если оно когда-нибудь начинает отличаться от сервера или любого другого клиента, то возникает рассинхронизация.

Кроме Game State у нас есть состояние задержек Latency State. Оно содержит небольшое подмножество основного состояния. Latency State не священно и просто представляет картину того, как будет выглядеть состояние игры в будущем на основании введённых игроком Input Actions.

Для этого мы храним копию создаваемых Input Actions в очереди задержек.


То есть в конце процесса на стороне клиента картина выглядит примерно так:

  1. Применяем Input Actions всех игроков к Game State так, как эти действия ввода были получены от сервера.
  2. Удаляем из очереди задержек все Input Actions, которые, по данным сервера, уже были применены к Game State.
  3. Удаляем Latency State и сбрасываем его, чтобы оно выглядело точно так же, как и Game State.
  4. Применяем все действия из очереди задержек к Latency State.
  5. На основании данных Game State и Latency State рендерим игру игроку.

Слишком сложно? Не расслабляйтесь, это ещё не всё. Чтобы компенсировать ненадёжность Интернет-соединений, мы создали два механизма:

  • Пропущенные такты: когда сервер решает, что Input Actions будут выполнены в такте игры, то если он не получил Input Actions какого-то игрока (например, из-за увеличившейся задержки), он не будет ждать, а сообщит этому клиенту «я не учёл твои Input Actions, постараюсь добавить их в следующий такт». Так сделано для того, чтобы из-за проблем с соединением (или с компьютером) одного игрока обновление карты не замедлялось у всех остальных. Стоит заметить, что Input Actions не игнорируются, а просто откладываются.
  • Задержка полного пути туда-обратно: сервер пытается предположить, какова задержка передачи данных туда-обратно между клиентом и сервером для каждого клиента. Каждые 5 секунд он при необходимости обсуждает с клиентом новую задержку (в зависимости от того, как вело себя подключение в прошлом), и соответствующим образом увеличивает или уменьшает задержку передачи данных туда-обратно.

Теперь нужно объяснить вам, как работает выбор сущностей. Один из передаваемых типов Input Action — это изменение состояния выбора сущности. Оно сообщает всем, на какую сущность игрок навёл курсор мыши. Как можно понять, это одно из самых частых действий ввода, отправляемых клиентами, поэтому для экономии пропускной способности канала мы оптимизировали его так, чтобы оно занимало как можно меньше места. Это реализовано так: при выборе каждой сущности вместо сохранения абсолютных, высокоточных координат карты игра сохраняет низкоточное относительное смещение от предыдущего выбора. Это хорошо работает, потому что выделение мышью обычно происходит очень близко к предыдущему выделению. Из-за этого возникают два важных требования: Input Actions никогда нельзя пропускать и необходимо выполнять их в верном порядке. Эти требования удовлетворяются для Game State. Но поскольку задача Latency state в том, чтобы «выглядеть достаточно хорошо» для игрока, в состоянии задержек они не удовлетворяются. Latency State не учитывает многие пограничные случаи, связанные с пропуском тактов и изменением задержек передачи туда-обратно.

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

  1. У игрока появились проблемы с соединением.
  2. В дело вступают механизмы пропуска тактов и регулирования задержки передачи туда-обратно.
  3. Очеред состояния задержек не учитывает эти механизмы. Это приводит к тому, что некоторые действия удаляются преждевременно или выполняются в неверном порядке, что приводит к неправильному Latency State.
  4. У игрока пропадает проблема с соединением и он, чтобы догнать сервер, симулирует до 400 тактов.
  5. В каждом такте генерируется и подготавливается к отправке на сервер новое действие изменение выбора сущности.
  6. Клиент отправляет серверу мегапакет из 400 с лишним изменений выбора сущностей (и с другими действиями: состояние стрельбы, ходьбы и т.п. тоже страдали от этой проблемы).
  7. Сервер получает 400 действий ввода. Так как ему не разрешено пропускать ни единого действия ввода, он приказывает всем клиентам выполнять эти действия и отправляет их по сети.

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

Factorio как играть на одном компьютере

Евгений Загоруев

Кусаки же не смогут перебраться с одного острова на другой и поставить улья?

David Glonti

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

Сергей Ошев

David Glonti

Сергей Мациевский

David, от боба есть мод на усиление врагов
Но без турелей и оружия из того же мода будет грустно

Дмитрий Семёнов

Евгений, если там мелководье - смогут. Если нормальная вода - нет

Кирилл Молодцов

Богдан Греченевский

У меня два вопроса. 1) почему вода стала зелёной? Никакие отходы не сливаются в это озеро, да и использую я его только для производства бетона и для выработки электричества. 2) может ли вода в озёрах и морях закончиться?
Играю на версии 1.0

David Glonti

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

David Glonti

Богдан,
1. Когда загрязнение доходит до воды, то она становится зелёной. Если Вам не нравится зелёная вода, то в настройках графики нужно отключить динамическую воду, и она станет обычной.
2. Вода бесконечная

Сергей Мациевский

Богдан Греченевский

David, спасибо, но вообще я немного не понимаю как вода стала зелёной именно на 37 часу игры, озеро находится рядом с главным заводом, и загрязнение огромное. Но почему то именно сейчас оно загрязняется

На скриншоте это озеро

David Glonti

Богдан, у меня вода не была зелёной ( динамическая вода была выключена). Создал карту в песочнице, поставил 20-30 паровых машин, включил нужный параметр. Вода стала зеленеть как-только загрязнение дошло до воды. Возможно, Вы начали игру на 0.18 а ближе к 37 часу игра обновилась до 1.0?

Богдан Греченевский

David, я начал с 0.18 играть на этом сохранении, позавчера до 1.0 обновил и сегодня включил динамичную воду

Читайте также: