sbox
May 6

sbox — Обновление 06.05.2026

💙 Платформа может заработать в России, новый дизайн сайта, новая система ревью, репорты и много, реально очень много оптимизаций

Оригинал (ссылка)

Ревью (отзывы)

Автор: Garry

Система отзывов обновлена с тегами. Это позволит пользователям выбирать конкретные элементы игры, которые им нравятся или не нравятся.

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

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

Репорты

Автор: garry

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

DMCA

Автор: Garry

Правообладатели теперь могут подавать DMCA-заявки на сайте. Если пакет будет удален по DMCA-уведомлению, уведомление будет отображаться на странице пакета.

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

Автор: matt

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

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

А также разбивка по лучшему и худшему популярному оборудованию - как видно, нам еще много работать с Steam Deck.

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

Отказ от Cloudflare

Автор: matt

Мы отказались от Cloudflare для нашего API и CDN, заменив их на Azure Front Door и Bunny.net. Конечно, есть свои плюсы и минусы, но они оставили неприятный осадок с неясным ценообразованием, которое мы предпочли бы не поддерживать в целом.

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

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

Ещё быстрее время загрузки

Автор: Lorenz

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

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

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

https://cdn.sbox.game/upload/b/a1ec270d/bf0f/46c6/bd83/bc3b7e61ad9a.webm

Проблемы с главном меню

Автор: matt

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

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

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

Connection.OwnerSteamid

Автор: dasds

Владельцы серверов замечали, что игроки обходят баны, используя семейный доступ Steam. Мы теперь открыли Connection.OwnerSteamId, который является SteamId владельца игры.

Это работает так же, как в Garry's Mod, вы можете отклонять игроков в зависимости от того, кто владеет копией игры:

public override bool AcceptConnection( Connection connection, ref string reason )
{
    // Проверяем как SteamId подключающегося, так и SteamId владельца (семейный доступ)
    // OwnerSteamId - это аккаунт, который фактически владеет лицензией на игру.
    // Если забанен через семейный доступ, ID владельца будет отличаться от ID игрока.
 
    if ( IsBanned( connection.SteamId ) )
    {
        reason = "Вы забанены на этом сервере.";
        return false;
    }
 
    // Эта проверка сама по себе была бы достаточной, но для примера
    if ( IsBanned( connection.OwnerSteamId ) )
    {
        reason = "Владелец вашей лицензии на игру забанен на этом сервере.";
        return false;
    }
 
    return true;
} 

UI Batching Backdrops

Автор: matt

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

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

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

Теперь это все один большой пакет и один большой захват кадров - намного быстрее.

Сетевые аллокации

Автор: Lorenz

Обработка сетевых сообщений вызывала множество аллокаций и давление на сборщик мусора из-за упаковки внутреннего типа сообщения. Упаковка — это распространённая проблема .NET, когда стек оказывается в куче.
Теперь мы избегаем этих аллокаций, что должно уменьшить подтормаживание на стороне сервера.

Удалили херню

Автор: matt

Эта белеберда может появиться, остановить игру и с большой вероятностью вызвать сбой.
"Попытка очистить очередь сообщений Windows" — это старый хак в Source 2 для обхода взаимной блокировки в DX11, который мы не использовали долгое время.

Мы обновили код до того, что делает современный Source 2, сделав его более стабильным.

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

Больше нет рендера в основном потоке

Автор: Lorenz

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

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

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

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

Автор: sollwilms

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

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

Контексное меню инструментов

Автор: bakstratch

Теперь у нас есть контекстные меню для инструментов и подинструментов. Они покажут вам все доступные операции и сочетания клавиш.

Набор выборки

Автор: bakstratch

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

Специальная вставка

Автор: bakstratch

Теперь у нас есть специальная вставка, которая позволяет вставлять скопированные объекты с контролируемым расстоянием, вращением и повторением.

Шаблоны проектов

Автор: Carson

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

Игра - Пустая - Пустой проект, чтобы начать создавать игру
Игра - Игрок - Содержит примеры для Первого Лица, Третьего Лица и Вид Сверху
Аддон - Пустой проект, чтобы начать создавать аддон для любой целевой игры
Карта - Проект с очень простой геометрией, созданный с помощью инструментов Сценического Маппинга, может быть нацелен на любую игру
Аддон для Sandbox Game - Проект аддона, который нацелен на игру "Sandbox" и включает пример сущности

Map Editor: компоненты

Автор: dasds

Мы наконец-то получили двери и кнопки для карт, они более-менее соответствуют тому, что вы бы нашли в Source. За исключением того, что Entity IO был заменен на Doo, простое линейное визуальное решение для скриптов.

Карточки в Steam

Автор: matt

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

Вы также можете получить эти предметы в Магазине очков Steam.

Цена в Польше

Автор: matt

Цена в Польше была неадекватной, она была установлена инструментом ценообразования Steam, но не отражала текущую экономику. Поэтому на прошлой неделе мы изменили ее с 91,99zl на 69,99zl.

Если вы купили по более высокой цене, не стесняйтесь вернуть и купить заново.

Итоги

Автор: garry

Наш первый еженедельный патч после релиза! 🎉

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

Мы всегда выпускаем как можно раньше и итеративно. Мы сделали это с Garry's Mod, мы сделали это с Rust, и мы сделаем это с s&box. Мы знаем, какие у нас сейчас проблемы. Мы знаем, что не так, и мы работаем над их исправлением.

Увидимся на следующей неделе для следующего патча 😘

💙 Русскоязычное сообщество s&box