Skip to content
Patch Notess&box26.06.17

s&box 26.06.17 Patch Notes (17th June 2026)

Mini Motors debuts as the first in a series of small, polished games. Mounts integration hits the main menu, and code archives are gone for good.

Nathan Lees12 min read
s&box Mini Motors arcade racing game with top-down perspective and leaderboards
Share:

Update 26.06.17 lands with Mini Motors, a new top-down arcade racer built in just two weeks by a small team. It's the first in what Facepunch plans as a series of polished, scoped experiences, and the code is open-source, designed partly as a learning resource for developers building in s&box.

The bigger shift here is code security. Last week's backend compilation was just the start; this week, code archives are gone entirely. Your source code no longer gets shipped to clients, which means it stays secret unless you choose to open-source it. That's a win for anyone worried about their work being visible to players or competitors.

Mounts integration is now front-and-center on the main menu, letting you enable or disable content from installed Steam games directly. You can even play workshop maps from mounted games in multiplayer, though other players need to own and install them too. The editor's mounts browser got a search bar and install links, making it easier to grab supported games. Shader documentation also expanded significantly, covering light classes, fog, materials, and a new procedural effects page, all aimed at making shader development less opaque.

Full Patch Notes

Buff Nerf Fix Tweak

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

https://sbox.game/news/update-26-06-17

Mini Motors

We're going to be making a bunch of small scoped, polished, fun games. The first of many is Mini Motors - we've worked on this as a small team of a few people over the last 2 weeks, start to finish.

Mini Motors is a top down arcade racer which includes a bunch of maps, cars, pickups, achievements and leaderboards, where you can compete for the fastest lap times. You can also play against bots!

The objective here is to provide nice polished experiences for players but also to provide a learning resource in many ways to developers: the code is open-source to use as an example, and we've created tutorials based on the game on how to use the stats system, build ghost recordings and replay support.

Removed Code Archives

In previous versions we supplied a code archive with the games. This was kind of like a zip file of the source code for that game. We thought nothing of it, because if you were using Lua in Garry's Mod the code would be right there, and dlls are trivial enough to decompile.

But you guys didn't like that logic, you didn't like that anyone could see your code. So last week we shipped it so we compile your code on our backend and ship a compiled, trusted dll with your games instead. This had the benefit that clients don't need to compile code, so games start faster etc.

This week we removed the code archive completely, so it's never downloaded and never shown to clients. So raw source code should be completely secret now. Unless you choose to open source.

Mounts

We've got a mounts system in s&box that lets you play with content from your installed Steam games. This has been accessible in Sandbox mode for some time, but this week we've integrated it into the platform and stuck it right on the main menu.

You'll now see a Mounted Games list on the main menu and pause screen, where you can enable and disable game mounts. You need to own the game on Steam and have it installed on disk to mount it.

This replaces the old automatic behaviour in Sandbox, so you're in control of what's loaded, as we add support for more and more games.

The mounts API is open for anyone to use.

Get started here

.

Mount Maps

With this new integration, and as mounts can now provide scenes, we've extended the map picker to include mount maps right alongside workshop maps — meaning you can now play on maps from other games, where the mount provides them.

It should work with any games that support workshop maps, and it works in multiplayer too, though other players will also need to own the game and have it installed to join.

This is still early days, and is fairly limited for now, but there's some really cool potential here, and just exploring levels from your favourite games with your mates - exciting stuff.

Mounts Editor Browser

Our mounts editor side panel needed a bit of love, there's now a search bar and shows which mounts are installed or not and takes you to the steam page to install or buy games for supported mounts.

Open Video

Mapping Inset Tool

You can now inset faces in the mapping tools.

Open Video

Mapping Align Down

This feature was already in the scene editor but I've ported it to work with the mapping tools now.

Open Video

Unbox Scene v2

Tidied up the unboxing scene so cards now show item rarities, particles display to hint at the rarity of the items inside, and the scene itself got a bit of a makeover. There's also a custom transition between the scenes!

Open Video

Movie Track List Polish

Movie Maker's track list now features a sub-track search box, and various track creation bugs have been fixed.

Open Video

Publish Wizard: License Page

To help everyone play by the rules, there is now a new page in the Publish Wizard which informs you of the Cloud Assets you are using and whether or not they:

a) Are elligible for the Play Fund

b) Require attribution

c) Have no set license and should be used with caution

d) Are CC0 and can be used freely

Editor: cache built-in project assemblies

We've got a few engine components that we ship as built-in projects, stuff like our UI components, and most of our editor tools. Until now, we'd recompile each of these from scratch every time you opened the editor, even though most people would never change anything here.

Now though, we build once when we need to, and the results are cached and re-used. If you do edit one for whatever reason, we'll recompile that one.

This should speed up editor launch times quite a bit. On my pretty decent machine, this cuts startup times by more than 10 seconds every editor launch.

Collider.ComputePenetration

A feature requested by a user to have a function that computes the penetration normal and distance required for 2 overlapped colliders to resolve penetration.

Open Video

Texture Preview: Mips, Channels, Checkerboard

When working on mounts I would run into texture loading bugs, to debug this it would have been useful to inspect each mip level of a texture, so I added it, along with showing a checkerboard background to see the alpha channel more clearly and a way to see each color channel.

Text renderer billboard mode

Like particles and world panels, the 3d text renderer now also has an option to face the camera.

Open Video

More Shader Documentation

I'm slowly going through our existing shader documentation and expanding all pages where it's possible. This will not be a fast process, but the goal is to keep all articles up to date, and provide information that has not been included there previously, which should make learning shaders a bit easier.

So far, I was able to do the following:

  • Updated the Light class documentation, which includes new information about directional light's shadow path, new types of light contributions, and some other little additions
  • More detailed Fog class
  • Updated the Material struct documentation, added functions that weren't referenced there before. Should be now inline with the current implementation from source code
  • Updated G-Buffer page with an example how you can write normal and roughness/opacity to g-buffer yourself
  • Wrote a big update to Attribute and Variables:Documented a bunch of mip generators that you can use when creating a new Texture2D: Box, PreserveCoverage, AlphaWeighted, and many others. This also comes with some image examplesDocumented BoolAttribute/FloatAttribute/TextureAttribute and some other related things: what's their purpose? When they should be used? Which ones are read by the engine, and when you should use them? These questions should be answered now.Documented OutputFormat, which specifies the image format that will be used in a compiled textureSlightly expanded the texture packing section with a fancy graph and more detailed description how it can be used.
  • Added a new page, Procedural Effects, which goes over an existing collection of procedural noise and pattern functions that you can use from your code. I tried to add a preview image for every function.

There will be more in the future, and eventually I will write a number of beginner-friendly tutorials on s&box shaders, which will be on the Learn page.

GTAO optimization

Our GTAO pass was taking up more time than we wanted so we improved it. fter opening it up in a frame profiler I spotted a couple of things we could do better.

The was the three denoising pass right after the main AO pass.

Those big blue bumps are L2 cache throughput, and we were completely maxing it out by the sheer number of texture fetches those passes did. Every pixel was re-reading depth and normals straight from textures, over and over, including the exact values its neighbours had just read.

By doing some shader magic and a memory optimization called Local Data Share, we were able to reduce those texture fetches and improve memory throughput for those passes. Now each group of pixels loads its little patch into shared memory once, up front, and does all its blurring from there. This Halved the time spent on average on each denoise pass. From 0.12ms -> 0.05ms on average.

We also did various improvements to relieve memory pressure

  • Depth chain went from 32-bit to 16-bit
  • Edge texture went from 16-bit float to 8-bit
  • Fuse depth + normal load
  • Reduce denoise pass from 3 -> 2 on medium and low setting.

Our Plans

We know our player experience isn't what it should be. It isn't meeting expectations. Our developer experience is shining star in s&box - but that's not what 99% of people see, they don't get that far.

So our plans are to keep improving the player experience, then do a sale and promotion. We have a few different goals to improve the player experience.

First of all, we need to do Game Jams again. They need to include the player community more. The jams should be aimed at getting players in game to play and vote just as much as they're aimed at developers. We 100% need to avoid the situation we've seen in previous jams where people reveal their game an hour before the Jam ends.

Secondly, we need to improve the Sandbox game. While we've resisted "subscribing" to addons in favour of cloud based runtime spawnable entities, I think we're coming around to the idea of the two systems co-existing. I need to personally spend more time developing and fleshing out the Sandbox Game.

Then we can do a sale and some promotion. We're going to do that once we're happy with the condition of everything. There's no point doing a Rust crossover and getting a bunch of new players that are going to play it once and be immediately turned off.

We think that aiming to do this around Christmas time will give us plenty of time to tweak and polish everything that needs to be done.

Changelog

🎁 Added

  • Games are mounted in the main menu
  • Maps from mounted games can be played
  • Menu framerate limit option.
  • Editor: Mounts are grouped by installed / not installed, with a search bar
  • Editor: LOD and material group selector in the model preview toolbar
  • Editor: Mip level selector in the texture preview
  • Editor: Inset Tool for mesh editing
  • Text renderer billboard mode.
  • Scale snapping in the editor.
  • Terrain editor trace support.
  • `Collider.ComputePenetration`.
  • Local-space bone following for particles via `ModelEmitter`.
  • Movie recorder support for custom track names.
  • Publish Wizard license warnings.
  • Quake mount support for loose files, not just files inside a pak.
  • Whitelist System.Memory
  • Whitelist System.ReadOnlyMemory
  • Whitelist System.IO.InvalidDataException
  • Whitelist System.Runtime.CompilerServices.Unsafe.SizeOf()
  • Whitelist System.Runtime.CompilerServices.InlineArray (For compiler generated code only)

🧼 Improved

  • GTAO optimization.
  • General shader fixes.
  • IRenderThread components are now stored off for the render threads.
  • Hoisted `sc_reject_all_objects` out of the per-object cull loop.
  • Removed the unused `s_nNumOutstandingDrawLists` counter.
  • Double-checked locking in `CMemoryManagerVulkan::GetCommandBuffer`.
  • Inlined `CConstantBufferVulkan::GetBufferAndOffset`.
  • Texture hardening pass.
  • `CMaterial2::m_hCopySource` is now a strong handle to address the long-standing `SetMaterial` crash.
  • `CommandList` gained locks that should never contend in normal use.
  • Allocation metrics now exclude their own self-noise.
  • Editor now caches built-in project assemblies.
  • Mapping "align down" support.
  • Minor menu fixes and a quick `PackageSelectionModal` refresh.
  • More explicit access control around System.Span / System.ReadOnlySpan
  • Mount snags cleanup.
  • Scene v2 unboxing.

🪛 Fixed

  • Disabled bone objects now use the correct bind pose.
  • Terrain crash when enabling/disabling fixed.
  • `b3Shape_IsOverlappingSensor` was reading the sensor from the wrong argument.
  • Buoyancy fixed for light props.
  • Indirect Light Volume bakes now work on unsaved scenes.
  • Move snap precision fixed.
  • Block placement precision fixed.
  • Dresser now ensures clothing is not null.
  • Local clients fixed with editor assembly caching.
  • TextureGenerator publishing/networking fixes.
  • Movie Maker track creation fixes.
  • Quake palette fallback fixed.
  • Missing nullptr check added in `CTextureVulkan::AssignTextureObject`.
  • `CVfxStaticComboData::Decompress` guarded against corrupt combo sizes.
  • Rebuilt transients after the vtexwriter fix (many falsely claimed mips that don't exist).
  • Don't include the checker pattern when rendering thumbnails.
  • Tracy disabled on Linux for now (static TLS blocks were preventing the server from booting).
Share:

Stay on top of every update — find all the latest patch notes and gaming news at XP Gained. Join our Discord for live patch note alerts and discussion.

Written by

Nathan Lees

Gaming journalist and founder of XP Gained. Covering patch notes, breaking news, and updates across 160+ games.

Related Posts

s&box game engine editor showing terrain and volumetric fog rendering tools
Patch Notes

s&box 26.06.03 Patch Notes (3rd June 2026)

Physical sound simulation, volumetric fog fixes, terrain overhauls, and a new package quality system land in s&box's June 3rd update.

Nathan Lees20 min read
s&box key art
Patch Notes

s&box 26.05.27 Patch Notes (27th May 2026)

s&box's latest update overhauls the audio threading model, doubles spatial audio performance, and brings a runtime mesh morphs API to developers.

Nathan Lees4 min read