sbox
May 20

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

💙 Рандомные дропы платных шмоток, Trade Protection, узкие горлышки для RTX 4070, первые туториалы, Ознакомительный экран, оптимизация рендера и API для чата Sandbox Game (он же Garrys Mod 2)

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

Ознакомительный экран

Автор: garry

Как упоминалось в анализе обзоров Steam на прошлой неделе, существует много недопонимания о том, что такое s&box, а что нет. Мы не очень хорошо объяснили себя с точки зрения игры. Кажется, мы неплохо объяснили себя разработчикам, но наткнулись на кучу проблем, объясняя это игрокам.

На этой неделе я добавил приветственный экран в игру, чтобы объяснить некоторые неочевидные вещи. Этот экран появится при первом запуске, объяснит несколько моментов и предложит сыграть в Sandbox Mode или Sausage Survivors 2. Надеемся, что люди, приходящие сюда впервые, прочитают это, и их первый опыт будет положительным.

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

🎁 Рандомные дропы

Автор: garry

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

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

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

Вы можете увидеть, какие скины были выброшены, внизу на странице Метрики Скинов.

Туториалы

Автор: garry

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

Это доступно по адресу https://sbox.game/learn - и это то, к чему мы будем вносить свой вклад и что будем улучшать со временем. Дайте нам знать, что вы думаете!

Trade Protection

Автор: garry

Защита торговли активна для предметов инвентаря Steam в s&box. Вы можете узнать больше по этой ссылке.

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

Чат платформы

Автор: devultj

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

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

Вы можете использовать `Chat.AddText( ... )` для добавления системного текста для уведомлений или чего угодно, что вам нужно.

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

Чтобы отключить, посетите настройки вашего проекта.

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

Смотрите больше здесь.

Микшер голоса

Автор: Carson

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

Теперь все голосовые передачи ДОЛЖНЫ проходить через Микшер Голоса или какой-либо Микшер, который является дочерним к Микшеру Голоса.
Таким образом, игры больше не могут обходить ползунок громкости "Голос", и как игроки, так и стримеры могут радоваться тому, что им больше не придется слышать ни одной души после отключения звука.

Terrain Сетка

Автор: antopilo

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

Полупрозрачные сглаженные края

Автор: Sam

Функция MSAA resolve не позволяет делать взвешивание по альфа-каналу. Если вы хотите сделать высококачественный скриншот с прозрачным фоном, но с RGB цветом, края фона будут линейно смешиваться с объектом, что приведет к размытию на краях геометрии.

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

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

Непрозрачные затухания без MSAA и полупрозрачные тени

Автор: Sam

С новыми тенями C# у нас возникла небольшая регрессия: тени не плавно исчезали, если объект был прозрачным из-за оттенка.

Кроме того, непрозрачное исчезновение не работало, если у вас отключено MSAA в редакторе.

Обе проблемы теперь решены.

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

Clutter LOD

Автор: antopilo

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

Узкие места производительности

Автор: matt

Прежде чем оптимизировать что-либо, нам нужно знать, на каких областях сосредоточиться, какие из них сдерживают игроков. Это GPU? Это CPU? Это физика, это анимация? Ответ сильно меняется в зависимости от аппаратного обеспечения, которое используют игроки.

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

Я добавил новую страницу в наши метрики, узкие места производительности - это группирует игроков по уровням аппаратного обеспечения и показывает доминирующее узкое место для каждой комбинации CPU x GPU.

Это дает нам четкое представление о том, что мы почти всегда ограничены CPU, отправляя рендеринг на GPU, GPU никогда не испытывает трудностей с выполнением этой работы.

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

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

Panel CommandList

Автор: antopilo

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

Вы можете начать записывать свои собственные команды рендеринга следующим образом:

 public class GlowPanel : Panel, IPanelDraw
 {
     static Material GlowMat = Material.FromShader( "shaders/ui_glow.shader" );
 
     public void Draw( CommandList cl )
     {
         cl.Attributes.Set( "GlowColor", Color.Cyan );
         cl.DrawQuad( Box.Rect, GlowMat, Color.White );
     }
 }

Итоги

Автор: matt

На этой неделе небольшое обновление из-за hackweek, но мы все равно сделали много важного за всего несколько дней.

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

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

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

Мы делаем то, что нужно. Никакого замедления - увидимся на следующей неделе. 💪

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