Sandbox: Оружие для механизмов
Теперь ваши технические сооружения могут вести ракетный огонь..
Или манипулировать объектами с помощью тягового луча..
Sandbox: Экраны реального времени

Эта возможность существовала и раньше, но я решил продемонстрировать, как реализовать это в ваших собственных проектах. Вы можете создать текстуру для рендера (Render Target) нужного разрешения и просто привязать её к RenderTarget компонента камеры (CameraComponent).

Автоматические уровни детализации (LOD)
В основе процесса лежит мощный инструмент meshoptimizer от Арсения, который берет на себя всю вычислительную нагрузку.
Видео предоставлено авторами Northbound RP
Система максимально интуитивна, и вы получите достойный результат уже при стандартных настройках. Тем не менее, никто не запрещает тонкую ручную настройку отдельных параметров и совмещение автоматических LOD-ов с созданными вручную.
Импорт спрайт-листов
При импорте вертикальных или горизонтальных лент спрайтов система автоматически определит сетку и выберет все кадры, избавив вас от лишней рутины 🙂
Инструмент для создания мостов при проектировании карт
Информативность при разрыве соединения

Теперь игроки будут видеть информативные сообщения в случае отключения или неудачной попытки подключения с понятным описанием причины. Таким же образом мы теперь выводим сообщения об исключении с сервера. Мы также устранили ошибку, из-за которой текст мог отображаться некорректно — теперь вы точно будете знать, за что вас выгнали (например, за RDM), и сможете с полным основанием посыпать голову пеплом.
Исправление артефактов на картах AMD в режиме Bindless


Мы перевели шейдеры на использование bindless-текстур. Они отличные, но требуют явной пометки с помощью NonUniformResourceIndex в случаях, когда ресурсы не являются единообразными (что составляет 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
Примечание: Декодирование H.264 и AAC доступно на Windows через Media Foundation. При создании игр с видеоконтентом мы настоятельно рекомендуем использовать AV1 или VP9.
Если вы считаете, что какого-то важного формата не хватает — создайте обращение. Если кодек широко распространен, мы можем его добавить, но поддерживать абсолютно всё мы не планируем.
Backend-кодирование в AV1
Ниже приведены сравнительные показатели видео из наших популярных игр.
Dark Descent (1080p 60fps, 27.8s) ║ Вариант │ MP4 Размер │ AV1 Размер │ Экономия │ 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) ║ Вариант │ MP4 Размер │ AV1 Размер │ Экономия │ 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) ║ Вариант │ MP4 Размер │ AV1 Размер │ Экономия │ 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 сохраняют показатель SSIM выше 0.95 (отличный результат). В случае с Sandbox качество даже значительно выросло.
- Наихудший сценарий: High-настройки в Sausage Survivors 2 просели с 0.989 до 0.960 SSIM. Метрически это заметно, но визуально качество остается на высоком уровне при двукратном уменьшении размера файла.
Финансовая прозрачность
Кто-то сочтет такую прозрачность безумием, ведь мы показываем и прибыль, и убытки. Но я уверен, что польза перевешивает риски: сообществу важно видеть жизнеспособность платформы. Мы ориентированы не на сиюминутную выгоду, а на долгосрочное развитие.
Оптимизация батчинга интерфейса (UI)
Режимы наложения (Blend Modes)


Отложенный батчинг (Deferred Batching)
Потребовался новый подход: отложенный батчинг. Сначала система собирает все элементы, сортирует их по Z-индексу, слою и режиму наложения, а затем выполняет рендер в оптимизированном порядке.
- Immediate-батчинг с неверными режимами смешивания.
- Immediate-батчинг с правильными режимами смешивания.
- Отложенный батчинг с правильными режимами смешивания.
Обновление системы групп

Группы (Party) в S&box существуют давно, но на этой неделе мы полностью переработали их UI, интегрировали с новыми системами и убрали лишнюю сложность.
Раньше функционал групп был спрятан в меню. Теперь вы, по сути, находитесь в группе постоянно. Можно пригласить друга в один клик, и система автоматически создаст полноценную группу. Мы также добавили массу улучшений: только лидер может начинать поиск игры или менять сервер; вы можете исключать участников; приглашения теперь можно принимать прямо через оверлей Steam; вернулся голосовой чат для групп. Также мы добавили уведомления об ошибках — если группа не существует или заполнена, вы сразу об этом узнаете.
Группы — самый простой способ весело провести время в s&box. Зовите друзей, и они автоматически последуют за вами на любой сервер. Попробуйте! 🥳
Вторая волна оптимизации AO
Предыдущая версия пространственного шумоподавления (denoising) выглядела ужасно, поэтому я полностью переписал денуайзер; теперь результат не уступает временным методам (temporal).
Мы отказались от временного шумоподавления в пользу однокадрового. Мы хотим сделать игровой процесс максимально приятным, сфокусировавшись на четкости изображения и стабильности, а не на достижении фотореализма любой ценой.






