In-game event

Update 26.04.08

s&box · published · build 22701891

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

  • Texture editor moved into the inspector - Thank 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 persist indefinitely

  • Post-game info popup is no longer dismissed on click, so its actions can be used. Thank you @RumBugen!

  • Fixed human models having deformed hands with the "holditem" holdtype

  • Fixed TextRenderer alignment not updating on re-enable

  • Fixed possible NRE in `Button.Text` setter

  • Fixed possible NRE in `UpdateMusic`

More from s&box

Other announcements

All events