sbox
March 25

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

🔥 Лицензия с Valve почти готова! Можно будет выпускать игры в Steam. Дорожная карта на 2026

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

Дорожная карта

Автор: matt

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

Лицензия с Valve на экспорт игр (Standalone)

Автор: garry

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

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

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

Диагностика сети

Автор: devultj

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


В нем будет показан трафик Sync Var, RPC (входящие и исходящие) и трафик по соединениям. Это должно помочь вам диагностировать узкие места в сети. Очень полезно для безголовых клиентов, где у вас нет доступа к сетевому оверлею.

Map Editor: Выбор всех вертексов/граней/фейсов

Автор: Layla

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

Контроль кроссфейд морфинга

Автор: Layla

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

Теперь он также правильно смешивается.

Мэш трассировка всего

Автор: Layla

В режиме Map Editor при наведении и выборе элементов сетки, объекты блокировали выбор. Чтобы это исправить, нам нужно было поддерживать получение всех попаданий вдоль трассы при трассировке рендер-сеток.

Hitbox цилиндры в ModelDoc (его удалят скоро)

Автор: Layla

Кто-то запросил цилиндрические хитбоксы в Modeldoc, теперь это поддерживается.

Sandbox Game: Face Poser

Автор: devultj

На этой неделе мы добавили первую версию лицевой анимации в Sandbox Game, полностью сетевую и поддерживающую пресеты!

Улучшения цвета VideoPlayer

Автор: devultj

Ранее наше преобразование цветового пространства не всегда было корректным, что приводило к выцветанию цветов, особенно заметному для черного и белого, которые выглядели серыми.
Теперь мы правильно преобразуем все варианты BT.601 и BT.709.

Большое спасибо нашему гуру цветового пространства Максу, который уже писал об этой теме в 2016 году: https://blog.maxofs2d.net/post/148346073513/bt601-vs-bt709

Фиксы для демо записи

Автор: ziks

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

Фиксы для Envmap

Автор: Sam

Рендеринг кубомапы вылетел и сильно увеличил использование VRAM, утечка наборов дескрипторов и переполнение буферов трансформации из-за слишком большого рендеринга за один кадр.

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

Кроме того, мы добавили подсказку, чтобы камеры, использующие envmap-пробы, не вызывали стриминг текстур. Поскольку envmaps должны сканировать всю карту, они ранее заставляли стример загружать все, а не только то, что вы действительно можете увидеть.

Mount Префабы

Автор: Carson

Теперь 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;
	}
}

Итоги

Автор: matt

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

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

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

💙 Русскоязычное сообщество 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

⚠️Known Issues

  • Still seeing a small amount of crashes on latest Nvidia drivers