sbox — Обновление 15.10.2025
На этой неделе мы значительно повысили производительность сети, добавили редактор спрайтов для 2D-игр, упростили рендеринг целевых ресурсов и многое другое
Оригинал (ссылка)
Оптимизация сети
Мы внесли множество изменений в работу сети, в основном направленных на сокращение времени кадра и улучшение масштабируемости при подключении большего числа игроков.
Наибольшее улучшение связано с тем, как обрабатываются Sync Vars и сетевые Transforms. Теперь мы отслеживаем, какие игроки уже имеют последнюю версию сетевого значения, чтобы не тратить время на проверку их состояния по сравнению с текущим состоянием каждый кадр. Это действительно полезно, когда у вас много сетевых объектов, которые не меняются.
Мы также полностью переработали, как хранятся и создаются дельта-снимки. Каждый сетевой объект теперь хранит свое собственное локальное состояние снимка и кэширует данные между обновлениями. Когда нам нужно отправить новые данные игроку, мы можем быстро сравнить их с его последним подтвержденным снимком, используя xxHash3, и отправить только то, что действительно изменилось.
Вот пример различий во времени кадра, когда у вас 200 в основном статичных сетевых объектов с 64 подключениями, где каждый сетевой объект также имеет 3 Sync Vars.
Сжатие и пропускная способность
Мы добавили сжатие LZ4 для больших пакетов. Оно включается автоматически, когда нагрузка превышает 128 байт, сокращая использование полосы без значительных затрат на ЦП. Очень маленькие пакеты остаются несжатыми.
И наконец - это важно для выделенных серверов - мы увеличили лимит отправки Steam Networking с 1 Мбит/с до 1 Гбит/с. Старый лимит мог перегружать серверы, пытающиеся обрабатывать большой трафик.
Редактор спрайтов
Теперь есть полноценный редактор ресурсов для Спрайтов, что значительно упрощает создание больших Спрайтов с несколькими анимациями (и дает нам много возможностей для расширения, вместо того чтобы запихивать все в Инспектор...).
Теперь просмотр Спрайта в Инспекторе покажет список анимаций, которые вы можете предварительно просмотреть (похоже на модели), и если вы хотите внести изменения, вам нужно будет открыть Редактор.
А для Спрайтов с единственным кадром (обычно Встроенные Спрайты) Инспектор будет показывать только свойства для их Текстуры и Происхождения, так что вы все равно сможете быстро встроить Текстуры как Спрайты, не открывая Редактор.
Верёвки
Мы наконец смогли перенести компонент Ремень из игрового режима песочницы в движок.
Веревки используют интеграцию верлет и сталкиваются с миром.
В сочетании с компонентом LineRenderer вы сможете быстро настроить веревки и кабели.
Render Texture Assets
Вы всегда можете создать Render Target и использовать её через код. Теперь вы можете сделать это полностью через редактор, создав RenderTexture, перетащив его на камеру для рендеринга и используя текстуру в любом месте, например, в UI или в световом шаблоне.
Улучшения настроек
Меню настроек ввода было сломано некоторое время, теперь это исправлено, и вы можете переназначить действия.
Мы добавили второй слот для привязок, чтобы у вас было две привязки для одного действия.
Мы также улучшили внешний вид меню. Это не окончательный дизайн, мы изменим его в будущем.
Генерация Nav Mesh
Мы переписали генерацию навмеша на C#. Визуально изменений нет, но это исправляет сбои, устраняет крупную утечку памяти и закладывает основу для будущих функций навигации.
До сих пор мы использовали библиотеку Recast, и в нашей переписке мы по-прежнему следуем тому же алгоритмическому подходу. Однако почти весь оригинальный код Recast был удален и адаптирован под наши нужды.
Recast хорошо служил нам, но это фактически мертвая библиотека, и старая полунативная / полуподдерживаемая настройка стала хрупкой: запутанная собственность, большие неуправляемые буферы, пересекающие границы, неудобные потоки и болезненное обслуживание.
Это также соответствует нашему более широкому стремлению сократить зависимость от устаревших технологий, мы не хотим, чтобы основные системы зависели от не поддерживаемой десятилетней библиотеки C++. Теперь это чище, безопаснее и полностью наше для развития.