Rethinking

I’ve been rethinking what s&box should look like over the past couple of weeks. The platform is not well liked, it doesn’t have good retention. I’m embarrassed by our reviews, I am ashamed. Listening to all the negative feedback, absorbing, taking it seriously and deciding what we should and shouldn’t be doing. It’s not a big secret that it hasn’t been going well. 

Our focus has been on the engine and the development experience. That’s what we love, that’s what turns us on - but we’re not selling an engine, we’re selling a game. So we need to do much much better on the game, we need to shift our focus to what players are experiencing, not developers. 

Part of this focus is drawing our attention to the Sandbox Game. Giving it parity with the Garry’s Mod version and surpassing it. Showing everyone what the engine can do, adding more NPCs, adding vehicles, offering a first class multiplayer experience, supporting addons and customization. This is a relatively easy task - but I’ve let everyone down that was expecting that. I accept that, and I’m sorry - we are going to do better. 

We’re fully removing the Citizen. We tried to make it work for about a year longer than we should have (see below). 

We have been struggling with discovery a lot. Which games to show, which to hide. Then AI came along and made that much much harder, because suddenly it’s very easy to knock out a game. The player is overwhelmed by choice. They’re presented with a few good games surrounded by a ton of shit games. They choose a game, it takes a while to download, and it’s immediately shit. How many times will they try games until they find one they like. 

My idea of a Netflix for games doesn’t work. It’s not feasible. It’s not how people discover games. You can’t land people on a menu of 60 games and say have fun. That’s not a good experience. People want to find games through recommendations, through active multiplayer games, through watching streamers, influencers and content creators. We have been coming at it from the wrong direction. 

We shouldn’t strive to be a platform with the most games available. We should strive to be a platform with the best, most popular games available. Where good taste and great opinions are valued beyond everything else. This is a very human thing, this isn’t something that can be replaced by AI, ever. 

This is why we’re changing the Play Fund to an opinionated approval system instead of something everyone can just enrol themselves in (see below). 

We have spent a lot of time making our own backend, our own version of workshop. I’m arriving at the conclusion that this has mostly been a waste of time and resources. It has been fun to make, but we should be shaping everything into fitting into the Steam Workshop as much as possible. 

We intend to go free to play towards the end of the year. It’s been pointed out that we are charging for access and also have skins for sale. I don’t think that’s too unusual nowadays, but I can totally understand how combined with everything else that it’s a big turn off. We don’t need the entrance fee, we need players. Our intention always was to go free to play eventually, so fuck it, lets just do it now. Everyone who has paid for the game will automatically get a bunch of exclusive steam inventory items (extra if you bought it at $20 vs $10) that I hope will justify the purchase price. 

I love seeing people create things, I love this engine, and I love working on it. The negative reviews hurt me. The disdain for the project hurts me. I don’t like letting people down, especially when they’ve given me money to provide a service. I understand it all and we’re making some big sweeping changes to try to improve things. Please bear with us while we make these changes. 

The citizen is dead. The human is now the default choice everywhere. The model still exists in the game and so games that use it will keep using it, but it's no longer visible in the menu or the avatar editor. We'll be updating our games to use the humans.
I know some of you had grown to like the citizen and we are losing some of our identity, I believe this is a pragmatic  and necessary next step. It's not all downside. We now have to maintain just one player model. We don't have to worry about models with four fingers and massive hands. All the weapons can be normal size. We can make normal sized cars. 
We have been working together to improve the human models and this week you have the first pass. 

We have new animations, LODs, better underwear, eye color choice, climbing animations and a much cleaner animgraph.

The energy we're putting into improving the human model is just starting. It'll be a continuous effort.
I've given the humans a face-lift. My focus going forward will be on improving the look and customizability of the human models. As well as more head options to come.

We've improved and added LODs to the humans, as well as some fixes to the body meshes.

The eyes are being further developed, a new material and the option to adjust the colour.
We've come a long way from the original heads we added. The aim is to make models that are more like the half-life 2 citizens or Niko Bellic from GTA. Sympathetic, downtrodden - not scary or hyper realistic.
We know many of you will be sad to see the citizen go, and he will be missed internally - but at least you didn't get it permanently tattooed on your body... I'll never live this down.
What an idiot.
With the desire to use the human model as the default in s&box it was clear the current anim setup & animations themselves needed some love. Everything in the game has used the citizen as the base, so anims were cartoony and stylised...which doesn't fit the human. I also wanted to address the oddness in general locomotion, including crouch walks, specific jump directions and better landing:
I then looked at customiser animations.....these are not all being utilized at the moment but will give more natural motion to this area of the game as well:
Initial work has begun on weapon animations as well, starting with pistol, rifle & shotgun functionality:

Melee has also been looked at, with the crowbar getting the classic gmod pose treatment:
As Garry has mentioned the anim graph will also be cleaned up as a lot of the overcomplication is not being used  and is most likely making things more confusing for devs to set up for their own games. If there's anything you'd like to see added while we revamp player movement please let us know.
We've flipped the Playfund to a greenlight type system where you have to apply and be accepted to be in it. The previous system was not working, it was encouraging people to make the wrong type of games, it was rewarding people botting.

Our new policy isn't set in stone, but generally we want to discourage clickers, idler, slop and UI based games. We want to reward games like the ones we've seen recently in the Game Jam. We want to set the bar a bit higher than it has been set previously.

We've removed a bunch of games and maps from the system that we feel don't reach this new bar.
Our first experiment here will be with maps. When publishing now, you'll publish it to the Steam Workshop too. All files will go there. You're still searching via our backend for now, but the plan is to replace that with the workshop too.

This means you can subscribe to your favourite maps, they'll download while you're off the game, and you can filter them in the map selector.
To all mappers, please publish your maps to the workshop soon, because when we make the full switch, players will no longer be able to find your maps.
Performance isn't where any of us want it to be still. We've been improving it, but not fast enough, and I've let other work take priority when it shouldn't have. We've consistently failed to meet a stable frame rate on lower end hardware and even on higher end hardware the frame rates aren't acceptable. I'm sorry about that and it should've been sorted a long time ago.
Our metrics are noisy and don't paint a comprehensive picture for anyone, we'll be improving on these once again to give a better breakdown of how each tier of hardware is reacting, in consistent scenarios that are poorly performing like Sandbox & Construct.

I know "we're working on performance" is what everyone always says, but we're working on it, we're making leaps and bounds week on week with a focus on lower end hardware backed by pure hard data. Please bear with us a little longer.
We had about 10 different overlays for different performance metrics, none of them were overly useful by themselves and they were all hidden behind a bunch of convars.

I've removed them all and replaced them with an all in one performance overlay which pops out into a new window, this is available both in the game and editor. Right now this is opened by pressing F11, but that can always change if enough people tell me their coffee maker is bound to that button.
The main objective is to make it even easier to see performance problems at a glance but also adds interactivity so we can click to deep dive into specific problems. It also has it's own console too, I see this becoming similar to your browsers F12 developer tools window.

A new interactive GPU timeline is available through overlay_gpu_timeline. It lays out GPU work over time, and you can freeze the display to inspect individual timings.

This complements the existing GPU profiler when tracking down expensive rendering work. GPU timeline telemetry has also been added to help us investigate performance across real sessions.

Ambient Occlusion has been reworked to have much better optimization, having less than half the cost regardless of setting.
On top of being faster, previously if you chose Low settings for your Nokia it'd look like garbled noisy shit, now it's looks better than High did before and still scales way better.


We've replaced the MCP server with sbox-cli, all this really means is your AI agents can launch and detect the game and editor even easier, even if multiple instances are running.
This is opt-in if you are already using AI, if you are not you won't see anything.

After reading reviews and issues, I noticed a significant number of people commenting about how much time it takes to launch the platform - so I spent some time improving our startup flow.
Our aim here is that there's even less friction from launching the platform to getting into a game.

We've greatly sped up our startup process by doing more work in the background - and rather than using fixed delays, we do proper readiness checks for things. We also show a splash screen much sooner in the process, which means that we can give more immediate feedback while the rest of the platform starts.

We'll hopefully find more places to speed this up in future - but our current improvement is a measured speedup of about 60% on my machine.

This doesn't just apply to the platform, too - similar speedups also apply to our editor for creators and developers.

The player controller follows sloped ground and brakes along its surface more consistently. This fixes downhill drift and jitter when walking into a wall from a slope. Stepping up from sloped floors has also been corrected (Fixed jitter when running into a wall on a sloped floor)

BrakePower now acts as a friction multiplier, with existing values migrated. CoyoteTime is exposed as a property too: you can choose how long players may jump after leaving the ground, or set it to zero to disable that grace period.

You can now add a 3D skybox through a scene component. Point it at a scene and it renders that scene as the skybox, making the setup available to games and mounted content.

This provides a way to build distant scenery separately from the main playable scene, rather than relying only on a flat sky material.


Decals now support Multiply and Additive blending as well as the existing Alpha mode. Choose the blend mode on the decal definition to change how its colour affects the receiving surface.
We've seen a lot of reviews and comments saying downloads take forever, and that's fair.
I recently moved and I'm stuck on a 20-100 Mbps connection myself, so I get it now.
Waiting ten minutes or more to join a game is a terrible experience.

So we've been cutting down how much you have to download before you can play a game.
Added together, the 50 most played games drop from 46.3 GB to 36.3 GB in total (22% smaller).
The 50 most played maps drop from 47.4 GB to 35.6 GB in total (25% smaller).

Game Creators just need to recompile their assets and republish to get these savings.

On top of those savings, we're experimenting with cloud texture streaming.
When you join, you will only download lower resolution textures, and the full detail streams in while you play.
That cuts the initial download dramatically, by 63% for the top 50 games and 82% for the top 50 maps.
In addition to lowering the assets size and download volume in general.  We have been taking inventory of our assets and fine tuned our own maps, materials and textures by hand.

We've done a big pass on our own materials reducing their resolution, using more shared texture maps and removing any unused or minimal/empty textures. This has already had a big impact on maps like Construct which use a lot of materials, From 6gb > 4.2gb.

The other thing we are addressing is reducing the amount of single use materials in our maps, while it does at nice detailing its not noticable. I've managed to half Flatgrass, From 1gb > 500mb. Going forward any of our maps will use a much more limited palette to help with file size.

Runtime created models can now carry game data such as prop health, explosions and break pieces through ModelBuilder.WithData. Meaning mounts can now create breakable props.
 

Physics can now play scraping sounds assigned in surface assets.
This might be the 3rd time we've said we've fixed this but, private lobbies should are now private.

We made assumptions that Steam controlled who could enter these lobbies but they simply controlled only the visibility. Now we have our own checks in the engine on who's allowed in a lobby.
To make other players move smoothly, the game shows them slightly in the past, so it always has the next update ready to blend towards.
That delay was bigger than it needed to be, and on a bad connection, late packets made movement stutter.

So we reworked how network updates are timed and played back.
Updates now go out at the rate set in your project config (30 Hz was really about 20 before), and players move based on when the host sent each update, not when it arrived.
The delay now also adjusts to how good your connection is.

  • On a stable connection at 30 Hz, other players are now 71 ms behind instead of 133 ms.
  • On a jittery connection it goes from 160 ms to 127 ms, and movement stays smooth instead of stuttering.
The world model for the revolver has been finished for a while, but the suite is now complete, with a proper fully animated viewmodel! 
All the weapons are available in our s&box weapons collection.

26.10.13

26.10.13
12 October 2026
Areas
140 changes in this update

Added

28 changes
Workshop
  • Workshop maps - publish map files to Steam Workshop, subscribe to maps and browse Subscribed/Downloaded filters while discovery continues through the backendPR #6066 by @devultj

Player Controller
  • Coyote time - exposed the jump grace period as a configurable property, including zero to disable it13697d8 by @carsonkompon

Main Menu
  • Your Record - show playtime and the rarest achievement on the game pagePR #5992 by @devultj

Rendering & Shaders
  • 3D skyboxes - added a scene-based 3D skybox component for games and mountsPR #6085 by @aylaylay

  • Indirect-light controls - adjust probe-volume intensity, tint, contrast, saturation and outward blending at runtime without rebakingPR #6088 by @garrynewman, @sampavlovic

  • Decal blending - added Multiply and Additive modes alongside Alpha on decal definitionse3b8609 by @aylaylay

  • Performance hub - open a dedicated performance window with F11 or perf_hub, with frame, CPU, GPU, memory, rendering, network, UI and audio viewscfe2159 by @handsomematt

  • GPU timeline - added an interactive, freezable overlay through overlay_gpu_timelinePR #6052 by @antopilo

  • Named runtime textures - register named procedural textures for resource lookupPR #6033 by @aylaylay

  • ViewSetup time - allow custom views to supply their shader timePR #6010 by @garrynewman

  • Pipeline inspection - added r_dump_pipeline_layers and -dump_pipeline_layers for dumping view layer order, settings, outputs and attributes90c8e3b by @handsomematt

  • Shader statistics - added ShaderStats.bat and SboxBuild shader-stats for offline AMD register, scratch and occupancy reportsPR #6028 by @handsomematt

Physics & Resources
  • Joint builders - expanded fixed, hinge, ball and slider motor/spring settings, explicit limits, friction and breaking thresholdsPR #6073 by @aylaylay

  • Physics body settings - retain damping and inertia scale in built model and standalone physics resourcesPR #6073 by @aylaylay

  • Procedural physics - create standalone physics resources through PhysicsGroupDescription.CreatePR #6014 by @aylaylay

  • Model game data - added ModelBuilder.WithData for typed prop metadata, explosions and break piecesPR #6068 by @aylaylay

  • Resource mounting - mount generic GameResources, including surface definitionsPR #6054 by @aylaylay

Audio
  • Scrape sounds - physics contacts can play surface-defined scrape audioPR #6047 by @aylaylay

  • ADPCM audio - added support for ADPCM WAV files and files missing final paddingPR #6011 by @aylaylay

  • Voice analysis - expose viseme data without requiring a SkinnedModelRenderer1394531 by @capablewizard

Editor & Automation
  • Texture shortcuts - added bindable face-texture alignment, rotation, scaling, shifting, fit, justification and hotspot commands808de1e by @aylaylay

  • CLI project creation - create new projects from the command line using the shared project templates3fdc10d by @handsomematt

  • CLI project targeting - infer the target from the project directory and support one-shot tool calls through --call2fb7e29 by @handsomematt

  • Startup profiling - added -startup-profile timing reports in JSON and MarkdownPR #6048 by @xezno

  • sbox-cli - discover, connect to or launch individual editor/game instances over local MCP connections, with trusted C# execution and project AI settingsPR #6020 by @garrynewman

  • Hammer automation - added 40 MCP tools for map inspection/editing, geometry, materials, asset usage, builds, saving, cameras and screenshotsc050e68 by @handsomematt

  • Performance MCP - expose performance-hub data through perf_ tools, including frame history, CPU/GPU costs, allocations, rendering, network and UI statisticsbb070b3 by @handsomematt

  • Agent instructions - ship the sbox-cli skill with --skill and --skill-install, and offer installation when Claude Code or Codex is detected41deb627118fb6 by @handsomematt

Improved

41 changes
Workshop
  • Workshop playtime - report playtime for Workshop games and mapsPR #6119 by @devultj

Main Menu
  • Translations - localize fixed menu text across all 29 supported non-English languages, including settings, browsing, parties, avatars, rewards and jamsPR #5991 by @garrynewman

  • Lobby browsing - embed the lobby list in the game page instead of opening another modalPR #5992 by @devultj

  • Party chat - only show it during gameplay while the menu is open or when the game uses platform chatba34810 by @devultj

Rendering & Shaders
  • C# rendering pipeline - move standard/3D-skybox layer setup, render hooks, UI blending, stretch/FSR1 upscaling, presentation and shared target/view setup into C#fa4a3633bf087df978f90 by @handsomematt

  • Shadow quality defaults - retune cascade counts and resolutions: High uses three 2048-pixel sun cascades and a 1024-pixel local-light maximume46a8b3 by @handsomematt

  • Probe settings - improve sampling-bias defaults, organize indirect-light settings and make relocation the default for probes inside geometryPR #6088 by @garrynewman, @sampavlovic

  • Ambient occlusion - reworked depth-chain generation, denoising and upsampling; retuned quality presets and stopped High quality running unnecessarily at full resolutionPR #6077 by @sampavlovic

  • Gaussian mip blur - reduce texture samples from four to one per output pixelPR #6037 by @sampavlovic

  • Bloom - remove redundant gaussian mip blurring before bloom's own blur chainPR #6038 by @sampavlovic

  • Shader lifetimes - reduce scratch usage and shorten temporary-value lifetimes in fog, skin, eyes, foliage and shared material lightingPR #6067 by @antopilo

  • VRAM fallback - use suitable system-memory types when device-local memory is full366a427 by @lolleko

Characters
  • Human models - refreshed third-person animations and the animgraph, added eye-colour selection, updated clothing icons and made humans the default in menus and avatar editingPR #6044 by @alexpunch, @garrynewman, @danduwfp

Startup & Launcher
  • Startup waits - continue loading during login and inventory initialization, reuse eligible editor assemblies, and replace fixed compile delays with readiness checksPR #6048 by @xezno

  • Startup splash - show a software-rendered splash before Vulkan initializes, then hand the same window to the rendererPR #6075 by @xezno

  • Launcher - refined visual hierarchy and project startup feedback10007afd463908 by @xezno

Assets & Downloads
  • Texture compression - rate-distortion optimize texture blocks and compress mips with zstd, with gentler settings for normal maps and decoding on the job pool4146e93afd7130 by @lolleko

  • Cloud texture streaming - join using lower-resolution textures and download higher detail during gameplay; opt out with r_texture_web_streaming 04365202 by @lolleko

  • Sound bitrate - default Opus output to 192 kbps stereo and 96 kbps mono; the bitrate setting specifies the stereo rate22fc028 by @lolleko

  • Cloud asset reinstalls - avoid re-registering unchanged cloud files when reinstalling a packagePR #6123 by @polepie

  • Sound compression - enable compression by default, retain source sample rates and preserve compatible encoded sources; use Opus when smaller for processed/uncompressed audio715fbcf by @lolleko

  • Map visibility - compress visibility payloads to reduce compiled map sizeb9ee237 by @lolleko

  • Mesh optimization - updated meshoptimizer to version 1.3c1e09a6 by @lolleko

Memory & Performance
  • Input - remove per-frame allocations in action lookups, key-set updates, input scopes and context traversalPR #6007 by @polepie

  • Undo memory - capture only changed properties for property edits instead of copying whole prefab instances351b314 by @polepie

  • Context scopes - avoid boxing/allocations when entering scenes, menu/global contexts and time scopes; reuse fixed-update and frame-pump delegatesbdad5daf5e66073cf99bdbbb1982c2a46ba by @handsomematt

  • UI and connection input - reuse traversal/sorting storage and clear connection input without temporary connection lists307ad551aa4db16c4eba1 by @handsomematt

  • Camera work - cache UI callbacks, copy tags as tokens, skip unchanged sets and sort cameras/modifiers without LINQ3200fece44c78544d6548 by @handsomematt

  • Scene queries - query components directly in per-frame systems and render environment maps without enumerating Scene.All44406f8b13d9dd by @handsomematt

  • Render storage - reuse post-processing collection/blending storage, render-target names and the pipeline attributes wrapper9a2220304fe77f90f9ef5 by @handsomematt

  • Shadow setup - reuse mapper snapshots and write attributes without temporary managed wrapperse791c2157b4170 by @handsomematt

  • Animation setup - cache IK/look parameter names and avoid closures when reading deformation anchors7686edcff0ad70 by @handsomematt

  • Voice processing - run lipsync analysis only when a renderer or a viseme/laughter consumer needs it71434c7 by @lolleko

  • Mesh builds - avoid duplicate mesh generation and unnecessary collision cookingPR #5982 by @aylaylay

Editor
  • Scene baking - simplify manual compilation; saving unchanged scenes preserves the bake and warnings can select/frame empty source meshesPR #6040 by @aylaylay

Diagnostics
  • GPU crash reports - include Aftermath's blamed shader, near-budget VRAM and bindless ring-lap information02e589ead2435f by @lolleko

  • GPU telemetry - added timeline/pass telemetryPR #6065 by @antopilo

  • Discovery telemetry - include search queries in discovery eventsf586047 by @lolleko

  • Physics diagnostics - log the first Box3D assertions on customer machinesea5ce94 by @lolleko

Networking
  • Update timing - preserve the configured network send schedule, interpolate using sender timestamps and base resend timeouts on measured round-trip timee4377c0 by @lolleko

  • Adaptive interpolation - adjust playback delay to connection timing and smooth interpolation restartsc7333a7 by @lolleko

Fixed

65 changes
Workshop
  • Map versions - report an incompatible Workshop map version when joining instead of attempting to load mismatched contentPR #6066 by @devultj

  • Workshop metadata - correct thumbnail handling and remove the automatically added sbox.game link from item descriptionsPR #6119 by @devultj

Player Controller
  • Slopes - follow static-ground slopes and brake along the ground plane, fixing downhill drift and wall jitter; migrate existing BrakePower valuesPR #6082 by @carsonkompon

  • Stepping - correctly step up from sloped floorsPR #6083 by @carsonkompon

Main Menu
  • Store inventory - refresh inventory correctly after the first store purchasea7c4487 by @deadmonstor

Audio
  • Vorbis playback - fix sample-rate overflow, stuck voices, and raw/chained stream decoding regressionsf8ce4f1e4fd219 by @ryleigh, @lolleko

  • Audio processors - tear down removed processors on the mix thread7f91c2e by @lolleko

  • Speech synthesis - prevent viseme handlers retaining speech synthesizersc49fcb6 by @lolleko

  • Audio restarts - retain resample streams across SDL restartsfac2a63 by @lolleko

  • Video audio - wait for in-flight mixing before releasing the audio callbackf716c65 by @lolleko

  • Wave cache - synchronize cache access and fall back to mapped files when the arena cannot commit memorycd301eb by @lolleko

  • Mixer tags - initialize default mixer simulation tags093a2d2 by @aylaylay

Editor
  • Block snapping - fix snapping on vertical faces and update the spawnpoint preview modelPR #6046 by @bakscratch

  • Continuous block creation - keep repeated block creation working without changing finish behavior56ba515 by @aylaylay

  • MCP messages - accept a byte-order mark at the start of a message57973c6 by @handsomematt

  • Mouse focus - prevent the editor game view capturing the mouse when the editor window is unfocusedPR #6009 by @garrynewman

  • Console retention - use weak references for logged arguments so console history does not keep closed scenes alive4d551446c8953c by @polepie

  • Scene dock close - destroy the scene view before stopping its session8ecc66b by @lolleko

  • ModelDoc close - delete view-control popup actions with their owning session321dc75 by @lolleko

  • Image hotload - refresh images when their source changesf09a99d by @deadmonstor

  • Material hotload - refresh material attributes after resource reloadPR #6086 by @aylaylay

  • Mesh picking - select meshes without requiring collision geometryca74a6a by @aylaylay

  • Edge-loop selection - match Hammer's additive/modifier behavior and select complete loops on plain double-clickPR #6091 by @aylaylay

  • Clipping tool - align with surface normals and Hammer-style grid snappinge999e2d by @aylaylay

  • Boolean texturing - correct hotspot mapping on cut faces579843a by @aylaylay

  • Mesh bridges - correct Hammer bridge normals and avoid creating undo entries when a bridge failsec57b1c6c78e55 by @aylaylay

Networking & Main Menu
  • Private lobbies - enforce invited/admitted-player access and friends-only checks, preserving the access list during host migrationPR #6076 by @handsomematt

  • Lobby privacy - respect the more private setting requested by the menu or game44b0687 by @devultj

  • Ultrawide menu - restore the 16:9 layout cap and fix sort-button shapesPR #5992 by @devultj

  • Inventory prices - serialize Steam inventory price polling9f0a866 by @lolleko

Rendering & Animation
  • Object highlight - write highlight output to alpha correctlyPR #6095 by @wheatleymf

  • Contact shadows - fix seams when the sun is perpendicular to the view00033d6 by @polepie

  • Panel-app rendering - initialize contact-shadow shaders before rendering starts to prevent first-use deadlockse70eb9b by @handsomematt

  • View lifetime - prevent 3D skybox pipelines returning to the pool before rendering finishes and fix an uninitialized auto-exposure settingfa4a363 by @handsomematt

  • Procedural layers - report actual colour formats and sample counts instead of assuming RGBA16F3bf087d by @handsomematt

  • Probe capture - use 90-degree cubemap faces and correct silhouette depth sampling and octahedral corner seamsPR #6088 by @garrynewman, @sampavlovic

  • Probe bake safety - prevent overlapping bakes, preserve saved lighting during previews/cancellation and apply new textures only after every save succeedsPR #6088 by @garrynewman, @sampavlovic

  • Probe sampling - correct compressed visibility decoding, transformed volumes, back-facing probes, small-weight dark patches, boundary bias and excess indirect-light gainPR #6088 by @garrynewman, @sampavlovic

  • Probe relocation - respect excluded geometry, detect thicker geometry, handle transformed volumes and disable probes that cannot escape geometryPR #6088 by @garrynewman, @sampavlovic

  • Indirect-light bounces - make bounce passes deterministic and stop fog sampling outside probe volumesPR #6088 by @garrynewman, @sampavlovic

  • Surface normals - correct tangent-space directional-lightmap reconstruction and normal transforms under nonuniform scalePR #6088 by @garrynewman, @sampavlovic

  • Environment lighting - restore the second skin specular lobe, keep cloth roughness consistent across probes and use consistent cubemap luminance normalizationPR #6088 by @garrynewman, @sampavlovic

  • Depth-of-field highlights - preserve bright HDR values through the blur passesPR #6088 by @garrynewman, @sampavlovic

  • Ray-tracing resources - expose descriptors to compute, correct TLAS lifetime, reject incomplete scenes and refresh geometry after mesh overridesPR #6088 by @garrynewman, @sampavlovic

  • Compute dependencies - track texture reads on the graphics queue before later writesPR #6088 by @garrynewman, @sampavlovic

  • Shader time - prevent shader animation time pausing with the menuPR #6010 by @garrynewman

  • Sprite playback - allow AnimationState to advance multiple frames per render frame, preventing slowdown at low frame rates and fixing an infinite loopPR #5990 by @carsonkompon

  • Animation booleans - preserve true values when denormal flushing is enabledPR #6000 by @ryleigh

  • Texture mipmaps - fix array mip uploads and rectangular mip readbackPR #6012 by @aylaylay

  • Blur alignment - stop blurred mip levels drifting down and rightPR #6037 by @sampavlovic

  • Material overrides - skip unloaded overrides when updating scene-object flags31d59f0 by @lolleko

  • World aggregates - delete aggregate scene objects with their world nodefbe789a by @lolleko

  • Bindless descriptors - keep the registered set on its active ring copyc0f8aa7 by @lolleko

  • Descriptor pools - do not recycle pools still held by a render context61dbd5b by @lolleko

Physics
  • Networked velocity - replicate rigidbody velocity changes made by the owner to proxies2e21c80 by @ryleigh

  • Hull construction - accept valid hulls with 256 half-edges132f13e by @aylaylay

  • Rotated colliders - apply box-collider Center offsets correctly relative to a rotated RigidbodyPR #6056 by @ryleigh

  • Destroyed physics objects - skip stale body/joint destruction and events for objects removed earlier in the step; avoid tracing deleted worldsa8312e1c7c5903ffa3b61 by @lolleko

  • Joint behavior - preserve explicit zero-range limits, return hinge angles in degrees, and apply slider motors/friction in 2DPR #6073 by @aylaylay

Assets & Engine
  • Asset cache - remove deleted assets from pending work and only flush a clean asset list9ecc9987ac1d69 by @lolleko

  • Asset metadata - synchronize edit-info symbol tables08e7356 by @lolleko

  • Filesystem cleanup - suppress finalizers that would only throw1c3a6df by @lolleko

  • Allocator errors - handle retail mimalloc failures before an error dialog can re-enter the heapff62168 by @lolleko

  • Main-thread dispatch - fixed a reported execution-context security issuePR #6087 by @garrynewman

  • Shader builds - do not skip shader sources merely because the checkout is under a dot-prefixed parent directoryPR #6028 by @handsomematt

Removed

6 changes
Rendering & Shaders
  • Performance overlays - replace the standalone performance overlay commands, including overlay_gpu_timeline, with the F11 performance hubcfe2159 by @handsomematt

Editor & Automation
  • Project agent files - stop automatically writing AGENTS.md and agent guides into projects; use the engine-shipped skill instead7a56e2441deb62 by @handsomematt

  • HTTP MCP - replaced the editor's fixed-port HTTP MCP server and settings page with sbox-cli and per-instance stdio connectionsPR #6020 by @garrynewman

Characters
  • Citizen avatar selection - removed Citizen from menu/avatar selection and removed human-incompatible clothing; existing games can still use the modelPR #6044 by @alexpunch, @garrynewman, @danduwfp

Assets & Downloads
  • Unused map data - stop packaging runtime-unused lightmap query data and the debug chart-colour lightmap0962fec6366cf4 by @lolleko

Startup & VR
matt
Facepunch
JoinedApr 2021 Posts272 Score2,420
Rethinking : news/rethinking
zxcdulsed
Member
JoinedAug 2023 Posts33 Score1,445
bye bye terry 👋
ceitine
Member
JoinedMay 2021 Posts37 Score1,410
i was the first to react on every section so i win
Missing
Member
JoinedJul 2022 Posts71 Score2,726

RIP TERRY.

edited 2 hours ago#5
Fantastic
Member
JoinedJan 2023 Posts23 Score18,784
Claude did a good job on the infographics you should increase his salary.
The playfund and animation/human changes seem good though.

I would love to see improvements to IDGI and the Mapping tool soon, but these changes all seem really beneficial.
edited an hour ago#6
DanFMN
Member
JoinedAug 2021 Posts5 Score2,377
This seems like a really great update. The workshop changes still feel a bit open ended. I hope that works out for the better.

I also think clear play fund guidelines are important.
prime
Member
JoinedFeb 2025 Posts32 Score2,613
😼
Sjims
Member
JoinedApr 2026 Posts5 Score988
WOOO!!!
Papa Brickolini
Member
JoinedApr 2021 Posts89 Score6,401
Great post.
Novostranger
Member
JoinedJul 2022 Posts116 Score1,870
thanks garry, youre going to save the game's economy with this one
dK
Member
JoinedJul 2022 Posts7 Score1,450
Good update
=))
Member
JoinedAug 2022 Posts4 Score1,085
Lag_Spike
Member
JoinedFeb 2025 Posts2 Score5,057
Great Changes! I will miss you Terry...

KnuckleHead
Member
JoinedJul 2024 Posts7 Score2,250
Terry sacrificed himself to wash our sins away.
Kronax
Member
JoinedAug 2021 Posts6 Score1,222
very good news, congrats
Mexanik95
Member
JoinedMay 2023 Posts14 Score4,696
F Terry 
Lime1
Member
JoinedMay 2026 Posts35 Score14,651
Ban this fantastic guy he is a loser 
Captain Derek
Member
JoinedMar 2024 Posts1 Score235
I think moving away from citizen is a good move, he was a good sausage man but ugly.
Fptbb
Member
JoinedAug 2022 Posts8 Score10
Sausage is dead, long live sausage
ツ
Member
JoinedDec 2024 Posts52 Score12,725
Now we talking, good direction Garry. 
papaya
Member
JoinedJan 2026 Posts2 Score2,491
w update

Timingplanet
Member
JoinedNov 2022 Posts1 Score1,296
CSEliot
Member
JoinedMar 2026 Posts16 Score1,185
STREAMING ASSETSSSSSSSSSS!!!!!!!!
G+
Member
JoinedFeb 2024 Posts79 Score3,325
I was very sad and shocked when I heard terry was (see below)

going to be removed, but when I heard terry will still remain in our hearts (the game files) (see below)

I was really happy, so he's still there and I might use him for a few games here in there. Also, I'm glad that people who has spent $20 on this game will receive rewards! That's a good move by facepunch.

I hope hammer is fully gone by the end of this year, I can't decide on whether to use scene mapping or hammer...
MORT
Member
JoinedApr 2026 Posts7 Score2,689
removing terry is such a rag pull. Keep my 20$ give me a cool character back.

No play fund guidelines, you guys are skaters there?
I get that you need to serve the players too, but it feels like 180 from developers. Your opinionated greenlight system tells nothing.
defthue
Member
JoinedFeb 2026 Posts16 Score1,425
Glad to see the focus is on improving games quality standard and user experience.

gasleet
Member
JoinedAug 2024 Posts84 Score7,903
Lets go garry! <3 Banger Update. MAybe haven't made all the right decisions but you and the team are putting in the work, love Sam Pavlovic's updates <3
edited an hour ago#28
DreamPiece
Member
JoinedJul 2022 Posts17 Score4,941
Something that I think S&box needs that would get more users/creators. Visual scripting. I saw the Visual scripting channel got removed on Discord. If you think that's gonna change my opinion on it, then you're wrong. No one's gonna use doo cause it's crap and discourages people from thinking outside the box. Visual scripting would appeal to many potential devs, including former Unreal devs too. Please think about it, cause I'd sell my soul for proper Visual Scripting in S&box. That's how much I believe in it. Also remove the AI slop cause nobody's gonna play anything that has an AI thumbnail in it.
edited 57 minutes ago#29
Giga
Member
JoinedOct 2026 Posts2 Score0
I bought the game purely so I could comment here. The constant, iterative admissions of failure are doing little to improve the game's public perception. What it needs is a HARD RELAUNCH.

Make the game free for all existing Garry's Mod owners while keeping the price at $10–$20 for everyone else. It should replace Garry's Mod in players' libraries and be renamed Garry's Mod² or something else invoking Garry's Mod (GMOD). The name is also a big problem for this game as it has less than 0 name recognition. 

Essentially, this should follow the same approach as CS2's launch, where it replaced CS:GO as the primary game. The one key difference is that the original Garry's Mod should remain accessible and fully bootable, including its original main menu, to preserve compatibility with existing content and addons (Like Master Chief Collection kinda? Main menu is the game launcher? Something like that).

S&box is simply not positioned to be a successor to Garry's Mod without a hot-handoff occurring, which has been further hampered by the non-associated game name and (fixed) questionable artistic styles (Maintain the Half-Life aesthetic!). 
clayhircine
Member
JoinedJun 2026 Posts3 Score2,271
yall cookin in this update
people
Log in to reply
You can't reply if you're not logged in. That would be crazy.