Rust
December 5, 2024

Polish and Progress

Bálint [Rust]

Большое обновление качества жизни с более чем 60 улучшениями и исправлениями, а также Rust исполняется 11 лет, и приближается Рождество!


Празднование 11-летия Rust

Кажется, что только вчера мы праздновали 10-летие Rust, но уже в эту среду, 11 декабря, Rust исполняется 11 лет!

Это был ещё один невероятный год для Rust: рекордное количество игроков, события на Twitch и ежемесячные обновления контента, которые привнесли в мир Rust одни из самых значительных изменений за последние 11 лет.

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

  • Обновление мира
  • Рюкзаки
  • Учебный остров
  • Цифровые часы
  • Док для грузовых судов
  • Миниган + огнемёт
  • Сейсмический датчик
  • Наручники + капюшон для заключённых
  • Мотоциклы + велосипеды с педалями
  • Путник-торговец
  • Сигнализация из консервной банки
  • Металлоискатель
  • Обои
  • Ручной водолазный аппарат
  • Обновлённые локации
  • Рэдтаун
  • Радиоактивная вода
  • T1 SMG + T3 SKS
    ...и многое другое!

В честь 11-летия Rust на следующей неделе в игре вас ждёт торт и воздушные шары. А ваши друзья смогут получить 50-процентную скидку на Rust в течение 10 дней, начиная с понедельника!

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

Улучшения и изменения

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

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

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

Размер стака баллонов с пропаном
Баллоны теперь можно стакать до 20 штук.

Увеличение количества входных данных в Dropbox
Увеличено до 4 ячеек для ввода.

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

Место для хранения в холодильнике
Количество мест для хранения в холодильнике увеличено до 48

Самонаводящиеся ракеты
Самонаводящиеся ракеты были добавлены в ящики с добычей для «Брэдли» и боевых вертолетов


Баланс волчьих стай

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

Проблемы

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

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

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

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

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

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


Улучшение электрики

Катушка Теслы
Снижено максимальное энергопотребление катушки Теслы с 35 до 25 (без разницы во времени убийства)

Storage Monitor
Добавлен сквозной слот в Storage Monitor

Скорость лифтов
Увеличена скорость лифтов, установленных игроком, на 50%

Индикатор полной зарядки аккумулятора
Добавлен слот для вывода информации о полной зарядке аккумулятора


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

Теперь вы можете изготовить радиоприемник для установки в свой модульный автомобиль из 120 металлических фрагментов, если у вас есть набор Voice Props. Если у вас его нет, с 9 по 19 сентября он продается со скидкой 40%!

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

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

Радио оснащено всеми теми же встроенными и транслируемыми через Интернет радиостанциями, которые есть в Boom Box.


Переработка коптеров

Купленные вертолёты теперь можно поднимать с помощью магнитного крана и измельчать на свалке. Вы получите скрап в зависимости от типа вертолёта и его текущего состояния (50% здоровья = 50% металлолома).

  • Minicopter - 200 скрапа
  • Scrap Transport Helicopter - 300 скрапа
  • Attack Helicopter - 500 скрапа

Украли вертолёт у ваших соседей? Почему бы не уничтожить улики и заодно получить деньги!


Высокие внешние стены и ворота, которые можно модернизировать

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

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

Для создания каменных высоких внешних ворот также требуется 1 лист металла и всего 3 шестерни, а стоимость их создания снижена до 4000 единиц древесины/камня (вместо 4500) для более эффективного управления запасами.


Статистика торговых автоматов

Теперь вы можете просматривать множество статистических данных о своём торговом автомате.

Сюда входит:

  • История транзакций
  • Самые прибыльные товары
  • Самые продаваемые товары

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

Также доступны некоторые «долгосрочные статистические данные» (все анонимные):

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

Эти статистические данные обрабатываются на сервере, а затем передаются клиентам.

Вот несколько советов, которые помогут владельцам серверов:

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

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

vendingmachine.max_history — определяет максимальное количество записей о покупках, которые торговый автомат будет хранить в памяти (на стороне сервера) перед удалением старых записей, чтобы освободить место для новых

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


Шелтеры

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

Есть один недостаток: для размещения укрытий теперь требуется несколько секунд (как и для размещения высоких внешних стен). Это даёт достаточно времени, чтобы предупредить вас о том, что ваше старое укрытие будет уничтожено, а также не позволяет использовать их в PvP.


Прицел с переменным масштабом

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

Теперь этот прицел переименован в «прицел с переменным зумом» и поддерживает 3 уровня зума: 4x, 8x и 16x. Это делает его лучше, чем оба старых прицела вместе взятые, и добавляет новый уровень зума для быстрого наведения на цель.

По умолчанию для увеличения масштаба используется сочетание клавиш «Page Up», а для уменьшения — «Page Down», однако более опытные игроки переназначат эти сочетания.

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


Изменения в торговых автоматах для обмена скрапом

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

Видимость под водой

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

Обезвреживание наземных мин

У наземных мин теперь есть 15% вероятность взорваться, если их обезвредит другой игрок, так что будьте осторожны при разминировании!

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


Изменения блеска руды

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

Мы сделали это по нескольким причинам:

  • Это приводит их поведение в соответствие с мини-игрой с маркерами на деревьях
  • Сначала было немного неудобно находить искорки, теперь это выглядит более плавно
  • Каждая искорка была сетевой сущностью, которую нужно было включать и выключать по мере перемещения игрока
  • У нас была одна искорка на каждый узел в мире, поэтому на среднем сервере теперь будет примерно на 4,5 тысячи сущностей меньше

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


Улучшение в работе очереди

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

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

Было:

var net = Net.sv.StartWrite();
net.PacketID(Message.Type.Message);
net.String("Top Text");
net.String("Bottom Text");
net.Send(new SendInfo(conn));

Стало:

var net = Net.sv.StartWrite();
net.PacketID(Message.Type.Message);
net.String("Bolt");
net.String("This server has instant craft!");
net.Send(new SendInfo(conn));

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

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


Усовершенствования безопасности

Ещё одна новость для всех владельцев серверов. Мы начали обновлять систему безопасности RCON. Если вы используете небезопасный пароль RCON, сервер будет выводить очень заметные предупреждающие сообщения. В некоторых случаях сервер RCON не запустится, если пароль недостаточно надёжен (например, «пароль» или «смени меня»).

Мы также добавили некоторые меры защиты от атак методом перебора. Теперь, когда клиент RCON пытается подключиться с неправильным паролем, после 5 попыток IP-адрес будет заблокирован на 5 минут. Все эти значения настраиваются с помощью ряда новых переменных. Также есть несколько команд переменных, которые позволяют навсегда заблокировать IP-адреса и сети.

  • rcon.banduration (по умолчанию: 300)
    Количество секунд для применения любой автоматической блокировки.
  • rcon.maxpasswordfailures (по умолчанию: 5)
    Количество неудачных попыток ввода пароля перед применением временной блокировки
  • rcon.logfailedattempts (по умолчанию: true)
    Отладка. Ведение журнала всех неудачных попыток ввода пароля / блокировки. По умолчанию: true, но на больших серверах может потребоваться отключить эту функцию из-за спама
  • rcon.permanentbanfailedips (по умолчанию: false)
    Навсегда блокирует IP-адреса, которые превышают пороговое значение неудачных попыток ввода пароля
  • rcon.ban_ip <ip / сеть>
    Навсегда блокирует IP-адрес или сеть
  • rcon.unban_ip <ip / сеть>
    Снимает блокировку IP-адреса или сети как в случае постоянной блокировки, так и в случае временной блокировки/попыток
  • rcon.print_rcon_failed_logins
    Выводит таблицу неудачных попыток входа в систему и информацию о том, привели ли они к блокировке или нет
  • rcon.clear_rcon_failed_logins
    Удаляет всю временную историю неудачных попыток входа в систему/блокировки (не удаляет постоянные блокировки любого типа)
  • rcon.print_rcon_bans
    Выводит список постоянных блокировок IP/сетей

Встроенная аппаратная поддержка ARM64

Мы долго ждали, когда всё наше стороннее программное обеспечение будет изначально поддерживать аппаратное обеспечение ARM64. Теперь это наконец-то произошло, и в качестве первой платформы для тестирования мы переключили версию игры для Mac на использование нашей собственной сборки ARM64 на аппаратном обеспечении Apple Silicon. На данный момент аппаратное обеспечение Intel по-прежнему поддерживается на Mac и не затронуто этим изменением.

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


Twitch Rivals возвращается!

Этап пройдет с 9 по 13 декабря!


Встроенный профилировщик сервера

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

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

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

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

Как создать моментальный снимок

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

  • Во-первых, эту функцию необходимо активировать при запуске сервера. Вы должны запустить исполняемый файл сервера с параметром`-enableProfiler`
  • После загрузки сервера вы можете выполнить следующую консольную команду: `profile.perfsnapshot [задержка] [имя] [количество кадров]` (все параметры необязательны)
  • задержка указывается в секундах, по умолчанию равна 15
  • имя — это имя файла снимка, по умолчанию «Профиль»
  • frames — количество кадров, включаемых в снимок — по умолчанию 10, максимум 10
  • Как только истечёт время ожидания (вы увидите сообщения в глобальном чате), будет записано запрошенное количество кадров, сгенерирован и сжат снимок — вы найдёте его в <сервер-директории>/server/<идентификатор>/profiler/<имя>.json.gz

Примечание 2: если во время создания файла что-то пойдёт не так, он не будет создан (вы можете увидеть это в файле журнала сервера). Я продолжу работу над профилировщиком, чтобы устранить все недочёты.

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

Изучение моментального снимка

Вы можете извлечь сжатый снимок с помощью любой утилиты, поддерживающей GZip (проводник Windows 11, 7zip). В снимке используется формат событий Google, поэтому вы можете просмотреть его с помощью любого инструмента. Например, я использую Perfetto UI для визуализации данных — просто перетащите json-файл в представление, и вы сможете начать исследование.


Создание карт и моддинг сборных конструкций

В этом месяце мы добавили больше готовых элементов для сообщества картографов и моддеров.

Ниже приведен список дополнений и изменений:

  • Дополнительные бетонные, угольные, гравийные, потолочные, кровельные и гипсовые плиточные сборные элементы
  • Сборные элементы из цветных деревянных панелей (на фото выше)
  • Сборные элементы из дорожной и асфальтовой плитки
  • Варианты холодных и тёплых объёмов (низкий, средний, высокий)
  • Радиационные объёмы — минимальный, низкий, средний и высокий уровни радиации
  • Сборные элементы из токсичной/радиационной воды + цилиндры
  • Невидимый куб 3x3, который можно создать с помощью администратора + стена
  • Сборный элемент из статической рождественской гирлянды
  • Статические заготовки для огня. Статические наклейки-распылители.
  • Статические заготовки для торта (из предыдущих лет)
  • Невидимая статическая кнопка. Исправления для изменения материалов светящихся и стеклянных кубов

Рождество
16 декабря в 22:00 по МСК выйдет обязательное обновление, чтобы включить праздничные мероприятия этого года.


На этом девблог окончен :)

Подписывайтесь на наш Telegram-Канал по Rust!

Также у нас есть Live-канал!@Balint_Live