This is a feature I added a few weeks back, but it really shines now with the addition of the Rocket Launcher, and support for the Physics Gun.

This means your contraptions can shoot rockets..
Or grab things like a tractor beam..



You can link cameras to TVs now, great for contraptions, or just generally messing around.
You've been able to do this for a while, but I thought I'd show how you can do this yourself in your own games. You can create a render target texture with a specific size, and just link it to a CameraComponent's RenderTarget.
We added the ability to auto generate LODs directly in modeldoc.
Under the hood Arseny's meshoptimizer does the heavy lifting.
Video courtesy of Northbound RP

The system is designed to be as easy to use as possible, and you should get decent results with the default settings. However, you can also fine-tune individual settings and even mix handcrafted and auto-generated LODs.

You can now import Sprites from a Spritesheet without the need to manually split them all up. Just set the rows/columns and select which frames you want to import:
When importing a sprite strip (vertical OR horiztonal) it will automatically set the rows/columns and select all the frames for you, so they can be imported without and fiddling :)
Another big tool from hammer brought over to the mapping tool. Bridge edges and faces.


Sometimes, when trying to join a game, you'd get thrown back to the menu without really knowing why or at what point things went wrong. So this week, we've straightened out the connection flow, formalised things under the hood, and added a bunch more feedback.
Players will now see big new message boxes when they're disconnected from a server, or when a connection attempt fails, with fairly descriptive reasons. This is how we show kick messages now too, and we've fixed an issue that would sometimes make these messages appear garbled, so you'll know when you've been kicked for RDMing and to hang your head in shame.
After merging UI batching and new shadows we've been seeing some minor to intense artifacting on AMD cards.

We switched all these shaders to use bindless textures, which are great but needed explicit marking with NonUniformResourceIndex to work in non-uniform cases (which were 99% of our cases...). Whilst we were marking these like Bindless::GetTexture2D( NonUniformResourceIndex( TextureID ) ) they weren't actually doing anything as a function parameter, they needed to be done on the descriptor heap itself.

The solution was simple, if 99% of the time we needed to be doing NonUniformResourceIndex we might as well do it inside Bindless::GetTexture2D( TextureID ) so people don't have to bother with what it means. If we have justification to we can do a variant for when you know you have a uniform resource index.

No more artifacts on AMD.
We used FFmpeg from the beginning as a quick and easy way to get media players working, but we've always known it's a big pandora's box when we release with licensing issues around all the codecs.

So we've removed our dependency on FFmpeg, whilst it could handle just about any codec or file format you could throw at it, we've favoured a restricted selection of the most commonly used codecs and file formats such as AV1, WebM and Opus.

Going forward, we will support the following formats and codecs:

Video
  • Decode:        VP9, AV1, animated WebP, H.264 (Windows only via MMF)
  • Encode:         VP9, AV1, animated WebP
  • Containers:  .webm, .mp4

Audio
  •  Decode:        Opus, FLAC, MP3, WAV/PCM, AAC (Windows only via MMF)
  •  Encode:         Opus, WAV/PCM
  •  Containers:  .ogg, .wav, .flac, .mp3, .opus

Networking Playback: HTTP/HTTPS

Note: H.264 decode and AAC decode are provided through Windows via Media Foundation, if you're adding video content to your games, we recommend AV1 or VP9.

More documentation can be found here: https://sbox.game/dev/doc/media/

If you feel like something major is missing, feel free to open an issue. If it's a widely used format/codec, we might add it, but we won't support every codec under the sun.
Following the media framework changes in engine, we've looked at how we encode videos on our workshop. Previously these were all H264 in an MP4 but we've swapped over to AV1 in a WebM and have started re-encoding all existing videos.

Here's some of the video sizes from our featured games.
  Dark Descent (1080p 60fps, 27.8s)
   ║ Variant │ MP4 Size │ AV1 Size │ Saving │ MP4 SSIM │ AV1 SSIM ║
   ║ High    │  41.80MB │  16.29MB │  -61%  │  0.9719  │  0.9538  ║
   ║ Medium  │  17.65MB │   9.93MB │  -44%  │  0.9598  │  0.9535  ║
   ║ Low     │   3.41MB │   3.02MB │  -11%  │  0.9284  │  0.9499  ║

  Sausage Survivors 2 (1080p 30fps, 24.6s)
   ║ Variant │ MP4 Size │ AV1 Size │ Saving │ MP4 SSIM │ AV1 SSIM ║
   ║ High    │  12.94MB │   5.99MB │  -54%  │  0.9889  │  0.9603  ║
   ║ Medium  │   6.11MB │   3.31MB │  -46%  │  0.9835  │  0.9551  ║
   ║ Low     │   1.39MB │   1.00MB │  -28%  │  0.9638  │  0.9479  ║

  Sandbox (720p 50fps, 21.2s)
   ║ Variant │ MP4 Size │ AV1 Size │ Saving │ MP4 SSIM │ AV1 SSIM ║
   ║ High    │   8.45MB │   6.49MB │  -23%  │  0.9328  │  0.9760  ║
   ║ Medium  │   8.45MB │   5.65MB │  -33%  │  0.9328  │  0.9741  ║
   ║ Low     │   1.53MB │   1.46MB │   -5%  │  0.9135  │  0.9700  ║
  Summary
  • File sizes: 5–61% smaller across the board, biggest wins on high-bitrate 1080p content
  • Quality: All AV1 variants stay above 0.95 SSIM (excellent). Sandbox actually sees a huge quality improvement
  • Worst case: Sausage Survivors 2 high drops from 0.989 -> 0.960 SSIM - noticeable in metrics but still well above the perceptual threshold, at half the file size
I've updated our open finance metrics to be even more detailed, adding our costs for running s&box as a company, salaries, server costs, taxes, play fund, it's all there.

People will say it's crazy to be this transparent, showing how much we're making or even losing - I think the benefits outweigh the negatives, it's important people see the sustainability of the platform. We're not after short term financial success here, we're here for the long haul.
We got UI Batching in last week which came with a huge drop in draw calls and a big increase in FPS. This was a huge change for the huge amount of things we could do with our UI system and all the various ways you can layer and blend your panels together - obviously some things broke, but we've fixed them. 💪

Blend Modes

The most noticable bug was blend modes weren't being set correctly, our text renders should've been rendering in a premultiplied alpha blend mode but weren't, creating very unappealing text. This was also noticable in the Sandbox mode inventory.

Deferred Batching

But fixing this had broken our batching all together, we were doing immediate mode batching, every bit of text was causing a flush and breaking the batch.

We needed a new approach. Deferred collects it all first, sorts it into groups with a sort key derived from the z-index, the layer, the blend mode, then flushes in the new sorted order.

The images show:
  1. Immediate batching with improper blend modes
  2. Immediate batching with proper blend modes
  3. Deferred batching with proper blend modes
Parties have been a thing in S&box for ages, this week we've given them a pass to refresh the UI, better integrate them with newer systems and features, and cut the faff.

Before now, parties were a bit tucked away, accessed from a creation menu on the main menu footer. Now, you're basically always in one. You can invite a friend right off the bat, and we'll automatically set up the real party behind the scenes.

There's been a bunch more changes to buff up the party experience, too: You now need to be party leader to be able to start and join games. You can kick players from your party. You can invite friends and accept their invites directly from the Steam overlay. Party voice chat is back. And just like for game servers, we've added more player-facing feedback when joining and creating a party - maybe it doesn't exist anymore, maybe it's full, now you'll know.

Parties are a quick and easy way to experience games on s&box, and they work just like you'd expect. Invite your mates, and they'll follow you right into any game on the platform. Give it a go! 🥳
Done the second part of AO optimizations, AO runs at half resolution now, so it's 4x faster while keeping same sample count as previously, 16x if on low preset (quarter-res), the upscale makes it look pretty much the same, going in line with what others do.

The optimizations from previously made spatially denoised AO look like shit, so I've completely redone the denoiser it uses, and it looks as good as the temporal approach.

We deprecated temporal denoising, it's all done in one frame - we want to prioritize pleasent gameplay experiences by focusing on image clarity and stability instead of photorealism and excess graphics fidelity.

Oh and we also made it so turning AO off actually turns it off. 🙈
26.04.22
26.04.22
22 April 2026
🎁 Added
  • Automatic LOD generation in ModelDoc, allowing users to build LOD chains from a single mesh. Auto-generated and handcrafted LODs can be mixed.
  • Spritesheet Importer for the Sprite Editor with automatic strip detection, row/column selection, and persistent padding settings.
  • Bridge Tool for the map editor, enabling quick bridge geometry creation between surfaces.
  • Clip Tool cycle mode for toggling between clip sides without restarting the operation.
  • SoundFile.FromMP3 API for loading audio from MP3 files in mounts.
  • SoundFile.FromPCM API for loading raw PCM audio data without creating a fake WAV wrapper.
  • Editor option to hide GameObjects in the scene view while keeping them visible in the hierarchy.
  • MovieRecorderOptions.BufferDuration property for ring buffer recording mode, with `movie_save` command to save without stopping.
  • Foliage Subsurface Scattering using an improved Frostbite-based SSS term, restoring foliage rendering broken in the Shadows2 update.
  • Ctrl+A shortcut now selects all faces in texture mode, matching face mode behavior.
  • Whitelisted `System.Threading.Tasks.TaskCreationOptions` for sandbox use. Thank you LeQuackers!
  • Apply-and-continue shortcut (Spacebar) for the Clip Tool, allowing consecutive cuts without exiting the tool. Thank you @trende2001!
  • Background Audio toggle in Audio Settings. Thank you @drekunia!
  • Sound file support for the NS2 mount, reading FMOD sound banks with PCM16 and MPEG formats. Thank you @nixxquality!
🧼 Improved
  • Removed FFmpeg dependency entirely, and replaced them with other alternatives -- reducing binary size by ~30MB and improving video export quality.
  • Movie Maker timeline grid rendering optimized from >10ms to <1ms by only repainting when the view changes.
  • Multiplayer party system improvements: Steam party invites now work, menu buttons restricted to lobby leader, player kick functionality, auto-leave when joining a different server, and better error messages.
  • Better disconnect feedback with formal disconnect messages, retry support for SteamId connections, and connection loading screen fixes.
  • GameClosedToast lifetime increased from 4 to 10 seconds, countdown pauses while hovered.
  • Mesh components now automatically add a world tag to their GameObject.
  • Bindless shader API now uses NonUniformResourceIndex by default, removing redundant explicit calls.
  • Upgraded Zio library to latest version, fixing a detected security vulnerability.
  • Menu UI/UX cleanup: GameCard activates on click, adjusted heading sizes, removed unused styles.
  • Line material now lazy loaded in a thread-safe way.
  • SceneCustomObjects now safe to run on non-main thread.
  • AssetSystem defers orphan deletion until parents are fully resolved, preventing incorrect asset removal during project load.
  • SpriteBatchSceneObject sprite data collection moved back to UploadOnHost, fixing single-frame sprite artifacts.
  • Physics filter component now creates its internal joint in OnStart, ensuring rigidbodies exist first.
  • Fast Texturing Tool settings now properly saved when the window is closed and undo scope is correctly disposed in all cases. Thank you @CarsonKompon!
  • Editor Widget API: OnWheel renamed to OnMouseWheel for consistency with other mouse event callbacks. Thank you @RumBugen!
  • Formatting for [InlineEditor] in collections is now correct. Thank you @boxrocket6803!
🪛 Fixed
  • VR editor play/stop crash no longer occurs when toggling game mode.
  • Asset scan startup crash resolved.
  • Assets now correctly detect changes when activating mods.
  • UI VRAM leak fixed by removing threadlocal panel renderer and adding proper thread synchronization.
  • Sprite.BroadcastEvent type now displays correctly with proper [EnumDropdown] attribute, and unnamed broadcast events render properly.
  • EnumControlWidget now correctly triggers OnChildValuesChanged.
  • HudPainter.DrawLine now handles colorspace (gamma correction) and blend modes correctly.
  • Menu fonts no longer disposed when unloading games, fixing garbled text in the overlay.
  • Menu no longer clears out when game load is cancelled or errors at certain points.
  • Foliage red flicker issues fixed, along with improved antialiasing.
  • ModelDoc Auto LOD fixes: ngon simplification, infinite loop in mesh list simplification, better tooltips and defaults.
  • Menu framerate limit setting now persists correctly. Thank you @RumBugen!
  • Standalone startup timing event submission no longer throws a NullReferenceException. Thank you @RumBugen!
  • SCSS inset values with commas no longer break shadow lists. Thank you @boxrocket6803!
  • UI tooltip children now have pointer-events: none, and hover flicker on icon edges is resolved. Thank you @pedroforbeck!
🚯 Removed
  • FFmpeg dependency removed, replaced with free codec alternatives.
  • MPG123System removed from binding definitions.
trophy 1560
Apr 2021 196 posts
Update 26.04.22 : news/update-26-04-22
trophy 440
Aug 2023 6 posts
you have an account alert
trophy 855
Mar 2026 3 posts
good job guys!
trophy 340
Jul 2022 16 posts
W
trophy 1485
Aug 2023 6 posts
Auto LODS are cool, but we certainly won't be using them :D
trophy 1405
Feb 2024 55 posts
SEE YA'LL NEXT WEEK!!!!! 
trophy 1379
Aug 2022 1 post
Inviting non-Steam friends with invite codes would make the party system even more epic
trophy 625
Aug 2022 2 posts
please make it possible to launch games via a link through the game's website, like in Roblox.
trophy 1138
Jul 2022 1 post
Hopefully we can get a fix for scrolling in the overview/reviews of a game, as i cant read more than 3 reviews/ half a page of a games description
trophy 0
Jul 2024 19 posts
You may want to add a toggle somewhere in your editor to disable the Windows-specific codecs for a project, so developers who want to develop cross-platform don't accidentally include an audio or video file that isn't going to work for their purposes.

trophy 2013
Sep 2021 223 posts
trophy 250
Nov 2024 8 posts
i literally spent most of the night before trying to get a camera feed working for the answer to be posted. what are the evens lol

trophy 560
Oct 2021 4 posts
Ooooo that AO actually looks good now without the noise, hated these stuff in other games these days
people
Log in to reply
You can't reply if you're not logged in. That would be crazy.