It's a hackweek this week at Facepunch - so everyone is scratching their itches and expanding themselves by working on other things. That means this week's patch is a bit lighter than the previous ones.

.NET 10 released this week, we'll be updating staging to use it later today, please give it a go, developers you'll need Visual Studio 2026 or your favourite code editor with .NET SDK 10.
ByteStream is the foundation of our network system, and a few other systems. It's used to basically read and write raw data to byte memory, to send and receive over the network.

I noticed that in a few places we had started using a pooled MemoryStream because ByteStream was apparently too slow. This hurt my feelings because I made ByteStream to be a faster, zero allocation alternative to MemoryStream and BinaryWriter/Reader.

So I spent some time speeding it up. It's now on average 5x to 50x faster than it was.
I added this graph to the public metrics showing what we're allocating most.
You can copy, paste and reset on inline editors now as expected
The CommandList was added a while back, and is used to build up render commands that execute on the render thread. We don't want people running code on the render threads - because it causes all kinds of hurt.

I'd coded this in a lazy way because it was a proof of concept. So it wasn't that optimal. It was allocating a lot.

We are using it more now, and plan to use it a lot more in the future - so I changed how it works internally to be pretty much allocation free.
There was a lot of weirdness happening with the Time variables, causing what felt like stuttering & irresponsiveness.
I fixed time being 1 frame too old in Update() as well as cleaning up FixedUpdate() lerping.
25.11.12
25.11.12
12 November 2025
🎁 Added
  • Scene.AllActive
  • Game.Overlay.Close and Game.OverlayCloseAll
🧼 Improved
  • Optimization: ByteStream optimized much faster
  • Optimization: Switch DeltaSnapshotSystem to use ByteStream
  • Optimization: Reduced interpolation allocations
  • Optimization: Convert CommandList from Action += to struct list (#3325)
  • Box3D updated
  • Input router now uses floats for mouse deltas
  • Editor: Inline widget can copy, paste, reset
  • PlayerController: only scale anim-driven footstep volume by WishVel
  • Don't fire OnEnabled on child components if the GameObject is being destroyed
🪛 Fixed
  • Fixed time in Update being 1 frame old
  • Clean up FixedUpdate lerping, fix weirdness
  • Security: Fix unrestricted TypeLibrary property setting
  • Security: Sealed Bitmap
  • Security: TypeLibrary.MakeGenericType obeys constraints at runtime
  • Buffer Overrun in SpriteSystem
  • Movie Maker: Fix not being able to scrub by dragging on scrub bar
  • CreateGameModal not passing thru selected privacy
  • EnterChair Not Being Exposed
  • Don't flush in SwapChain destructor during shutdown
  • Fix wrong logic in OOBChecks.ThrowIfBoneOutOfBounds
  • Fix divide by zero in MathX.LerpInverse
  • Fix SelectionSystem.OnItemRemoved being called with the wrong object
  • Fix Plane.Equals always returning true
  • Fix BBox.Contains when the box is the same size
  • Fix PanelTransform equals operators
  • Fix string.TrimQuoted could throw on empty strings
  • Fix logic in Spline's CheckPointIndex
  • Fix divide by zero in Spline
  • In Rotation.Pitch - add clamp to prevent NaN
  • Fix incorrect calculation in Vector3.TcbSpline
  • Fix possible divide by zero in MathX.Remap
  • BaseFileSystem.Mount will ignore double mount
  • Fix launcher being in the wrong directory
  • Fix Collection was modified in ExecuteEnabledInSelfAndDescendants
  • Avoid throwing OperationCanceledException when querying servers
  • Protect against NREs in Mixer.ApplyProcessors
  • Fix asserts in ClothingContainer.ApplyAsync - just return if body becomes invalid
  • Fix NRE in NetworkSystem.OnSceneLoaded
  • Fix NRE in GameInstanceDll.CreateGameNetworking
  • Fix NRE in MoveModeLadder.ScanForLadders
  • Fix NRE in MoveModeSwim.UpdateWaterLevel
  • Tweak MenuUI\FrontPage.razor to fail less spectacularly
trophy 1430
Apr 2021 110 posts
Update 25.11.12 : news/update-25-11-12
trophy 1933
Sep 2021 11 posts
first lmao
trophy 1360
Sep 2021 99 posts
it's the good patch 👍
trophy 0
Jul 2024 13 posts
This ByteStream intrigues me. Perhaps at some point Facepunch could consider releasing some of these types of things (useful general purpose managed .NET classes) in nuget packages for .NET usable outside of s&box?
trophy 1290
Apr 2021 345 posts
They are quite specialized, but I'm open to it
trophy 1260
Feb 2024 30 posts
excited to see what hack week projects come up!!
trophy 861
Oct 2021 93 posts
Excited for .NET 10 next week
people
Log in to reply
You can't reply if you're not logged in. That would be crazy.