NEWS

Печать и полировка

Официальные новости Rust от Facepunch

Печать и полировка
ОФИЦИАЛЬНО

Переработка чертежа

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

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

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

Улучшения верстака, которые касались металлолома, использовавшегося в технологическом дереве, также были переработаны. Вместо сокращения количества использованного металлолома, обновление верстака для сальверстака теперь имеет 20% шанс не поглотить чертёж. Улучшение прототипа верстака теперь будет иметь фиксированный процент успеха 25%, при этом стоимость удвоена.

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

Узи 9мм

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

Поддержка геймпада

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

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

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

ПЕРЕРАБОТКА СКОТА

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

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

• Коровы больше не умирают от старости, и вместо того чтобы умирать от голода, просто ложитесь с мощностью 1 HP.

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

• Коровы теперь могут есть любую пищу, которую может лошадь.

• Чрезмерный выпас «голый» исчез. Если в загоне будет достаточно травы, коровы будут есть в корыт вдвое реже и экономит на еде.

• Покажите всё в интерфейсе: владелец, статус беременности, отец и время перезарядки, кулдаун навоза и молока/шерсти...

• Коровы хранят до 3 видов молока для снижения микроменеджмента.

• Намёк на рецессивные гены с интерфейсом и покупателем NPC, а также намекай на них в интерфейсе.

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

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

• Имена коров больше не выбираются по языковым соотношениям на сервере, вместо этого дикие коровы не имеют имени, а после владения имеют имя в зависимости от вашего региона.

• Увеличить дистанцию отрыва и заставить коровы отражать скорость игрока, когда их ведут, чтобы они могли мгновенно убежать.

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

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

Самое главное — теперь вы можете подарить своим корам и овцам, чтобы проявить к ним любовь и признательность!

Питомец

Ножницы

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

Это новый стандартный чертёж и требует верстака первого уровня для крафта.

Открытие глубоководного маяка

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

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

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

Крокодильий пирог

Теперь вы можете использовать всё это мясо крокодила, собранное в джунглях, на кухонном верстаке — создав новый пирог! Пирог с крокодилом запугает животных рядом и заставит их держаться подальше.

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

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

Вставка из шерстяной брони

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

Вы найдёте его в технологическом дереве первого уровня Workbench.

Материковые научные лодки

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

Эти лодки сражаются только с игроками в экипировке (по тем же правилам, что и патрульный вертолёт), в отличие от традиционных «событий», у них нет маркеров или уведомлений на карте.

Обновление Nailgun

После почти 9 лет игры Nailgun наконец получил заслуженное визуальное обновление, придавая обновлённый облик одному из более импровизированных видов оружия Rust.

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

Вороны и чайки

Стаи птиц были добавлены в рамках небольшого расширения дикой природы.

Стаи ворон и чаек будут летать по карте в поисках интересных им вещей.

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

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

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

Анимации поворота на месте

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

Я считаю, что у нас ещё много способов улучшить их, и мы продолжим делать это в будущих патчах.

Зеркальные лестницы

Мы добавили зеркальные версии лестниц L и U.

Вы можете перевернуть их с помощью SHIFT + R во время развертывания или молотком в течение 10 минут после установки.

Модульный стартовый инвентарь автомобилей

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

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

Улучшения лодок Scientist

В этом патче в катерах Scientist было внесено ряд улучшений. Новая система передвижения, система прицеливания и множество доработок турелей торпедных катеров.

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

Передвижение и прицел —

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

Смена мест —

Турели PT Boat были переписаны с нуля, и теперь они стали гораздо более отзывчивыми. У них появились собственные модели обзора, а также новая система стрельбы.

Турели торпедных катеров —

Новые анимации взрывного сброса и прикрепления

Мы обновили анимации при сбросе и прикреплении гранатных предметов — раньше у всех были одинаковые анимации метания.

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

Значимые изменения

Извлечение семян

Ягоды теперь имеют опцию «Экстракт», чтобы удалять семена без их употребления.

Иконка ящика для взлома

Иконка карты заблокированных ящиков с взломом была обновлена, чтобы отразить 3D-модель.

Бафф DPV

Меньший расход топлива, отсутствие потерь состояния при пикапе, ускорение быстрее.

Маленькое дерево ударило по прощению

Маленькие деревья теперь легче задевать.

Перетаскиваемые маркеры карты

Маркеры карты можно перетащить, удерживая среднюю кнопку мыши.

Бафф ручной работы на ПП

Ручной пистолет-пулемёт теперь наносит немного больше урона.

Цвет конопли

Добавлена цветовая настройка доступности для цветочных бутонов на растениях конопли.

Переименование животных

Теперь игроки могут переименовывать свой скот, а также лошадей.

Телефонные разговоры NPC

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

• В основном надёжный прогноз погоды

• Текущее состояние электросети

• Обратный отсчёт мероприятия путешествующего продавца

• Количество доступных апартаментов

Фруктовые деревья

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

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

Исправления рампы

Некоторые давние проблемы с пандусами были исправлены.

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

Их также будет легче наносить на фундамент.

Несоответствия в сборке скинов

Мы исправили непреднамеренные несоответствия на скинах зданий.

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

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

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

Треугольные полы/рамки, исправление урона от всплеска

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

Мы это починили.

Характеристики

Мы понимаем, что игра не на том уровне, где должна быть по производительности.

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

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

• Медианная частота кадров у всех игроков на ~10% выше

• ~1,6 ГБ меньше памяти

• Мы шли на самые неприятные заикания: стрельбу из оружия, загрузку базы, перевозку груза

• Сбор мусора происходит вдвое реже (каждые ~12 минут вместо каждые ~6)

• До 25% меньше сетевого трафика на сервере на 500 игроков

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

Производительность — Привилегия построения

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

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

У нас уже была система кэша, но она всё равно была дорогой. Для сервера и клиента.

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

5,7 мс

0,02 мс

Характеристики — эффекты стрельбы из пушки

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

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

• Исправлена зацепка до ~1 мс при прерывании звука, что часто случается при стрельбе

• Фиксированные вспышки дула, вызывающие медленную проверку двигателя до ~7 мс

• Проанализировали расстояние, на котором мы отсеяем эффекты

• Все эффекты оружия теперь предварительно нагреты в достаточном прогреве (дульные вспышки, звук выстрела, попадания пули и т.д.)

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

~30MB

Производительность — базовая нагрузка

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

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

• Различные сущности, которые включают и выключают всё в зависимости от состояния, теперь появляются в 10 раз быстрее (~26 мс -> ~2 мс у 248 человек)

• Генерация промышленной трубной сетки теперь осуществляется по основной резьбе

• Наиболее часто используемые развертываемые устройства теперь объединены (адаптеры для хранения, конвейер, ветряные мельницы и др.)

• Система LOD теперь распределяет свою работу на несколько кадров, когда плотная часть базы требует обновления, вместо того чтобы делать всё сразу (~15 мс -> ~1 мс для худших кадров)

• Блокировки кода, адаптеры хранения и другие объекты теперь считаются статичными, но при этом не перемещаются; ранее всё, что связано с родителем, автоматически считалось постоянно движущимся, что занимает больше работы, чем нужно

• Около дюжины ещё десятка ошибок с LOD и отбором исправлены, например, свет и частицы остаются видимыми на любом расстоянии после загрузки базы

• Исправлены застрявшие строительные блоки без пакетов, из-за чего рендеринг стал дороже

Всё это сделает загрузку и перемещение баз не только немного быстрее в целом, но, что важнее, улучшит минимумы FPS на 1% и уменьшит скачки лагов.

Более гладко

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

Производительность — избегание распределения

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

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

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

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

Производительность — звуковая система

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

• Устранена зацепка до ~1 мс при прерывании звука (как упоминается в стрельбе выше)

• Окклюзия: приглушение звуков за стенами теперь более чем в 10 раз дешевле вне базы

• Выделения: звуки теперь выделяют почти нулевую память при воспроизведении, что означает меньше сборки мусора

Производительность — глубоководная память

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

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

За пределами глубокого моря это экономит.

~260 МБ оперативной памяти

Модифицированные серверы, которые создают глубоководный контент на главном острове, всё ещё работают. Игра загружает его сразу по мере необходимости и сохраняет до конца сессии.

Производительность — текстуры рельефа

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

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

Производительность — фонарики и лазеры

И фонарики, и лазеры получили схожие оптимизации: лазеры были немного сложнее, но в целом сталкивались с той же проблемой. Поскольку мы используем Unity, оба скрипта опирались на обновление лазера/фонаря каждый кадр, и хотя эти обновления за кадр были довольно дешёвыми, если запускать их для каждого одного экземпляра всё равно накапливается, когда у тебя 100 таких вариантов.

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

Для лазерных лучей всё было немного сложнее: у нас уже была система, позволяющая обновлять лазеры только каждый кадр в пределах бюджета 0,25 мс, но это привело к тому, что мы обновляли всего 5-10 лазеров за кадр. Мы не могли просто сделать то же самое, что и фонарики — лазеры немного сложнее: они уменьшаются до того, куда в итоге получают raycast. Решение сводилось к тому, чтобы пакетировать лучевые передачи для всех лазеров сразу, а не проверять их по одному, обновлять визуальный элемент в конце лучей, а затем восстанавливать сетку для каждого лазера на экране. Мы пробовали просто масштабировать квады с помощью пакетных преобразований, но в итоге всё шло медленнее, чем просто создание новой сетки каждый кадр. Новое решение может работать в 5 раз больше лазеров при половине бюджета старого. ( )

0,125 мс

производительность — память анимации

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

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

Производительность — аудиокомпрессия

В Rust у нас довольно много аудио — недавно мы передали более 0,5 ГБ загруженного аудио на клиенте, поэтому я посмотрел, какие изменения можно внести. Во многих случаях мы запускали аудио без какой-либо компрессии, что занимало довольно много места в памяти. Применяя очень консервативную ворбис-компрессию, мы смогли сократить общее использование аудиопамяти на 84% без слышимой потери качества. Это сэкономило примерно часть памяти.

470 МБ

Перформанс — скины мастерской

Когда мы выпускаем новые скины, игра загружает их из Steam Workshop, когда вы с ними встречаетесь.

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

После скачивания их текстуры отправлялись на вашу видеокарту, но полная копия также хранилась в оперативной памяти, которую никогда не использовали. Теперь эта копия удаляется как можно скорее. После загрузки 22 скинов Workshop это сбережённая ОЗУ.

~300MB

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

Производительность — больше текстур рельефа

В этом месяце я проанализировал наши текстуры активного рельефа и обнаружил несколько больше не используемых или заменяемых каналов и текстур. Например, с Rust Render Pipeline мы можем использовать лучшие методы для вырезания мелких отверстий в ландшафте, а в старой системе нам требовалась целая новая текстура пространства экрана (которая теперь исчезла). Должны быть небольшие оптимизации производительности GPU terrain благодаря лучшему использованию текстур + кэшированию и лучшей геометрии LOD для низкого качества. В целом вы должны увидеть улучшение памяти

~115MB

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

Серверы теперь перезагружаются быстрее!

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

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

Это снижает максимальное количество серверов с 10 минут > 2 минут на перезагрузку.

Производительность — генерация карт

Процедурная генерация карт — краеугольный камень Rust. Однако по мере роста Rust растёт и время, которое она занимает. В этом месяце я потратил время на оптимизацию процесса генерации карт, при этом сохраняя результаты прежними. Главная цель здесь была сделать то же самое, но быстрее.

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

почти вдвое быстрее

Производительность — выравнивание сборных материалов

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

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

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

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

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

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

~43% от общего числа объектов

-1,44 ГБ использования памяти

ПРОИЗВОДИТЕЛЬНОСТЬ — НОВЫЙ NAVMESH

Застой в Navmesh на основной нити, вызванной призрачными кораблями и мегабазами, был сглажен.

Раньше призрачные корабли не строились асинхронно, потому что они двигались, теперь для них сборка navmesh не зависит от физических запросов и просто проходит через коллайдеры в локальных SPCE.

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

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

Сохранение навмешей перенесено в фоновую ветку, что значительно снижает нагрузку на основную тему.

Старый navmesh, который всё ещё можно использовать с arg запуска -useOldNavmesh, будет удален в следующем патче.

Производительность — оптимизация сети

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

Общие сокращения

~270 КБ/с

Сетевые LOD

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

Сетевые LOD можно управлять двумя конварами:

• net.position_lod (0 = выключено для всего, 1 = только для сущностей (NPC, животные, другие), 2 = 1 + глобальные сетевые сущности (грузовой самолет, груз, чинук)

• net.position_lod_players (0 = скидка для игроков, 1 = игроки включены, но только средняя или полная ставка, 2 = такая же схема, как и сущности)

Сетевые LOD будут активированы на нескольких выбранных FP-серверах для тестирования, прежде чем они будут правильно внедрены в середине месяца.

производительность — сетевая пакетизация

Кратко: до

-25% пропускной способности

Наша сетевая библиотека RakNet удивительно хорошо себя показала, несмотря на все злоупотребления, которые мы её подвергли. Мы можем отправлять до 500 000 пакетов в секунду 800+ игрокам, прежде чем она начнёт жаловаться! Однако то, что мы можем, не значит, что должны...

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

В этом месяце я сгруппировал пакеты перед отправкой игрокам, что значительно снижает нагрузку на шифрование. Это снизило сетевой трафик на 25% благодаря захвату сервера на 500 поп-серверов. Бонус: это также снижает нагрузку на сетевой убор.

Эта функция включена по умолчанию и может включаться на серверах через «пакетные пакеты» ConVar

Производительность — изменения в PhysX для грузового суда

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

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

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

Пики, которые вы видите выше, — это когда грузокорабль активен на сервере, видно, что они значительно уменьшились после того, как обновление было запущено в 22.010 в 12:00 внутри компании.

Производительность — Вакансии 4 сейчас стабильны

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

UsePlayerUpdateJobs

Краткое напоминание: UsePlayerUpdateJobs параллелизирует работу, связанную с обработкой игроков. Новый уровень 4 дополнительно параллелизирует Server Occlusion и переносит сохранение сетевой очереди игроков в потоковый пул. Это значительно улучшает производительность сервера с высоким уровнем популярности — один сервер сообщества сообщил о улучшении времени кадра на 30% при 1k игроках (10fps -> 13 мс/с или 100 мс/кадр -> 70 мс/кадр).

В следующем патче я планирую удалить режим Jobs 3 и связанный с ним код.

Объёмные облака всегда включены

Мы обновили графические настройки, чтобы убрать опцию отключения объемных облаков.

Вместе с этим изменением мы выявили и решили проблему производительности объёмных облаков. Их производительность теперь должна соответствовать старым облакам билбордов.

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

DLC о скинах Scrap King Building

Станьте королём кучи металлолома с этим новым скином для уровня строительства из листового металла.

Построенная из обломков бесконечных сражений. Запри дверь, завари стены и займёт трон.

Только остерегайся столбняка.

Скин Scrap King Building можно приобрести в игре или у

Магазин предметов Rust Steam

Изменения в софткоре

В этом месяце несколько изменений в софткоре.

• система разворачиваемых трупов удалена

• Лимит TC — 6 размещенных игроков на игрока

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

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

Demoui2

С момента этого патча новый интерфейс демо по умолчанию включён. Старый интерфейс всё ещё можно включить через Convar.

demo.oldui

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

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

С момента этого патча вы также можете экспортировать демо в виде видео. Для этого нужно настроить FFmpeg в вашем PATH, и после обнаружения можно экспортировать с помощью любого из видеоформатов из выпадающего меню. В зависимости от скорости хранения хранения, экспорт в видеоформат гораздо быстрее, чем запись самостоятельно с внешней программой, и позволяет использовать более высокие частоты кадров (до 600 кадров в секунду) для замедленной съёмки.

Новая мастерская, которую можно скинить: гвоздевой пистолет

Мастер-класс этого месяца совпадает с ремейком оружия! Блестящий новый Nailgun также доступен сообществу любителей скинировки.

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

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

Прекращение поддержки Intel x86 Mac

Начиная с этого патча, мы больше не предоставляем сборки x86 для Mac на базе Intel. В дальнейшем будут поддерживаться только ARM64 / Apple Silicon.

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

Обновление Anticheat

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

В январе

Скриптинг

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

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

3,000

Время игры для читеров

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

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

Rust Premium — скоро появится

Rust Premium скоро выйдет, поэтому мы хотели поделиться немного информации о том, что такое Premium, а что нет. Во-первых, Rust Premium — это не Battlepass. Не будет ограниченного прогресса или дорожки наград, и не будет чётко определенного способа игры.

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

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

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

Мы очень рады скоро показать вам Premium, так что следите за новостями.

Моддинг — Map Reload

Около года назад я расследовал проблемы, связанные с получением NRE клиентов во всех местах — они были немного редкими и не имели смысла. Как будто кто-то взял дробовик в состояние runtime клиента.

Примерно в то же время один разработчик мода/владелец сервера поделился кое-что странным для меня — они нашли способ изменить карту клиента, даже заставить её загружать что-то другое, чем работает сервер. И, похоже, это сработало.

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

• Старый метод принудительной загрузки клиентской карты устарел и будет заблокирован в декабре. Для полноты: старый метод заключался в отправке клиенту сообщения «Одобрено» с потенциально другой информацией о мире

• Новый метод, «CL_LoadMap» RPC теперь работает серверами как «благословленный» механизм, позволяющий серверу контролировать то, что загружается на клиенте. Я оставил пример того, как это можно использовать, в ServerMgr.ChangeLevelFor

Что касается того, что происходит с CL_LoadMap, то это по сути то же самое, что и в старом Approved Flow:

• уничтожает все объекты (игроков, контейнеров, предметов, NPC и т.д.) на клиенте, кроме игрока

• сбрасывает игрока (предметы, конвари)

• перезагружает сцену или меняет её на новую

• загружает новую карту и запускает её настройку

• отправляет ClientReady rpc на сервер

Этого должно хватить для различных нужд моддинга. Я буду искать оставшиеся баги.

Серверы Facepunch

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

Новинка

• [EU East] Facepunch Softcore 1

Максимальное увеличение населения

• [EU East] Facepunch 1

• [EU] Facepunch 1

• [EU] Facepunch Premium 1

• [Восток США] Facepunch Premium 1

Уход на пенсию

• [EU] Facepunch 12

• [EU] Facepunch 13

• [EU] Facepunch 14

• [EU] Facepunch Large 2

• [EU] Facepunch Small 4

• [EU] Facepunch Small 5

• [EU] Facepunch Small 6

• [EU East] Facepunch Premium 3

• [EU East] Facepunch Premium 4

• [Восток США] Facepunch 5

• [Восток США] Facepunch 6

• [США] Facepunch Small 2

• [США] Facepunch Small 3

• [US West] Facepunch 3

• [US West] Facepunch 4

• [US West] Facepunch Premium 3

• [Запад США] Facepunch Premium 4

• [Запад США] Facepunch Premium 5