sbox — Обновление 25.03.2026
🔥 Лицензия с Valve почти готова! Можно будет выпускать игры в Steam. Дорожная карта на 2026
Оригинал (ссылка)
Дорожная карта
Мы приближаемся к релизу, и хотим начать быть более открытыми о том, что нас ждет. Мы составили публичную дорожную карту - рассматривайте это не как строгий план, а как большой список желаемого высокоуровневых функций, над которыми мы рады работать.
Это не все. Это не обещание. Это то, что нас действительно вдохновляет, и мы хотим, чтобы вы знали, что это в нашем поле зрения.
Вы можете проголосовать за интересующие вас пункты и оставить комментарии - если что-то важно для вас, дайте нам знать.
Лицензия с Valve на экспорт игр (Standalone)
На этой неделе мы подписали новую лицензию с Valve, что позволяет нам разрешить людям экспортировать игры из редактора s&box и выпускать их как отдельные игры в Steam совершенно без роялти. Это был довольно сложный путь, но с множеством заверений и компромиссов мы справились.
Нам все еще нужно поработать над этим. Нам нужно создать лицензию между Facepunch и людьми, которые выпускают игры, а затем дважды и трижды проверить, что все легитимно, но я хотел поделиться этим прогрессом с сообществом, чтобы они знали, что Valve сделала дело.
Когда все будет готово, мы протестируем это с несколькими избранными людьми. Первой, вероятно, станет Мой летний коттедж.
Диагностика сети
На этой неделе мы добавили несколько новых команд для диагностики сетевого трафика. Включив network_diag_record 1, подождав пару минут, а затем запустив network_diag_dump, игра экспортирует текстовый файл, показывающий весь сетевой трафик за это время.
В нем будет показан трафик Sync Var, RPC (входящие и исходящие) и трафик по соединениям. Это должно помочь вам диагностировать узкие места в сети. Очень полезно для безголовых клиентов, где у вас нет доступа к сетевому оверлею.
Map Editor: Выбор всех вертексов/граней/фейсов
Выбор всех в режиме отображения используется для выбора всех игровых объектов, но это не то, что нам нужно, теперь он выбирает все элементы сетки в зависимости от режима выбора.
Контроль кроссфейд морфинга
Теперь API морфов контролирует время смешивания между анимационными морфами и морфами, переопределяющими игру, позволяя полностью отключить его и мгновенно переключиться на ваш морф-переопределитель.
Теперь он также правильно смешивается.
Мэш трассировка всего
В режиме Map Editor при наведении и выборе элементов сетки, объекты блокировали выбор. Чтобы это исправить, нам нужно было поддерживать получение всех попаданий вдоль трассы при трассировке рендер-сеток.
Hitbox цилиндры в ModelDoc (его удалят скоро)
Кто-то запросил цилиндрические хитбоксы в Modeldoc, теперь это поддерживается.
Sandbox Game: Face Poser
На этой неделе мы добавили первую версию лицевой анимации в Sandbox Game, полностью сетевую и поддерживающую пресеты!
Улучшения цвета VideoPlayer
Ранее наше преобразование цветового пространства не всегда было корректным, что приводило к выцветанию цветов, особенно заметному для черного и белого, которые выглядели серыми.
Теперь мы правильно преобразуем все варианты BT.601 и BT.709.
Большое спасибо нашему гуру цветового пространства Максу, который уже писал об этой теме в 2016 году: https://blog.maxofs2d.net/post/148346073513/bt601-vs-bt709
Фиксы для демо записи
Вот первая партия исправлений для новой функции записи демо в игре. Основные моменты: теперь мы можем записывать объекты, меняющие родителя, захватыватьragdolls и значительно лучше поддерживать облачные ресурсы в фильме.
Фиксы для Envmap
Рендеринг кубомапы вылетел и сильно увеличил использование VRAM, утечка наборов дескрипторов и переполнение буферов трансформации из-за слишком большого рендеринга за один кадр.
Мы это исправили, обновления Envmap теперь обрабатываются гораздо более разумно.
Кроме того, мы добавили подсказку, чтобы камеры, использующие envmap-пробы, не вызывали стриминг текстур. Поскольку envmaps должны сканировать всю карту, они ранее заставляли стример загружать все, а не только то, что вы действительно можете увидеть.
Mount Префабы
Теперь Mount могут определять префабы!
Это означает, что монтировка может создавать интерактивные префабы (например, кнопки, двери, NPC и т.д.) на основе имеющихся данных об объекте, а не просто использоваться как безжизненная модель.
Вот как вы можете использовать PrefabBuilder в своей Mount:
public class MyPrefabLoader(string baseFile, string outputPath) : ResourceLoader<GameMount>
{
PrefabFile _prefab;
protected override object Load()
{
var builder = new PrefabBuilder()
.WithName( outputPath );
using ( builder.Scope() )
{
var go = new GameObject();
// Добавьте любые игровые объекты/компоненты, которые хотите, на основе данного baseFile
}
_prefab = builder.Create();
return _prefab;
}
protected override void Shutdown()
{
PrefabBuilder.Destroy( _prefab );
_prefab = null;
}
}Итоги
До релиза осталось не так много недель, поэтому мы усердно работаем, чтобы все было готово.
Всегда есть вещи, которые мы могли бы сделать лучше. В какой-то момент нужно просто сказать "это релиз" и сделать это. Вот что мы и делаем.
Сейчас фокус прост - сгладить как можно больше острых углов с точки зрения игрока. Как сделать первый опыт максимально хорошим? На какие игры мы указываем новым игрокам, чтобы они сразу получили удовольствие и захотели остаться и исследовать?
💙 Русскоязычное сообщество s&box
Changelogs
🎁Added
- Mounts can create prefabs with PrefabBuilder
- Open the pause menu programmatically with `Game.Overlay.ShowPauseMenu()`
- Cylinder hitbox support in ModelDoc
- `Model.SaveToVmdl` and `Model.SaveToVmdlAsync` APIs for saving models to VMDL format
- Select all support for vertex, edge, and face in the mesh editor
- Lift vertex color under cursor in the vertex paint tool
- Network diagnostic tools with `net_diag_record` and `net_diag_dump` console commands for detailed RPC and sync var stats
- ConVars for maximum incoming and outgoing network messages per tick
- Support for `font-variant-numeric` CSS style property with `tabular-nums`. Thank you @aidencurtis
🧼Improved
- Smoothstep anti-aliasing for rounded border corners in the UI
- Video player now uses a compute shader for YUV resolve instead of VS/PS
- Updated zstd compression library from 1.4.6 to 1.5.7 for faster shader compilation
- Morph crossfade control between animation-driven and override morphs
- Mesh trace now supports RunAll for tracing all mesh components
- Interop code generation optimizations
- Reduced LINQ usage in hot paths to eliminate iterator allocations
- `ClipScope` is now a ref struct to avoid megabytes of heap allocations per second
- Eliminated array and list allocations in `TemporaryEffect.OnUpdate`
- Asset Browser defaults to sorting by name and fixes context menu for mounted assets
- Demo recording improvements: parent change recording, skeleton bone detection, ragdoll physics fix, and cloud asset references
- Terrain tool UX: opacity slider is now disabled for base layers with an explanatory tooltip
- Better menu avatar lighting with AGX tonemapper
- ThumbLoader now waits for thumb render in the editor instead of returning a placeholder icon
- Unix platform support: ARM64 interop fixes, DLL import resolver, Mac now uses KosmicKrisp instead of MoltenVK
- `MODES` section in the compute shader template so new compute shaders work out of the box. Thank you @boxrocket6803
- `STANDALONE` compile constant when exporting standalone games. Thank you @boxrocket6803
🪛Fixed
- Envmap rendering everything in one frame, overwhelming descriptor pools and crashing
- Multiple Vulkan validation errors on boot and game launch
- `CommandList.DrawText` evicting textures in cached CommandLists
- `Gizmo.Draw.Sprite` crash when used with a texture URL
- Labels not redrawing when text is cleared
- File path DragData URIs containing `#` being truncated
- Networking: DeltaSnapshotCluster ID not being set from pool, incorrect KB/s in Network Graph, and sent cluster tracking
- Duplicate/Group crash with prefab roots
- System config enum deserialization
- `FindDirectory` throwing exceptions for missing directories
- Frame 0 bone-merged renderers stuck in bind pose for avatar hover icons
- Multiple null reference exceptions in ThumbLoader, UI selector, and mount textures
- Menu overlay being attempted in standalone mode
- Network `CanRefreshObjects` validation for refresh messages
- Addon libraries editor not being loaded. Thank you @PolEpie