Update log
Full s&box update
The complete published notes, normalized for clean reading and source attribution.
Extracted changes
- Gameplay
- Workshop
- UI and audio
- Maps
- Performance
- Server
A new update has been released, you can view the full changes on our blog post.
https://sbox.game/news/update-26-04-08
Here's some highlights from the blog.
New Games Menu
Sandbox: Open Source
The Sandbox game itself is now open-source, people can contribute or take the code for their own games.
Sandbox: Emitters
Sandbox: Achievements
Changelog
🎁 Added
Doo, a simpler visual scripting system for wiring up component events — designed as a friendlier alternative to ActionGraph for common use cases
Mesh cable tool in the mesh editor for creating cables, working similarly to Hammer
New games dashboard with a rotating carousel and redesigned game cards
`lang.showkeys` cvar and editor toggle to display localisation keys instead of translated text for debugging
CSS `overflow: clip` and `overflow: clip-whole` properties for UI element clipping
CSS `background-playback-state` property to pause video backgrounds
`[ShowIf]` and `[HideIf]` attributes now support null checks
Center option added to the pivot list in mapping tools
`IFormattable` whitelisted for use in the sandbox. Thank you @RumBugen!
🧼 Improved
- CosmeticTexture editor moved into the inspectorThank you @boxrocket6803!
Cascaded shadow map exclusion culling — shadows no longer render beyond each cascade boundary and objects from previous cascades are no longer re-rendered, significantly improving shadow performance
Networking thread now processes messages at the same tick rate as the main thread
Particle sprite GPU upload performance — buffer uploads moved into valid Graphics.Scope to avoid unnecessary render context creation
Network packet byte arrays are now pooled in DecodeStream, reducing GC pressure for large compressed payloads
Fixed a Steam buffer GCHandle leak where N-1 handles would leak per broadcast packet; replaced with a cheaper memcpy approach
`Package.MountAsync` now supports mounting specific package revisions, allowing games to pin map versions
`LoadingScreen.IsVisible` is no longer overridden every frame, allowing games to manually control loading screen visibility
`Game.ChangeScene` now shows a loading screen for all clients instead of just the host
Engine overlays remain visible during loading states
ScreenPanel `Scale` property now works when Auto Scale is enabled, and `Opacity` now correctly affects ScreenPanels
Undo support for WrapTextureToSelection and WrapTexture operations in the mapping tools
Pause modal now uses the lighter HtmlPanel instead of a full WebPanel
Launcher window geometry is saved when auto-closing
PATH changes are now a no-op on non-Windows platforms. Thank you @MrSoup678!
🪛 Fixed
Disabling shadows on a directional light now works correctly
Shader compiler shutdown crashes resolved by properly draining the material system and preventing Steam callbacks after managed shutdown
Exceeding the maximum light count no longer triggers assertions or causes directional light flickering
`GetPixels` arguments are now validated to prevent negative values, fixing a security vulnerability
Referencing a deleted prefab no longer crashes — the editor shows a warning and preserves instance data for recovery
Creating a prefab from a GameObject now correctly restores the object's position
Reverting changes on a nested prefab instance no longer wipes all outermost overrides
Applying changes to a nested prefab no longer regenerates all GUIDs
Fixed cyclical library references caused by built-in projects referencing libraries
Fixed a null `AssetTypeAttribute.Name` NRE that silently shut down the GameInstance on editor startup
Game loading is now properly cancelled on disconnect, preventing background loads from continuing
Fixed filesystem unmount exceptions when a load is cancelled
Prop gibs now properly inherit velocity when spawned in a batch group
`IgnoreSingleObject` trace now correctly checks both rigidbody and collider GameObjects
Glass shader tint now blends correctly through multiple layers using premultiplied alpha blending. Thank you @Infiland!
`backdrop-filter: blur` no longer generates excessive mipmap levels Thank you @Infiland!
Toast notifications (e.g. achievements) no longer
Source
