sbox-dev_Eqcq1EOeav.png307.6 KBThe editor loading splash got a new modern look, the key change is removing all the noise and showing you only what you need instead.
You can also override the image with a splash_screen.png file in your project folder.
20_09-10-YellowWaterbuffalo.mp42.27 MBAdded a simple onboarding process for first-time users who want to know their way around the editor. This guide can be opened again at any time via the Help menu.
A big complaint in gmod was CurTime() losing precision after 9 hours of server uptime due to it being a single floating point. We have the same problem in s&box with Time.Now being a single float, as the server time increases stuff like gameplay, movement, interpolation and more begin to breakdown from the inaccuracy.Figure_1.png53.45 KBWe've exposed Time.NowDouble, this won't noticeably lose precision until at least 200 days We've moved all internal systems like interpolation to it now.
We are considering making Time.Now a double by default but this would be a breaking change.
When spawning in dupes, we noticed that none of it was replicated properly to other clients. This was because we batched everything -- this makes all references and Compnent methods run in order, so stuff like constraints attach properly. We were spawning them over the network inside the batch, which meant everything was empty.
We've made it so batching also batches network spawns. You can use this with Scene.BatchGroup().
mat_toolvis was broken for a while and could only be used in the editor. We've now moved it from C++ to C#, made it work in-game again as well as added it to the F2 console menu to quickly see and change modes.image.png32.72 KB
We've made it so that you can now set the Launch Mode for your game to Dedicated Server Only. When set to this mode, the game can only be hosted on a Dedicated Server and when players select your game in the menu, it will bring up a list of available servers to join.sbox_Aa75UZO7sT.mp49.1 MB
As projects' code grows in size so do compile times, when we want an editor platform where it's quick to iterate and hotload, these large compile times are not good.image.png40.56 KBWe've made improvements to incremental compile performance, so small changes should now recompile noticeably faster, especially in large projects.
Previously, our processors and codegen ran on the entire codebase every time you recompiled. Now, they only run on what's actually changed. Reusing more between compiles, reducing unnecessary re-parsing, allocations, and other work.
The impact of this can be pretty huge. Big projects where the difference between min/max compiles is greatest will see the most gains. In a pretty large project, compile times dropped from >8s to ~2s in my testing - a 75% reduction.
There's still more to look at with this, but hopefully a good first step. Faster iteration means better games, I prefer those personally.
Package resources were loaded and reloaded multiple times during game load, which made load times longer than necessary.image.png410.29 KBWe cleaned up a lot of that redundant processing. In testing, games that rely heavily on cloud packages loaded up to 20 seconds faster.
If physics objects fall forever they’ll eventually end up out of bounds in the physics engine. There’s now an event for that, so you can decide what to do. Disable them, or like Sandbox does, just delete the prop.image.png12.86 KB
.NET’s garbage collector is really solid compared to Unity's GC, which means we generally have to worry about allocations a lot less. That said, on lower-end systems (slow memory / small CPU-Caches) we noticed that GC can significantly affect performance.
To tackle this, we’ve updated our allocation overlay to show new metrics like stutters, total GC time, and more. 24_22-58-DarkolivegreenMule.png356.31 KB These allocations can come from the engine or even your own games. Let us know if you spot anything that looks like an unnecessary high allocation.
With the new overlay, we found some easy wins and shaved a few MB/s away, and we’re also seeing noticeably fewer total garbage collection runs in our Deathmatch benchmark.
This should already reduce stutters caused by GC a bit, especially on lower-end systems.