← Gaming news
Steam announcementView the game on SifterSeptember 29, 2026

Neck & Neck

A new update has been released, you can view the full changes on our blog post.

https://sbox.game/news/update-26-09-29

Game Jam: Final Four

Roundabout has been eliminated and earns 5th place for £5000.

Four finalists remain, the next round of votes is now open.

Citizen 2.0

I've updated the citizen. They now have a default non frowny face and they can have a neck.

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 Deform

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.

Open Video

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 Parties

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.

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!

Game Overview Refresh

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.

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 Refresh

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.

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 Music

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.

Voice Chat Settings

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.

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.

New Startup Screen

New startup screen for the game with a progress bar.

GPU Profiling Scopes for Command Lists

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 Optimizations

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.

Scene Compilation

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.

You should see a good reduction in draw calls if your scene has a lot of meshes.

Depth of Field Improvements

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.

Open Video

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 Loading

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 Drawing

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

Rendering Stability

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 Service

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 Creators

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 Editor

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.

Terrain Rendering Fixes

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.

Changelog

🎁 Added

Characters & Models

  • Citizen 2.0 - refreshed the default face, added shader-based eyes with editable color, and added neck, head, chest, waist, nose and chin adjustments facepunch/sbox PR #5909 by @garrynewman
  • Model Deformer - added volume-masked inflate, squash/stretch, transform, pull and project operations with ordered stacking and inspector controls facepunch/sbox PR #5894 by @garrynewman

Editor

  • Scene compile reports - added Make All Static on non-static exclusion groups, marking the affected objects static in one undoable edit facepunch/sbox@f83dad0 by @aylaylay
  • Game settings - edit recommended player counts, co-op/versus modes and map settings in Project Settings; the publish wizard now includes a Players step with a game-card preview facepunch/sbox@38113fd by @lolleko
  • Scene compilation - explicitly bake eligible static meshes and props into aggregate geometry and collision with Scene > Compile Scene, retaining the scene path, GUID and editable source facepunch/sbox PR #5590 by @aylaylay
  • Component eyedropper - choose from a dropdown when the picked object has multiple matching components facepunch/sbox PR #5921 by @bakscratch
  • Edge cuts - create a single vertex with a single-point edge cut facepunch/sbox PR #5923 by @bakscratch
  • Depth-of-field focus picker - click a scene target to set the focal distance, with expanded distance and range controls facepunch/sbox PR #5874 by @antopilo

Rendering & Shaders

Audio

Main Menu & Parties

Services

  • Database service - added Sandbox.Services.Database for package-scoped, player-owned cloud records, with public/private visibility, groups, pagination and revision-checked updates facepunch/sbox@95bc339 by @garrynewman

🧼 Improved

Main Menu & Parties

Downloads & Networking

Navigation

  • Disconnected targets - avoid exhaustive searches when the destination is on another navmesh island and return a partial route toward it facepunch/sbox@d1ff911 by @lolleko
  • Agent routes - repair existing routes when agents drift or are repositioned instead of always replanning facepunch/sbox@f18fd6f by @lolleko

UI & CSS

  • Painter - reduce CPU submission work and temporary allocations for paths, lines, curves, polygons and aligned strokes, with reusable batch storage and shared contours facepunch/sbox PR #5866 by @garrynewman

Rendering & Shaders

Platform

Audio

Characters & Models

Editor

🪛 Fixed

Editor

Main Menu & Parties

UI & CSS

Rendering & Shaders

Audio

Engine

Downloads & Networking

Services

🚯 Removed

Main Menu & Parties

Editor

Posted by the game’s developer or publisher to its Steam community hub and published by Valve through Steam’s public news API. Sifter reproduces it unedited and writes none of it.