Sandbox Logo
30 July 2021

July 2021

This month we had an influx of new users and content, so had to make room for it. And a bunch of other stuff.
I set up an automated queue for access to the developer queue. It looks at your workshop activity for GMod and HLAlyx and gives you a score. The person with the highest score gets access.

We want to rate limit how quickly people get access. This development process is fun for us right now - and I want to keep it that way. If 10k people get access tomorrow we're going to be swamped with bug reports and feature requests. It's going to quickly turn it into work.

This isn't a perfect way to do it. Everyone has an idea for a better way, which usually leads to them getting access straight away.
Light Cookies is the tasty term used to represent textures that can be used on light projections, people that are familiar with Source 1 commonly remember it as a projected texture.

Source 2 initially only supported a pre-set list of light cookies which are baked in a specific texture and not mutable at runtime, this isn't what we want. So I decided to make a system to handle all of this.

On the frontend you only need to worry about setting which texture you want to be used for your light, using the same Texture API we use for everything else means you can even use images from the web.

Having our own system to manage light cookies allows us to uniformly allow for some interesting effects, you can use a render target in a light cookie to use it in a projector as an instance. One fun curiosity is that even specularity is affected by cookies, so you should have good fidelity no matter what you do.
I have been working on props for construct. I am trying to capture the quintessential British town feel.
 They should help to flesh out construct and make it feel like a lived in space. This month, the focus has mainly been on street furniture.
I added some common controls to the UI system. Things like sliders and checkboxes and colour selection. 

In the video above this is all backed with an "Inspector" panel, which you give an object and it creates the form for you and binds everything automatically. This is inspired by the inspector in Unity.
This month I've also worked on something that had been bothering for a long time, that volumetric lights had a lot of banding since we were not using TAA due to it's ghosting with dynamic objects and moving camera position.

I have rewritten how the reprojection and sampling pattern is done and now volumetrics won't have banding patterns but still be as high quality as possible without any bleeding pattern.

The best thing of all is that this has no noticeable perfomance impact compared to the previous methods and it looks a thousand times better.

We didn't have any settings page. We've been changing the screen size with command line arguments for 8 months. 

So with a new group of people getting access I decided it was probably time we did something about that. We've got a few common options now. Just the essentials really.
Maps were compiling a bunch of shit they didn't need inside them. This was causing map downloads to be 2-3x larger than they needed to be. 

This is now fixed.
The source files for the citizen model now ship with the game! They are kept automatically in sync with what we're doing on our end. While the character and its animations are still a work-in-progress, we hope this will prove to be an useful documented example to look at.

We're getting a bunch of maps and gamemodes so I added some simple searching and categories. Eventually we'll have other filters - like filtering by m+k/gamepad/VR.

The categories are emoji right now. This was just a placeholder thing but it has made them abstract and ambiguous so we might explore this area a bit more.

We had a problem with the reliable channel getting flooded when game code got too big. Like when someone dropped a c# version of doom into it.

This was happening because the packets can only be so big and the reliable channel didn't have any splitting and we're sending the game code via string tables and they're all sent in one big chunk.

Now the reliable data is chunked up if it gets too big. That fixes that.

Grid Dots

As requested by the community, Hammer's 2D views can now render the grid as dots. This is much easier on the eyes when there's a lot of wireframe geometry in the view. Tools > Options > View 2D.

Viewmodel Camera

Just like modeldoc, animgraph preview now has a viewmodel camera.

Modeldoc Dragging

Dragging models around in physics preview was broken in our build but worked in HLA, this is now fixed.
I spent most of my time reshaping the grass area : 
  • Redefining the path visually so we can place some benches that wouldn't be right in the middle of it.
  • Created some ground textures, to replace the one we've been using from Rust so far.
  • Added breakable walls as a boundary (at least a first pass to check that the system work), which in turn shifted a bit the layout as the metric of the boundary was now defined by the size of the breakable prefab
  • Reworked the topology of the grass area in preparation for vertex paint for the blend shader (the lazy solution is to smash the subdivide button but it's not really optimal). 
Then some minor fix and tweak on the main road part.  The first goal being to have all the grounds and floors first before starting building on top of it and adding more details.
One of the reasons we're spending a lot of time thinking about construct is that we're trying to build materials and models for map makers to use on other maps. We're trying to build a baseline of assets that will act like the Half-Life 2 assets did in Garry's Mod, so that people don't have to re-invent the wheel.
Static lights can cast dynamic shadows now, Source 2 in our rendering pipeline previously supported it but it's calculation to evaluate which static light to be shadowed was done on the server and wasn't compatible with our game and outside VR.

I took the time to refactor all of it to be calculated clientside and with better heuristics, now cheap lights will cast shadows on a map, no extra input needed.

This is useful to give extra flair to your environments without adding any additional big cost to your rendering budget.

Right now this is limited to one light shadow at the time besides the sunlight but nothing stops it from working in multiple light sources in the future, may them be spot lights or point light.
I spent a lot of time in the menu system and the backend this month. This felt necessary with all the new content we're seeing, I wanted to start to flesh out the ideas we had around that. We're not totally there yet but we're a lot closer. Also I got married and my wife and my son got Covid. 

We started talking about the idea of putting the game on sale on Steam, but hidden from public view. I don't think we're ready for that quite yet. Even hidden it'd end up with too many people playing it. We're don't have the infrastructure for that yet, but it is something that would be appealing at some point.

With all the UI and backend stuff, I forgot I was making games. I'm looking forward to digging into that this month. Howie has done a ton of game concepts that I think it would be fun to try out. The guys in the VR channel in the discord are getting really hungry so I'm going to feed them too.