Играю в игры, пишу в блог

Обновление Rust: Промышленная система

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

Телеграм-канал Rust https://t.me/rustblog

Промышленная система

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

Адаптер хранилища

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

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

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

Адаптер для хранения совместим со следующими предметами:

  • Шкаф с инструментами
  • Большой деревянный ящик
  • Малый деревянный ящик
  • Маленькая печь
  • Большая печь
  • Малый НПЗ
  • Электрическая печь
  • Шкафчик
  • Холодильник
  • Ящик для хранения
  • Торговый автомат

Промышленный конвейер

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

По умолчанию конвейер перемещает любой предмет, который он может найти, но вы также можете назначить фильтр, чтобы иметь более точный контроль над тем, какие именно предметы вы перемещаете. Каждый фильтр конвейера может иметь до 12 элементов или категорий (ресурсы/компоненты/одежда/и т. д.). При назначении фильтра конвейер будет перемещать только те предметы, которые соответствуют этим условиям. Вы также можете присвоить значения каждому элементу фильтра для контроля количества, установив Максимальное количество (не отправлять ресурсы, если в целевом контейнере уже есть более X единиц этого ресурса) и Минимальное количество (отправлять ресурсы только в минимальной партии размером X).

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

Инструмент трубопровода

Инструмент трубопровода нужен для соединения промышленных объектов. Если вы уже использовали инструмент для проводов или шлангов, то быстро разберетесь. Трубы бывают 4 цветов, чтобы помочь определить, что куда идет. Здесь действуют те же правила расстояния, за исключением того, что точки привязки должны находиться на небольшом расстоянии друг от друга, и что трубы не могут проходить через строительные блоки или торговые автоматы. Однако они могут проходить сквозь двери (дверные проемы).

Промышленные разделители и комбинаторы

Эти устройства работают, также как и называются, позволяя соединять или разделять поток предметов. В случае с разделителем, подключенным к выходу конвейера, конвейер распределит свои ресурсы между всеми своими соединениями (например, конвейер, подключенный к разделителю, который подключен к трем ящикам, желающим отправить 600 древесины, отправит по 200 древесины в каждый ящик).

Промышленный сборщик

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

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

Электрическая печь

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

Ограничения и параметры сервера

Для поддержания производительности сервера существует несколько ограничений, чтобы предотвратить выход промышленных сетей из-под контроля. Для каждого конвейера существует жестко заданное ограничение на ввод/вывод 16 контейнеров. Это означает, что наряду с ограничением максимальной глубины обычного ввода-вывода, конвейер сможет увидеть только первые 16 контейнеров, с которыми он сталкивается в сети ввода-вывода.

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

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

Существует также несколько серверных параметров для управления скоростью и эффективностью промышленных систем:

  • server.conveyorMoveFrequency — Как часто конвейеры пытаются двигаться (по умолчанию 5 с).
  • server.industrialCrafterFrequency — Как часто крафтеры пытаются что-то сделать (по умолчанию 5 с).
  • server.maxItemStacksMovedPerTickIndustrial — Сколько целых стаков может переместить конвейер за один такт (по умолчанию 12).

Параметры кодового замка по умолчанию

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

Новые опции по умолчанию следующие:

  • только что установленный замок = «изменить код» (для быстрой установки кода),
  • неавторизованный в замке и авторизованный в шкафу = «ввести код»,
  • авторизованный в замке и незапертой двери = «запереть дверь» (для предотвращения оставления дверей незапертыми),

Это позволит вам с первого взгляда увидеть, для чего вам еще нужно ввести код.

Вагоны с лутом

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

Метрики производительности клиента

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

Обновление Unity 2021.3

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

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

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

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

Серверные улучшения обработки воды

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

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

Для решения этих проблем вода теперь будет сливаться за 10 секунд после того, как ее поместили в контейнер. Это означает, что когда вода проходит через несколько контейнеров, каждый контейнер в последовательности будет накапливать буфер (обычно 50-100) в каждом контейнере. Это обеспечивает такой же поток воды, как и раньше, но в основном предотвращает быстрое включение/выключение контейнеров. В результате небольшая последовательность из 3 полных бочек, соединенных друг с другом и питающих разбрызгиватель, которая раньше посылала 10-20 сетевых обновлений каждые несколько секунд, теперь не будет посылать никаких обновлений вообще, пока система активна, только несколько обновлений, когда в системе закончится вода. Это должно повысить производительность в первую очередь на сервере, но получение меньшего сетевого трафика также поможет производительности клиента.

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

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

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

Отключение карты Хапис

Сегодня окончательно снимается с производства карта «Остров Хапис». Остров Хапис был впервые представлен в апреле 2015 года Петуром, вдохновленным оригинальной картой старой версии Rust. За прошедшие годы Хапис прошел через бесчисленные изменения и достиг своего сегодняшнего состояния.

Почему все же приходится отключать Хапис?

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

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

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

Тестирование многопоточности

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

Отключение совместного использования портов запроса сервера

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

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

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

См. также:

Новости Rust в телеграме t.me/rustblog

Дальше