October Update

People love the half-life style player controller. They love how it moves, they love how it feels. When you ask them what they mean specifically, they won't be able to tell you.

I want a physical player controller. I want it so that when you get hit by a physics object you go flying across the map. I want it so that when something heavy falls on you, you get squished. I want it so that if you attach a rope to a player and the other end to a helicopter, it can lift the player up. I want it so if you attach a rope to a player with a boulder on the back, they can drag the boulder around. I want it so if the player is standing on the roof of a car, it moves with the car.

And I want all this to work just using physics code. No gotchas, nothing you have to work around, just a rigidbody that you can walk around and use ladders and stuff. I want it so you can drag it into the scene and it just works.



So that's what I did. It's big, so I'll make a full technical post about it.
Last month Garry added Scene Maps, which let you publish scenes as if they were maps.
This left Hammer in the cold, as you couldn't add doors, or buttons, or triggers like you can in scene.
So now Hammer can use game objects and components. Not only does this open up interactivity but you also have access to all regular components, such as the new particle system, physics joints, world UI, and more.

Internally this is all just a regular scene inside your map that gets packed in the vpk.
You can also tie meshes to game objects, the door and button here are both interactive map meshes.

There's still a few bits to add such as prefabs and nested parenting, but it's getting there.
You can create ActionGraphs inside hammer to make stuff happen, just like in the scene editor.

We've added a dashboard page. This shows a few common things about you.. like your current achievement status and a feed of your friend's activities. I figured this is better than just showing the about page.



The plan is to hone this information into something useful, and then show it all in game too.
Our current model physics component doesn't allow for easy access to the rigid bodies and joints of each body part. The ragdoll component is a work in progress component that creates rigid body and joint components as child game objects.
Because everything is now a component, a lot more is possible.

User profile page got an update this month. They now show your achievements and gamerscore, as well as a few other stats. There's a link to Steam too.

You can edit the page, so you can add information about yourself, links to your friend's brother's discord etc.


These pages follow your Steam profile settings. If you have a vanity url set on Steam - it'll copy that, and your page will be accessible via that url, if not, it'll use your SteamId. If your steam profile is private, then your s&box profile will copy that setting too.
For our physics player controller we wanted an easy way to make conveyor belts. I figured out that this could be applied per surface, so conveyor belts can be made without any coding required.
Because it's per surface this can allow for curved conveyor belts.

Over the last few weeks I've been working on improvements to what is probably our most-used tool, the asset browser. Every developer at some stage is going to end up using this, so I figured I'd make it as easy to use as possible.

Without going into excessive detail, the main highlights are:
  • Color-coded asset types & better asset displays, so you can see what each asset is at a glance

  • Separate cloud browser - this helps keep a degree of separation necessary to help with workflow and make it obvious as to which assets are cloud, and which are stored locally

  • Fast, progressive search with improved options - so that it's easier to find the things you want

  • An improved list view - we now display things like date modified and asset type

  • And other stuff, like categories for asset types, we show C#/razor files now, and improved thumbnails for materials.
Rolling resistance can now be applied to sphere and capsule collision shapes. This is needed for games that want to control how much a ball can roll on a surface.
For a minigolf game you would want to apply different rolling resistances depending on the surface. A smooth surface would have less reistance than grass for example.

We merged a major refactor to how we do our internal lighting system, it should solve all square artifact issues and increase your framerate in scenes with many lights.

Previously we used a Forward+ approach to light culling by testing shapes against tiles, we changed this to use frustums instead, makes it much simpler and lets us to a lot more with this, and slides perfectly with fog & our GPU driven shadow culling system


You don't need to do anything to enable this, you just get free frames.

The Particle Text Renderer is now included with the engine, which allows you to use text rendering in the particle system.

Continuing with the big visual changes from last month, I've added an optional grid-aligned mode for wires.
Another big feature is you can drag from inputs now, not just outputs. It'll also suggest scene references for components and game objects when you do that.
We've finally got a switch-case node, which works with enums, strings and ints.
Lastly, you can now hover over items in the node menu to see their descriptions, inputs and outputs. It'll use whatever docstring you put on your custom node methods in C#.

The TextRenderer component now uses the new text rendering stuff I added, which means you can add outlines, drop shadows, and change a bunch of fonty stuff.

During the development of the new player controller I realised that the order of the physics events was wrong. Fixed update was happening after the physics step, so any changes made it in were only reflected in the next tick.

So I fixed that, and then it became apparent that sometimes you want to do stuff explicitly after the physics step. So I added IScenePhysicsEvents to solve that.
You can emit particles inside models now. It works with regular models and skinned.

We started fixing up the dedicated server this month. Long story short is that it works. You can start a server, load a game, join it, play with other players. That's our first steps.

The next step for dedicated server is what the kids are calling "private code". What they mean is serverside code. We have plans for this, but it wasn't in scope for this month.
It's common in components to have features that you don't always want enabled. Sometimes you don't even want people to know about them unless they go looking. Here's an example:

public class FeatureTest : Component

{
[Property, Feature( "Body" )]
public float BodySize { get; set; }

[Property, Feature( "Body" )]
public float BodyHeight { get; set; }

[Property, Feature( "Head" )]
public float HeadSize { get; set; }

[Property, Feature( "Head" )]
public float HeadHeight { get; set; }

[Property, FeatureEnabled( "Secret" )]
public bool SecretFeature { get; set; } = false;

[Property, Feature( "Secret" )]
public string SecretText { get; set; } = "Bloxwich";
}

This then creates these tabs at the top. The FeatureEnabled option allows you to add or remove a feature, and the component remembers the state in the bool.

You can now define the Distance and Falloff curve of a sound effect, and we brought back the previous widget that allows you to quickly and easily preview how your sound is heard in 3D space. This should give you a lot more explicit controls over your sounds instead of implicitly deciding some for you.

Our Depth of Field effect sucked and was slow, it's been rewritten and now it's fast enough to run on a nokia and looks great.
Blends perfectly with MSAA, even fine details like hair are preserved nicely.

Feels good when we get a month in which we manage to actually merge stuff in. It feels like we've stopped tripping over our own feet so much and we're getting some real velocity now.

There should be a few things happening over the next month. The standalone/exporting stuff is being finalized, and I would expect some news on that. The steam store page should be up next week. The steam inventory system should go live. We'll switch from net7 to net9. The human model will appear on the avatar screen. The new Sandbox Mode should start making its first appearance.

trophy 720
Apr 2021 138 posts
trophy 775
Jan 2024 35 posts
Nice work!
trophy 655
Aug 2022 36 posts

trophy 120
Oct 2021 15 posts
"When you ask them what they mean specifically, they won't be able to tell you." Yeah that about sums it up.
trophy 0
Jul 2022 3 posts
perfect
trophy 190
Oct 2023 11 posts
Hammer updates and sandbox teaser is really nice
trophy 95
Feb 2024 10 posts
💯💯💯
trophy 270
Sep 2021 54 posts
The best devblog, vibes October 2022. Answers to hot questions: about dedicated, server code, whether Hammer will stay, what will happen with The Sandbox - were given. Good works!

trophy 155
Sep 2022 31 posts
eggcellent work
trophy 1520
May 2023 11 posts
Perfectly! We are waiting for Frank and Adam
trophy 265
Jul 2022 18 posts
Nice work.
trophy 0
Aug 2022 3 posts
very cool update

now all i need to be happy is GPU lightbake for hammer and i will be able to die happy
trophy 285
Jul 2023 19 posts
mink 3 months ago edited 3 months ago
trophy 350
Oct 2021 12 posts
Dr.House
trophy 215
Jul 2022 3 posts
nice

trophy 50
Sep 2022 3 posts
No more sam Squares :(

trophy 325
Feb 2024 9 posts
wild
trophy 15
Mar 2023 5 posts
I love the component features, and really cant wait to do more with the servers.

honestly the way sbox is handling networking and how seamless it is with the engine has been a game changer, unlike unity or other engines where you would have to use a thirdparty plugin like photon or write your own, sbox has it built in as a core feature and is integrated with the component system makes it so seamless to write multiplayer games.

excited to see whats next for networking.
trophy 0
May 2023 3 posts
good job!
trophy 275
Apr 2021 14 posts
An Excellent Blog Post

trophy 0
Oct 2023 4 posts

trophy 245
Mar 2023 15 posts
When will Flotel release on s&box?
trophy 0
Nov 2024 3 posts
Thank you!
trophy 0
Jul 2024 3 posts
Absolutely love all these updates!
people
Log in to reply
You can't reply if you're not logged in. That would be crazy.