Neck & Neck

The citizen has a neck now, the game jam finalists are neck & neck, and we've been hunting down bottlenecks.

Game Jam: Final Four

gamejame4_3.mp4 13.04 MB
Roundabout has been eliminated and earns 5th place for £5000.

The remaining finalists are:
  • GAMMA TEAM
  • RUN IT AGAIN
  • Catz VS Ratz
  • Keg Quest
The next round of votes are open now!

Citizen 2.0by garry

I've updated the citizen. They now have a default non frowny face and they can have a neck.
sbox.2026.09.29.11.30.39.png 2.83 MB
We have sliders to alter other aspects of the body like their chest, waist, neck, and nose size. You can choose their eye colour too. So if you liked having no neck, you can bring that back with a slider.
Let me be honest here. I love the citizen, I love how he looks, I love that he has no neck. But the feedback we've consistently got is that people hate them. They hate everything about them. So we're going to fidget around and change things to see if we can change that.

We're going to keep trying to make it work a bit longer, we're going to keep tweaking and trying to get it less divisive, but at some point we might have to hold our hands up and say okay, yeah, it didn't work, and flush him down the toilet and have a generic humanoid instead.

Of course, this isn't what "fixes" s&box on its own, but it something that comes up consistently in our many many many negative reviews, so it's something that we are addressing along with all the other feedback we receive.

Model Deformby garry


You can now reshape a model with a ModelDeformer component. Add one as a child of a model, use its volume to choose the affected area, and inflate, squash, stretch, transform, pull or project that part of the mesh. Deformers can be stacked with an explicit priority to control their order.

These are all GPU, they're shit hot fast, and can apply to any model. They are purely visual - they're not going to change the positions of bones or hitboxes or collision data.
sbox.2026.09.24.11.17.57.mp4 55.46 MB
This is what gives Citizen 2.0 its neck and new body-shape controls, but it can also be used for your own characters and effects. 

Friends and Partiesby devultj


We've moved some stuff around, and moved the friends list so it's all up in your face on the right side of the main menu. We want to make it as simple as possible for you to invite your friends, and see what they're up to.
image.png 3.49 MB
All party controls show up at the bottom right of your screen now. It'll be clearer as to what's going on, if everyone's downloaded a game, or if you're waiting for the host. These party controls stay on-screen on other pages, including overlays!

We've also added a new player card, that shows when you click on one of your friends. It shows their avatar too!
ShareX_dkJ6QWgftb.png 553.16 KB




Game Overview Refreshby devultj

We've refreshed the game overview screen. A lot of info that players didn't care for is now gone, but we've also added some new stuff that will make finding games that are suitable for your party much easier.
image.png 1.3 MB
The latest update for a game is also visible at a glance. We encourage creators on the platform to use this feature, as it's useful to show players what's new and what to expect.

Loading Screen Refreshby devultj

The loading screen's looking dated, so we've refreshed that too. It'll show a game's last update for you to read a blurb for, as well as show you how many achievements you've unlocked.
sbox_GH4zHB9Y5y.png 1.47 MB
When opening the loading screen, you'd notice stuff got stuck on-screen while everything was warming up. That is also fixed, so things will feel smoother going forward.

Main Menu Musicby garry

The main menu has a new music track from Carson. And if you don't like that I've also added a separate menu music volume setting, so you can turn it down or off independently of the rest of the audio.

New Startup Screenby garry


New startup screen for the game with a progress bar.
image.png 795.21 KB

Voice Chat Settingsby devultj


Voice chat now uses SDL for microphone capture and Opus for compression. You can select your microphone directly in the in-game audio settings, with a live meter to help set the voice activation threshold.
image.png 227.66 KB
This also fixes garbled voice when running multiple instances of the game. Each playback stream now owns its decoder, and custom voice playback can use SoundStream.WriteVoiceData.

GPU Profiling Scopes for Command Listsby wheatleymf

image.png 46.51 KB
You can now add your own profiling scopes inside command lists. They will be visible from in-game GPU profiler (overlay_gpu 1) and external tools. This should be useful for measuring performance cost of specific sections of your rendering code.

This is how you can add a profiling scope:
static readonly ProfilingSampler MyProfilingScope = new( "My Profiling Scope" );

// inside the command list execution code:
using ( _commandList.ProfileScope( MyProfilingScope ) )
{
    // do something here...
}
 Nested scopes work as well, like on the screenshot above. Here's a setup example for it:
using ( _commandList.ProfileScope( ParentScope ) )
{
	using ( _commandList.ProfileScope( NestedScopeA ) )
	{
		// something here...
	}

	using ( _commandList.ProfileScope( NestedScopeB ) )
	{
		// something here....
	}
}
 These code snippets are also available in s&box docs. 

Clutter Optimizationsby antopilo

We've optimized a lot the clutter scatterer to use less memory, less stutters and overall performances.

On our benchmark scene, we reduced memory allocations by 58% and a 97% reduction in batch upload time.

image.png 351.94 KB



Scene Compilationby Layla


You can now compile scene meshes and models into combined static geometry and collision using Scene > Compile Scene. This is similar to the map compiling in hammer, another step closer to bringing map editing over to the scene editor.
sbox-dev_IFlxLjHMqf.png 1.06 MB
You should see a good reduction in draw calls if your scene has a lot of meshes.
image.png 909.56 KB


Depth of Field Improvementsby antopilo


Depth of field now has a focus picker: click an object in the scene to set the focus instead of finding the distance by trial and error. The focal-distance and range controls have also been expanded for larger scenes.
sbox-dev_JRR6cpdsSb.mp4 825.92 KB
Blur size now scales relative to a 1080p render target, so changing resolution keeps the effect a consistent size. We have also fixed bright HDR pixels leaking through rejected depth-of-field samples.

Faster Game Loadingby Lorenz

The longer it takes to get into a game, the more players give up before they see it, so we spent some time getting them in faster.

Downloads

Downloads used to run through the main thread, so on a fast connection they were partly capped by frame rate. They now run on the thread pool, and dependencies download in parallel instead of one after another.

Cherry picked from our benchmarks:
  • On average hardware with a 200 Mbit/s connection, a game with lots of small files downloads about 50% faster
  • Games with lots of other package dependencies benefit the most, one went from 19.4s to 6.6s
  • The faster your connection the bigger the gain, slow connections were already mostly network bound

Loading

Most of the load time was spent on overhead rather than the actual loading:
  • Files were mounted one at a time
  • Package dlls were downloaded again on every load
  • Backend calls waited on each other instead of running in parallel

Loading sandbox on flatgrass:
  • Cold load (first load after starting s&box): ~20s to ~9s
  • Warm load (loading it again in the same session): ~7s to ~5.5s

Faster Painter Drawingby garry

I optimized the Painter system. Now drawing Polygons and Polylines is now much much faster and doesn't create any garbage.

Rendering Stabilityby matt

We have fixed several causes of GPU crashes, including depth-normal work on some AMD cards, cubemap filtering, render input layouts, and cleanup when maps unload or the renderer shuts down.

There are also fixes for replacing DLSS upscalers and initializing or sharing FSR3 upscalers. When VRAM is over budget, the texture pool now shrinks by the amount it is over, including in tools. GPU crash reports include more information about the failing call, shader and memory budget to help track down remaining problems.

Database Serviceby garry

We've had a database service on the backend for a while but not really exposed it. Well now it's exposed via Sandbox.Services.Database. There are a million ways you can use this and I'm sure we'll expand on it in the future.

This allows you to save data in a database for your package, on the backend. The data persists between sessions obviously, and can be public or private. You can get all entries for a particular group etc.
var messages = Database.GetTable( "player-messages" );

// The message and its world position.
var data = Json.Serialize( new
{
    Text = "That chest has teeth.",
    Position = new Vector3( 120, 450, 32 )
} );

await messages.Create( Guid.NewGuid().ToString(), data, "dungeon-01", true );

var records = await messages.List( "dungeon-01" );

Player Insights for Game Creatorsby Lorenz

There's a new player insights page under your game's metrics, at sbox.game/<your-org>/<your-game>/metrics/player-insights.
Only members of the game's organization can see it.

It focuses on two topics:

Player Retention
  • How long players stay during their first session
  • How many come back the next day, a week later and a month later
  • Whether that's getting better or worse over time

Discovery & Onboarding
  • Where the menu showed your game and how players got in
  • Whether the thumbnail, description and video convince them to press play
  • Whether the first 5 minutes keep them engaged

There's also a small section on loading, since a big download or slow startup is where players give up before they've seen anything.

Everything is compared against similar games, so you can tell whether your numbers are actually good.

Game Metadata Moved from the Web to the Editorby Lorenz

Player count, co-op/versus and map settings have moved from the website into project settings and the publish wizard.
Players should see which games they can play alone or with their party, and that only works if every game has this information set. So the publish wizard now asks for it.
image.png 87.58 KB

Terrain Rendering Fixesby Sam Pavlovic

Terrain holes and outer edges are now clipped before pixel shading. This restores early depth rejection and lets MSAA smooth the cut edges, while avoiding shader work on terrain that will be discarded.

We also fixed the terrain depth prepass writing incorrect surface data. It now outputs the proper normals and roughness, restoring ambient occlusion on terrain.