sbox — Обновление 22.04.2026
🧬 До релиза осталась всего неделя, и мы успели добавить все последние доработки. Auto LOD, исправления UI Batching, поддержку 2D-спрайт-листов, переработку медиа фреймворка, массу весенней уборки, а также несколько крупных исправлений и оптимизаций.
Оригинал (ссылка)
Sandbox Game: Оружие, которое само стреляет
Это функция, которую я добавил несколько недель назад, но она действительно проявляет себя сейчас с добавлением Ракетницы и поддержкой Физического Пистолета.
Это означает, что ваши конструкции могут стрелять ракетами..
Или захватывать вещи, как тракторный луч..
Sandbox Game: RT Камера
Теперь вы можете связывать камеры с телевизорами, что отлично подходит для механизмов или просто для развлечения.
Вы уже могли это делать некоторое время, но я хотел показать, как вы можете сделать это сами в своих играх. Вы можете создать текстуру целевого рендеринга с определенным размером и просто связать ее с RenderTarget камеры.
Авто LOD
Мы добавили возможность автоматической генерации LOD непосредственно в modeldoc.
Под капотом Arseny's meshoptimizer делает основную работу.
Видео предоставлено Northbound RP
Система разработана так, чтобы быть максимально простой в использовании, и вы должны получить неплохие результаты с настройками по умолчанию. Однако вы также можете точно настроить отдельные параметры и даже смешивать ручные и автоматически сгенерированные LOD.
Импорт спрайтов
Теперь вы можете импортировать спрайты из спрайт-листа без необходимости вручную их разделять. Просто установите строки/столбцы и выберите, какие кадры вы хотите импортировать:
При импорте спрайт-ленты (вертикальной ИЛИ горизонтальной) автоматически установятся строки/столбцы и выберутся все кадры, чтобы их можно было импортировать без лишних манипуляций :)
Map Editor: Мосты
Еще один большой инструмент из Hammer, перенесенный в инструмент для картирования. Соединяйте края и грани.
Окно отключения
Иногда, пытаясь присоединиться к игре, вы могли вернуться в меню, не понимая, почему или на каком этапе что-то пошло не так. На этой неделе мы улучшили поток подключения, упорядочили внутренние процессы и добавили больше обратной связи.
Игроки теперь будут видеть большие новые сообщения, когда они отключаются от сервера или когда попытка подключения не удалась, с довольно описательными причинами. Так мы теперь показываем сообщения о кике, и мы исправили проблему, из-за которой эти сообщения иногда отображались искаженно, так что вы будете знать, когда вас кикнули за RDM и вам стоит опустить голову от стыда.
Исправление Bindless API
После объединения UI-батчинга и новых теней мы наблюдали незначительные и интенсивные артефакты на картах AMD.
Мы переключили все эти шейдеры на использование безпривязочных текстур, которые отличные, но требовали явного указания с NonUniformResourceIndex, чтобы работать в неравномерных случаях (что было 99% наших случаев...). Хотя мы указывали это как Bindless::GetTexture2D( NonUniformResourceIndex( TextureID ) ), они на самом деле ничего не делали как параметр функции, это нужно было делать на самом дескрипторном хипе.
Решение было простым: если 99% времени нам нужно было использовать NonUniformResourceIndex, мы могли бы сделать это внутри Bindless::GetTexture2D( TextureID ), чтобы людям не приходилось беспокоиться о том, что это значит. Если у нас есть обоснование, мы можем сделать вариант, когда вы знаете, что у вас есть равномерный индекс ресурса.
Больше никаких артефактов на AMD.
Переписывание медиа фреймворка
С самого начала мы использовали FFmpeg как быстрый и простой способ заставить работать медиаплееры, но мы всегда знали, что это большая пандора, когда мы выпускаем с проблемами лицензирования вокруг всех кодеков.
Поэтому мы убрали нашу зависимость от FFmpeg, хотя он мог обрабатывать практически любой кодек или формат файла, мы предпочли ограниченный выбор наиболее часто используемых кодеков и форматов файлов, таких как AV1, WebM и Opus.
В дальнейшем мы будем поддерживать следующие форматы и кодеки:
- Декодирование: VP9, AV1, анимированный WebP, H.264 (только Windows через MMF)
- Кодирование: VP9, AV1, анимированный WebP
- Контейнеры: .webm, .mp4
- Декодирование: Opus, FLAC, MP3, WAV/PCM, AAC (только Windows через MMF)
- Кодирование: Opus, WAV/PCM
- Контейнеры: .ogg, .wav, .flac, .mp3, .opus
Сетевое воспроизведение: HTTP/HTTPS
Примечание: Декодирование H.264 и AAC предоставляется через Windows с помощью Media Foundation, если вы добавляете видеоконтент в свои игры, мы рекомендуем AV1 или VP9.
Больше документации можно найти здесь: https://sbox.game/dev/doc/media/
Если вы считаете, что чего-то важного не хватает, не стесняйтесь открыть проблему. Если это широко используемый формат/кодек, мы можем его добавить, но мы не будем поддерживать каждый кодек на свете.
AV1 кодирование на сервере
После изменений в медиа-фреймворке движка мы рассмотрели, как мы кодируем видео в нашей мастерской. Ранее все они были H264 в MP4, но мы перешли на AV1 в WebM и начали перекодировать все существующие видео.
Вот некоторые размеры видео из наших популярных игр.
Dark Descent (1080p 60fps, 27.8s) ┃ Variant ┃ MP4 Size ┃ AV1 Size ┃ Saving ┃ MP4 SSIM ┃ AV1 SSIM ┃ ┃ High ┃ 41.80MB ┃ 16.29MB ┃ -61% ┃ 0.9719 ┃ 0.9538 ┃ ┃ Medium ┃ 17.65MB ┃ 9.93MB ┃ -44% ┃ 0.9598 ┃ 0.9535 ┃ ┃ Low ┃ 3.41MB ┃ 3.02MB ┃ -11% ┃ 0.9284 ┃ 0.9499 ┃ Sausage Survivors 2 (1080p 30fps, 24.6s) ┃ Variant ┃ MP4 Size ┃ AV1 Size ┃ Saving ┃ MP4 SSIM ┃ AV1 SSIM ┃ ┃ High ┃ 12.94MB ┃ 5.99MB ┃ -54% ┃ 0.9889 ┃ 0.9603 ┃ ┃ Medium ┃ 6.11MB ┃ 3.31MB ┃ -46% ┃ 0.9835 ┃ 0.9551 ┃ ┃ Low ┃ 1.39MB ┃ 1.00MB ┃ -28% ┃ 0.9638 ┃ 0.9479 ┃ Sandbox (720p 50fps, 21.2s) ┃ Variant ┃ MP4 Size ┃ AV1 Size ┃ Saving ┃ MP4 SSIM ┃ AV1 SSIM ┃ ┃ High ┃ 8.45MB ┃ 6.49MB ┃ -23% ┃ 0.9328 ┃ 0.9760 ┃ ┃ Medium ┃ 8.45MB ┃ 5.65MB ┃ -33% ┃ 0.9328 ┃ 0.9741 ┃ ┃ Low ┃ 1.53MB ┃ 1.46MB ┃ -5% ┃ 0.9135 ┃ 0.9700 ┃
- Размеры файлов: на 5–61% меньше по всем параметрам, наибольшие выигрыши в контенте 1080p с высоким битрейтом
- Качество: Все варианты AV1 остаются выше 0.95 SSIM (отлично). Sandbox действительно показывает значительное улучшение качества
- Худший случай: Sausage Survivors 2 high падает с 0.989 -> 0.960 SSIM - заметно по метрикам, но все еще выше порога восприятия, при половине размера файла
Новые финансовые метрики
Я обновил наши открытые финансовые метрики, чтобы они были еще более подробными, добавив наши расходы на ведение s&box как компании, зарплаты, серверные расходы, налоги, фонд игр, все это там.
Люди скажут, что это безумие быть настолько прозрачными, показывая, сколько мы зарабатываем или даже теряем - я думаю, что преимущества перевешивают недостатки, важно, чтобы люди видели устойчивость платформы. Мы не стремимся к краткосрочному финансовому успеху, мы здесь надолго.
Исправление UI Batching
На прошлой неделе мы получили UI Batching, что привело к значительному снижению количества вызовов отрисовки и увеличению FPS. Это было огромным изменением для множества возможностей, которые мы могли реализовать в нашей системе UI, и всех различных способов, которыми можно накладывать и смешивать панели - очевидно, что некоторые вещи сломались, но мы их исправили. 💪
Режимы смешивания
Наиболее заметная ошибка заключалась в том, что режимы смешивания не устанавливались правильно, наши текстовые рендеры должны были отображаться в режиме смешивания с предумноженным альфа-каналом, но этого не происходило, что создавало очень непривлекательный текст. Это также было заметно в инвентаре режима Sandbox.
Отложенная пакетная обработка
Но исправление этого сломало нашу пакетную обработку, мы использовали немедленную пакетную обработку, каждый текст вызывал сброс и ломал пакет.
Нам нужен был новый подход. Отложенная обработка сначала собирает все, сортирует в группы по ключу сортировки, полученному из z-индекса, слоя, режима смешивания, а затем сбрасывает в новом отсортированном порядке.
- Немедленная пакетная обработка с неправильными режимами смешивания
- Немедленная пакетная обработка с правильными режимами смешивания
- Отложенная пакетная обработка с правильными режимами смешивания
Время вечеринок
В S&box давно существуют группы, на этой неделе мы обновили их интерфейс, лучше интегрировали с новыми системами и функциями и убрали лишнее.
Ранее группы были немного скрыты, доступ к ним был через меню создания в нижней части главного меню. Теперь вы почти всегда находитесь в группе. Вы можете сразу пригласить друга, и мы автоматически создадим настоящую группу за кулисами.
Также было много изменений для улучшения опыта в группе: теперь вам нужно быть лидером группы, чтобы начать и присоединиться к играм. Вы можете исключать игроков из своей группы. Вы можете приглашать друзей и принимать их приглашения прямо из оверлея Steam. Голосовой чат группы вернулся. И, как и для игровых серверов, мы добавили больше обратной связи для игроков при присоединении и создании группы - возможно, ее больше не существует, возможно, она полна, теперь вы будете знать.
Группы - это быстрый и простой способ играть в игры на s&box, и они работают так, как вы ожидаете. Пригласите своих друзей, и они сразу же присоединятся к любой игре на платформе. Попробуйте! 🥳
Оптимизация AO #2
Завершена вторая часть оптимизаций AO, теперь AO работает в половинном разрешении, так что он в 4 раза быстрее при том же количестве выборок, что и раньше, 16x на низком пресете (четверть разрешения), апскейл делает его практически таким же, как у других.
Оптимизации, сделанные ранее, сделали пространственно денойсированный AO выглядеть плохо, поэтому я полностью переделал используемый денойзер, и он выглядит так же хорошо, как временной подход.
Мы отказались от временного денойзинга, теперь все делается в одном кадре - мы хотим приоритизировать приятные игровые впечатления, сосредоточив внимание на четкости изображения и стабильности, а не на фотореализме и избыточной графической четкости.
О, и мы также сделали так, чтобы отключение AO действительно его отключало. 🤨