Thank you for everyone that has helped us during this period - the developer preview is now closed!
The developer preview has been invaluable to the development of s&box, putting the engine in front of it's core audience from day 1 - you guys telling us what you love and what is shit has turned the engine into what it is today.
We'll be open again on Steam on the 28th April for $20.
I've merged the UI batcher, which means UI will render much much faster now.
You can expect major performance improvements in your user interfaces(which is almost every game) with some users reporting up to 54% more FPS while on the menu.
Batching
Previously we would render each panel individually as we traversed the DOM. The GPU would paint each individually which worked fine for a while. But as complexity grew, the number of individual draw that your GPU would execute would affect performances.
We can now, in the best case scenario, draw everything all at once.
Discovery Page
Our discover page went down from 1080+ draw calls to only 5.
This is what your GPU was doing before. Each line is a draw call.And this is after.
Here is a video replaying each draw one by one with a before and after.
Other pages
The other pages of the menu are drawn in a single call, which unfortunately doesn't make for a very exciting video as its drawn in a single step.
Overall, this was a much needed improvement as the complexity of games and user interfaces grew. We plan on working on this a bit more to optimize other aspect of our UI pipeline.
We've made it easier to search by putting a nicely accessible search bar in the middle of the navbar: This is pretty basic, and we'll improve it over time - but we're hoping it makes it easier to find the games you want to play.
Our floating point serialization had a precision bug that caused values to appear changed even when they hadn't been touched, leading to noisy git diffs. This is now fixed and you should no longer see large unexpected diffs like this one in your scenes or prefabs.
This week we made a bunch of improvements to prefab editing.
Faster: Less memory allocation and wasted work when editing prefabs.
Cleaner diffs: Nested prefab operations no longer regenerate all GUIDs.
Missing prefabs: instances with deleted prefab files now show as "broken" instead of throwing an error; data is restoreed if the prefab file comes back.
Bug fixes: Reverting nested prefabs no longer wipes parent overrides; creating a prefab from a GameObject correctly restores positions.
Ambient Occlusion is currently the biggest bottleneck in low end systems.
We shipped a few optimizations to SSAO, it's using Hilbert Tree instead of Blue Noise, this allows us to use less brute forced samples to resolve the same perceptual result.
On top of that we are using Float16 logic instead of Float32 on it now, which should have a considerable speedup in some GPU families.
There's more to do with this but it's better to ship it in small, quick iterations, being able to use proper Motion Vectors and a good bilateral upsampler should reduce the need to do brute forcing greatly.
We've added a parallel / upright joint, so you can keep objects upright reliably.As an added bonus, you can also link two objects together and they'll stay parallel.
The documentation has been getting a lot of love, we have a lot of great content on there but the discoverability and flow was non obvious. I've been rearranging it all, polishing up the Getting Started, adding more top level sections as well as "hub" pages. There's been a lot of community contributions already too since we open-sourced it last week!
For a long while now, if a dedicated server networked a GameObject with a Texture reference, it was nulled out and never sent. This is because servers don't load texture data, which makes sense. But because of that we were never registering them in our managed engine.
So we're registering them now -- this doesn't mean you can start reading texture data on the server, you can't. However, networking these resources will work as intended now.
It's the end of an era with the developer preview closing - 5 years ago we got Source 2 and we almost immediately opened up to developers, letting them try out the toolset from when there was very little, so we could see what was great and what wasn't.
This feedback loop was vital to get to where we are, seeing people want to push the boundaries of Source 2 further and further until we ended up rewriting half the engine from entities into the convenient scene system we all love today.
A huge thank you to everyone in the community who've participated along all the way, and helped define what s&box is today.
Everything we do is to provide opportunities for the next generation of developers, be it with our Play Fund, cosmetic creators, open sourcing, or exporting standalone games royalty-free to Steam.
We're only a couple of weeks away now, we're running out of loose ends to tie up, we're pretty confident now, we know what we're offering and what we're not offering, there's no over promising, we're excited to cross the line and start a new cycle of development, and continue to evolve alongside everyone.
26.04.15
26.04.15
15 April 2026
🎁 Added
Added `UprightJoint`, which constrains objects to remain upright, useful for characters, vehicles, and other physics objects that should resist tipping. Also has a parallel mode when targeting another body.
Added on-demand navmesh tile generation API — new `NavMesh.DeferGeneration`, `NavMesh.RequestTileGeneration`, `NavMesh.RequestTilesGeneration`, `NavMesh.UnloadTile`, and `NavMesh.UnloadTiles` APIs for large open-world games that need to generate and unload navmesh tiles at runtime rather than all at once on load.
Added a search bar to the main menu navbar for quickly finding games and content.
Added "Convert to Mesh" in the mapping editor — converts a placed model to an editable scene mesh, similar to Hammer's workflow.
Added `movie` command support for recording Light Components — light brightness and colour changes are now captured in recordings.
🧼 Improved
Rewrote the UI renderer with a batching system that groups panels into a single draw call where possible, yielding massive performance improvements — up to ~4× faster in benchmarks (40fps → 150fps). Also introduces a new `Panel.Draw.XX` API for custom panels to emit drawing commands directly.
Improved ambient occlusion performance with various shader and sampling optimisations.
Improved hotspot tool in the mapping editor — now uses the active material, supports mirror horizontal/vertical, and adds a per-face apply button.
Improved prefab editor performance when handling large prefabs — faster diffing and reduced initial load times.
Improved serialization accuracy for prefab and scene files — positions, rotations, and transforms no longer silently drift between saves, eliminating unnecessary prefab instance noise and large git diffs. Switched to lossless `G9` float format.
Improved `WildcardMatch` performance by replacing expensive regex with `MatchesSimpleExpression`.
Improved shadow mapper hot path by eliminating array, `IEnumerable`, and LINQ allocations.
Improved `SetObjectBounds` with minor overhead reductions.
New s&box installs now default to MSAA 4× anti-aliasing on first launch.
"Make Editable Mesh" in the mapping editor is now undoable.
🪛 Fixed
Fixed a VRAM leak where shadow map textures were never returned to the pool when a `SceneLight` was destroyed — in scenes with many lights this would fill VRAM quickly.
Fixed a transform equality regression where `Rotation.AlmostEqual`'s default threshold was too loose (~1.62°), causing `SetLocalTransform` to silently drop small updates and producing jittery camera movement.
Fixed `Rotation.AlmostEqual` incorrectly returning `false` for two default (zero-length) quaternions.
Fixed cascade shadow exclusion culling overculling objects at the edge of shadow cascade spheres.
Fixed managed textures (prefab-embedded textures) never being present on headless/dedicated servers, which caused missing icons for inventory items, health, ammo, etc.
Fixed `ScenePanel` being completely reset on hotload — panels that manage their own `Scene` now survive hotloads intact.
Fixed the `TextEntry` caret becoming invisible after the move to command lists.
Fixed a ~300ms stutter when first opening the settings panel.
Fixed `MaterialAccessor` retaining stale material overrides after deserializing new data, causing phantom overrides to persist after prefab instance reverts.
Fixed `PolygonMesh` writing world-space properties into JSON, which broke prefab diffing.
Fixed blob IDs regenerating on every save, producing unnecessary git noise.
Fixed light probe regression caused by an incorrect call to a stubbed `RenderDevice->IsUsingGraphics()` on headless servers.
Fixed modeldoc wireframe rendering.
Fixed crash when accessing `MusicPlayer.Title` with an invalid URL.
Fixed assert triggered on `MusicPlayer` disposal.
Fixed null `TargetComponent` crash in the Doo invoke block inspector.
Fixed `SimplePicker` showing cloud assets when searching in the "Local Assets" tab.
Fixed package modal portal layout regression.
Fixed several Linux server path and library casing issues that prevented the dedicated server from starting.
Restored center pivot behaviour in object selection mode.
Hard to think of how much effort you've put into this project. It's been an amazing time watching it grow and change in front of your eyes... But personally the main issue to me now is the lack of good game modes... It would've been nice if you did a pre-release / post-release jam...
Hard to think of how much effort you've put into this project. It's been an amazing time watching it grow and change in front of your eyes...
But personally the main issue to me now is the lack of good game modes... It would've been nice if you did a pre-release / post-release jam...
I literally just started toying with this game again after three years and wanted to understand the actual toolset behind it, what do you mean by not "playing enough"?
Is there a way to retroactively readd developer's access? I have over 124 hours and was looking forward to having a demo ready around release but now I don't have access.
Грустно конечно, что забрали доступ. Обнова офигенная. Хоть я и не наиграл даже сотни часов (вообще почти не отыграл, так как по сути только не давно узнал что оно активно разрабатывается (доступ дали капец как давно, но старый комп кончился, а на новом мне стало не до него)) Буду непременно ждать видосов на тему этого интересного игрового "движка". Больше всего запомнилась игрулька с боксом (хз что за "плэйс" был, щас то доступа уже нету, явно была ранняя демка) и данжнкроулер. В него я бы и отдельно поиграл. Слыша про выпуск игр отдельно от S&box надеюсь что юридические приколы будут улажены и такой классный инструмент будет очень доступен для инди-разрабов. Желаю хорошего выпуска!
But personally the main issue to me now is the lack of good game modes...
Clarify, please.