Update 26.03.25

A future looking roadmap 🛣️, standalone games license 🪪, morphs + faceposer 🥸, and more!

Public Roadmapby matt

image.png 184.39 KB
We're getting closer to release, so we want to start being more open about what's coming next. We've put together a public roadmap - think of it less as a strict plan and more as a big wishlist of high-level features we're excited to work on.

It's not everything. It's not a promise. It's the stuff we're genuinely pumped about and want you to know is on our radar.

You can upvote items you care about and leave comments - so if something matters to you, let us know.

Standaloneby garry

We signed the new license with Valve this week, allowing us to allow people to export games from s&box's editor and ship them as standalone games on Steam without paying us anything. This has been a bit of a complicated journey, but with a lot of reassurance and compromises, we've got there.

We still have work to do on our end. We need to create a license between Facepunch and the people shipping games, then double and triple check everything is legit, but I wanted to share this progress with the community so they know that Valve did the bizzo.

When it's ready we'll be piloting it with a few select people. The first out the door is likely to be My Summer Cottage.

Network Diagnosticsby devultj

We've added a couple of new commands to help out with diagnosing network traffic this week. By turning on net_diag_record 1, waiting a couple of minutes, then running net_diag_dump, the game will export out a text file showing you all the network traffic over that time.

It'll show you Sync Var traffic, RPCs (in and out), and per-connection traffic. It should help you to diagnose your networking bottlenecks. Quite useful for headless clients where you don't have access to the network overlay.

Mapping: Select All Vertex/Edge/Faceby Layla

Select-all in mapping mode used to select all game objects, that's not what we want, instead it now selects all mesh elements depending on the selection mode.
sbox-dev_y7K0BlYQJQ.mp4 4.6 MB

Morph Crossfade Controlby Layla

The morph API now has control over the blend time between animation driven morphs and game override morphs, allowing you to turn it off completely and switching to your morph override instantly.
sbox-dev_C68Pu49qYz.mp4 1.66 MB

It also blends in and out properly now.
sbox-dev_twlssuUCpa.mp4 1.32 MB


Mesh Trace Allby Layla

In mapping mode when hovering and selecting mesh elements, props would block the selection. To fix this we needed to support getting all hits along the trace when tracing render meshes.
sbox-dev_0wUETa6PoP.mp4 3.93 MB

ModelDoc Cylinder Hitboxby Layla

Someone requested cylinder hitboxes in modeldoc, this is now supported.
sbox-dev_aRbOLMwflc.png 276.64 KB

Sandbox: Face Poserby devultj

We've added the first version of face posing to Sandbox Game this week, fully networked, and supports presets!
sbox-dev_0xnLxFD8y1.mp4 14.59 MB

VideoPlayer Color Improvementsby Lorenz

Previously, our color space conversion wasn't always correct leading to washed out colors, particularly noticeable for blacks and whites which looked grey.
We now properly convert all variants of BT.601 and BT.709.
24_11-22-MediumvioletredKentrosaurus.mp4 726.64 KB
Shoutout to our color space sage Max who already blogged about this topic in 2016: https://blog.maxofs2d.net/post/148346073513/bt601-vs-bt709

Demo Recording Fixesby ziks

566306424-d7e51666-3cfa-40a7-bc93-ee70ad483682.mp4 2.28 MB

Here's a first batch of fixes for the new in-game demo recording feature. Highlights are that we can now record objects changing parent, can capture ragdolls, and have much better support for cloud assets in the movie.

Envmap Fixesby Sam Pavlovic

Cubemap rendering crashed like a fucker and ballooned VRAM, leaking descriptor sets and overflowing transform buffers by rendering too much in one frame.
image.png 6.99 KB

We fixed it, Envmap updates are handled much more sanely now.

On top of that, we added a hint so cameras using envmap probes don’t trigger texture streaming. Since envmaps have to scan the entire map, they were previously forcing the streamer to load everything instead of just what you can actually see.

Mount Prefabsby Carson

Mounts can define Prefabs now!

This means a Mount can create interactive prefabs (like Buttons, Doors, NPCs, ect) from the entity data it has instead of *just* being used as a lifeless model.

Here's how you can use PrefabBuilder in your own Mount:
public class MyPrefabLoader(string baseFile, string outputPath) : ResourceLoader<GameMount>
{
	PrefabFile _prefab;
	
	protected override object Load()
	{	
		var builder = new PrefabBuilder()
			.WithName( outputPath );

		using ( builder.Scope() )
		{
			var go = new GameObject();
			// Add whatever gameobjects/components you want based on the given baseFile
		}
		
		_prefab = builder.Create();
		return _prefab;
	}
	
	protected override void Shutdown()
	{
		PrefabBuilder.Destroy( _prefab );
		_prefab = null;
	}
}

Summaryby matt

There aren't many weeks left until the doors open, so we're heads down making sure everything's ready.

There's always going to be things we could be doing better. At some point you just have to say "this is the release" and do it. So that's what we're doing.

Right now the focus is simple - rounding off as many sharp edges as possible from a player's perspective. How do we make that first experience as good as it can get? What games do we point new players to so they have a great time right away, and want to stick around and explore?