Sandbox Logo
31 July 2022

July 2022

Collision rework, tools, editor and more tools.
A pain point for developers is that it takes too long to get your game started after launching the game. It shouldn't be taking 7 clicks in the main menu to start your game or load your map up.
So I took a week to make that easier. We've now got a launcher widget in the editor which lets you pick your game from a dropdown and hit play.
We also added an editor for them. You can create your own configs, local or remote, and set up commands to run before and after the game starts.
The old collision system was the same as GMod, the COLLISION_GROUP_BLAH stuff. Except it had a new system on top, where you'd define layers and then define what layers your physics objects interacted as, and what layers they interacted with and what they didn't interact with.

It hurt my brain. I couldn't get a decent picture of it in my head. So I threw it all away. Which was a lot of work, because this collision system is 20 years old and touches everything.

So now we have collision tags. You can apply any number of tags to entities and brushes in Hammer, and then define how they collide using this nice per-project UI.
I probably don't need to explain how it works, because all that help should be enough for you.

This was a huge relief to get complete. It feels good to use and I understand what's going on.
Source had a bunch of MOVETYPE_ things. We don't use any of these move modes anymore. Objects are either keyframe (controlled by code) or dynamic (controlled by physics). So I got to carefully extract this whole system.
We're doing a lot of cleaning around the physics system right now. Trying to stuff it back in its interface. The end goal is to be able to replace Rubikon in the future.

The issue with being all in on Rubikon, for us, is that although it works for us right now.. it's kind of a dead end. We can't expect Valve to keep handing us updates forever and it's not a project that I feel we'd want to take ownership of. If there's problems I'm sure they'd be more than willing to help - but why bother with all that when we can slap Jolt or something in there and be self sufficient?

This isn't something we're rushing to do, rubikon is doing a fine job, but just letting you know the plans.
I rewrote the ListView control. I couldn't help myself. The new one is a bunch simpler to use from C#, renders faster.. and we have smooth scrolling(!)

The changes to the collision system showed the need for project settings dialog. This is for editing setting per addon. It's allowed us to expand configurable settings a bit.
I did something cool with the addon settings. If you're hosting a listen server of your game and change settings here, they'll be synced to the clients and update there too. This is really useful since you don't have to restart when tweaking collision rules etc.
Because I'm a UI sadist, I recoded the Qt TreeView in c# too. This ended up with similar benefits to the ListView update. Smooth scrolling !!

A few game options were removed a while back when we transitioned to having them all in tools. I've re-added a couple of these this month.


control modes

You can update these in your game's project settings.
I renamed s&works (our version of Steamworks) to I didn't love the trend with everything starting with s& and the confusion with the similarity to s&box. We needed a name that you're going to remember - and this is it.

I didn't want to take on any big jobs this week since I'm going on holiday next week and didn't want to leave anything half done, so I spent a few days improving the way the site works.
You can sign into it now even if you don't have a game. We can more easily grant and revoke access to the game. I added the ability for us to turn off and the backend api if we're doing maintenance or if something has gone terribly wrong.

We're periodically giving access here. There's no queue, it's whoever clicks the button first. I toyed with the idea of making something fun for people to do while waiting for access, but I think I would just be finding different ways to torment you all.
We've been getting a lot of crashes, but not a lot of crash reports. So I ripped the old crash report stuff out and replaced it with something a bit simpler.

So now we have crash reporting with release and commit tracking, it should set us up for the future. We'll be able to tell at which commit the crash appeared which will make things easier to investigate.
The main crash we're seeing right now is in the NVIDIA gpu driver. We suspect one of our shaders is fucking us. We are investigating.
Another varied month of asset creation for construct. Highlights include a telegraph pole (that was a struggle to fit in to a screenshot) and electrical wiring assets. These should tie in well with the new CCTV Globe.

A street advertising board should also be useful well beyond just construct. It includes a number of skins, but adding your own is as simple as swapping the colour texture out for a new one. There are preset up prefabs for a number of these assets to make them quicker to setup and use in hammer.
All the compilation errors were getting spit out in the console before, people weren't seeing them so I've made a widget that collects them all, double-clicking them will open your code editor right to the error.
Visual Studio is great for C# but it is a barrier to entry for getting started in s&box

So I've made it possible to select alternative code editors now, these are used when opening project files, errors, or stack traces.
With VSCode it'll set up all the required OmniSharp shit for you.
And Rider is there for you nerds too.

This is all done at our editor addon layer, so if you want to implement your own obscure editors it's incredibly easy to make your own editor addon for it.
Something that surprises some people is that your addons can be anywhere, they're not just limited to your Steam game folder.
I've set a default addon location now for newly created addons.
If you hate it, you can always change it in Editor Preferences.
I've done a lot of changes to Hammer this month to make the default layout less overwhelming and to make better use of the space.

A lot of these changes are based off community feedback and how the majority of you were commonly using Hammer and what was annoying you.

I've docked the asset browser to the window and added a command on [Alt + A] to toggle it on/off.  I've also resized the icons and deleted shit that just ate space.

The rest is a lot of minor changes: removed the chunky toolbar from the map view, moved the viewport options to an overlayed button, condensed the outliner widget, collapsible group boxes, default to single pane instead of three.

I've probably missed a few, it's just lots of minor changes that all add up.

The sound picker in Hammer was really shit, it didn't pick up any sounds from addons and everything was duplicated.

So I've made it so our native tools like Hammer can easily use our asset picker.
I made it so our native tools can use our C# asset picker easily.
Holy shit are we getting it done!

Now the hard foundational work for the editor is done, we're really flying. It's so easy to create new editor windows, tools, utilities now.

We're still very much in a period of trying to get stability and performance where we want it to be, but we are ready to be letting more people try it all out. There's things to think about around that.. documentation, localization, help, usability, feedback collection, ugc moderation + ratings + stats + discovery + categorization. I think we can drip new users into the game though - just to keep things fresh and provide new testers.

I did a prune of 2,500 old testers. People who hadn't started in for other 6 months. I think that's fair enough, and it's something we can do regularly. I actually think this was caused by the old queue system. People got access but had no idea they because they'd tried 2 months prior and there's no kind of notification. That's why the new button mashing system is preferred.

I'm on holiday for 2 weeks now.. so I'm going to be doing a lot of thinking about what we should be prioritising what we need to do to get closer to some kind of actual release. See you next month ❤️