This was always the plan, but we've finally open sourced our Sandbox gamemode for you to learn from and take stuff from. You can also make pull requests and report issues in the GitHub repository.
We've moved our documentation source code to GitHub, it was all already in markdown so it wasn't that difficult. This means it's open source, anyone can create or edit documentation with a pull request.
When the GitHub repository is updated the changes are synced to our docs page on this website.This isn't a replacement for us writing documentation ourselves, if anything this makes it easier for us to do it too. But it's also something everyone has been asking to help out with for a while now, and given the quality of open-source contributions to the engine, it just makes sense.
Love it or hate it, people are using AI to code and it's trying to read our documentation. Instead of AI needing to request, crawl and read entire web pages, we've added a couple of things to help it along (and get off our servers):
llms.txt — a file llms look at to understand s&box as well as further links to all documentation pages
docs.md — appending .md to the end of any documentation page now outputs it in raw markdown, no html, no javascript, no styles.
image.png1.99 MBKeeping with our goal to improve our platform's UI before release, we've made improvements to the UI for the games hub.
There's a nice big carousel showing featured games, and we're now using the new game card component, giving us consistency with the new home screen and the new hub.
We still have more improvements to make to the whole menu before and after we release.
I've added Doo to the engine. Doo aims to be a simpler, friendlier version of ActionGraph.. It's got very deliberate constraints and restrictions, it's not designed to build whole games in, or do crazy logic in. It's meant to be a more advanced version of EntityIO.image.png53.45 KBUsage is simple, in a component define it:
[Property] public Doo OnPressed { get; set; }
Then to run it
Run( OnPressed );
// or with arguments
Run( OnPressed, config =>
{
config.SetArgument( "user", presser );
} );
This has been blocking us adding a standard library of components for mapping, so that's gonna be next to really test it out.
Noticed a lot of our frametime on Steam Deck on the main menu comes from the 2nd sunlight shadow cascade.
The only thing missing from our new CSM implementation that didnt carry over was that we never re-renderered what's inside the previous cascade previously, I have dealt with that.
Seeing that we now use a spherical cascade I derived that we can have our shadow far-z be at the edge of the sphere, also making the far plane cull off anything in beyond the sphere bounds.
I added two new NPCs this week. One is a simple combat NPC that tries to shoot and kill you with a gun.sbox.2026.04.04.10.54.08.mp417.23 MBAnother one is the Roller. This one is early days, but it's all physics-based, rolls over and leaps at you.sbox.2026.04.08.14.27.40.mp420.31 MBNPCs kills are in the kill feed now too. Our NPC framework is open sourced as part of us making the gamemode publicly available, so feel free to copy and paste it into your own projects!
We have one emitter now. It has a few effects. We'll add more. We'll also add workshop support in due time so you can add your own.sbox.2026.04.08.20.45.18.mp420.9 MB