15 Days Ago
![](https://files.facepunch.com/garry/f549bfc2-2a49-4eb8-a701-3efd7ae046ac.png)
Update Facepunch.ActionGraphs to 1.9.15
* Fix exposed property deserialization regression
Add some conditional [JsonIgnore]s to GameObjectReference
Add warning if we got a reconnect message not from the host
Deserialize GameObjectFlags.Hidden - Fixes saved hidden gameobjects not being restored with hidden flag
Get rid of S_NON_DIRECTIONAL_DIFFUSE_LIGHTING, use g_bNonDirectionalDiffuseLighting attribute instead
Dragging a prefab into an action graph creates a scene.ref node
Fix scene.ref thumbnail for prefab references
More informative / nicer display info for scene ref nodes
https://files.facepunch.com/ziks/2025-01-14/QYoZj9M8T7.png
Add analytic to SceneNetworkSystem.GetSnapshot
Add Application.IsDedicatedServer
Dedicated server performance analytics
Launch sbdb with datacore
Added GraphCompiler.RegisterFunction, allows you to create your own custom ShaderGraph nodes without modifying the base addon.
Resolves Facepunch/sbox-issues#4141
Resolves Facepunch/sbox-issues#4389
Server Console Status Bar (#1770)
Added Cut, Copy and Delete options when Right Clicking node(s). Resolves Facepunch/sbox-issues#4096
https://files.facepunch.com/CarsonKompon/2025/January/14_10-42-DotingLoon.png
Added Paste Node(s) option when right clicking in ShaderGraph (only visible when nodes in your clipboard)
Add Debug -> Log Last Compiled menu option to action graph editor
Update Facepunch.ActionGraphs to 1.9.17
* Fix incorrect pure method call compilation with out parameters
Clicking off from the Color Picker in ShaderGraph will no longer instantly re-open it. Resolves Facepunch/sbox-issues#5897
ShaderGraph will no longer completely error out it can't find a node, and will instead create a "Missing Node" which resolves itself once the node is found. Resolves Facepunch/sbox-issues#5805
https://files.facepunch.com/CarsonKompon/2025/January/14_11-56-FloralwhiteGrackle.png
Don't rebuild the entire ShaderGraph UI when we hotload.
Fix dedicated server on older terminals
Some float skyboxes have negative color, don't sample negative values when doing GGX filtering
https://files.facepunch.com/sampavlovic/1b1411b1/mspaint_YDO07zEdFf.png
Add 'jump to code' asset inspector toolbar shortcut for custom resource types
Swap dead wiki page link for docs url
Use [IconName] for PrefabFile.MenuIcon
Custom resource types will inherit custom editors of base types if they've not got one
Can drag/drop files and folders onto path widget segments to copy/move there
Add VertexLayout attributes to SimpleVertex
Add Graphics.ResourceBarrierTransition that takes a before and after resource state, src and dst do actually matter
Use proper grid-based background in all GraphViews by default (instead of just ActionGraph)
Add option to toggle Grid-Aligned Wires in ShaderGraph
Added OnPaint method to OneMinus ShaderNode for indicating node at a glance
Added Icons to a few of the Binary nodes in ShaderGraph. Don't display icon in header since it's already drawn on the node itself.
Added Icons to all the Texture, Transform, Noise, and Channel nodes in ShaderGraph
Added OnPaint overrides to a few more common ShaderNodes so they are easier to read/understand
https://files.facepunch.com/CarsonKompon/2025/January/14_15-12-ImmediateMartin.png
Add Icons to the last of the ShaderNodes that have fitting icons
Added [IconName] to EditorActionGraph.Icon
Hide EditorActionGraph.CanModifyParameters
Unbreak asset inspectors for some resource types, resolves Facepunch/sbox-issues#7382
Make the Step property affect the sliders within ShaderGraph. Resolves Facepunch/sbox-issues#3852
Get rid of string allocations in ComponentReference.Resolve()
Graphics.ResourceBarrierTransition for non generic GpuBuffer
Add Graphics.Draw that takes vertex and index gpu buffers
Don't clamp Collider.Friction
Add PlayerController.BrakePower
- Player will stop instantly when direction input
- Player will reach max walk/run/duck speeds
- Player will slow down quickly when switching from run to walk etc
Compiler: copy references from CodeArchive
Was causing assemblies to be loaded in the wrong order when joining a server, so old versions of assemblies would be referenced.
Fixes Facepunch/sbox-issues#7317
Add test for Compiler.CopyReferencesFromArchive
Facepunch/sbox-issues#7317
Update Facepunch.ActionGraphs to 1.9.18
* Fix switch node regression with mixed async case bodies
Add Collider.IsDynamic
PlayerController doesn't slip down slopes when standing still
Tweak ladder movement code, more grippy, faster
Add PlayerController.UseLookControls and PitchClamp and LookSensitivity
Keep dedicated server alive when reloading a game. Allow managed to decide if a connection should be accepted. Improve auto-retry.
Added net_dump_objects command to print all networked object names to console
Hide a dedicated server from the server list when disconnecting - re-enable it when a lobby is created again
Up TEXTURE_COMPILER_VERSION_MIP_GGXCUBEMAPBLUR version ( Negative cubemap color check )
No need to log that we can't find sound event if we're headless - we won't be playing any sounds anyway
Remove DebugOverlay.Sphere in PlayerController
Add OnParticleDestroyed to ParticleController
Fix network thread choking itself out if no network system
Unconnected ShaderGraph inputs with a default value will now draw the default directly on the plug. Can specify default properties with BaseNode.InputDefault.
https://files.facepunch.com/CarsonKompon/2025/January/15_12-07-TrustingSeaslug.png
More ShaderNode improvements
- Exposed InputDefault to all nodes that needed it
- Fixed icon drawing on a few Binary nodes
- Added color pickers to Blend node
- Can now specify certain default values without a connecting node for Remap, Lerp, Apply TRS and Smooth Step nodes
- Fix incorrect input types on a few nodes
Don't try to play voice on dedicated server
Add player count to DedicatedStatus
Add extra info to snapshot analytic
Rename SceneNetworkSystem.LoadScene to LoadSceneBroadcast
Remove Nav_WaitBuild, make it a LoadingTask instead - there's no reason this should be special
Fix fov in settings not working
Print in console when client connects/disconnects
When running commands from command line, enclose args in quotes so they aren't split again by spaces internally (Fixes Facepunch/sbox-issues#7388)
Material.FromShader uses path and not just name - allows shaders of same name in different folders
Delta snapshot improvements. Fixed a bug where it was possible for a snapshot ack to be ignored - should fix a rare and difficult to reproduce bug where sync vars can become stuck
Fix failing to start game if VRSystem returns nullptr for extensions
Improve CommandLine parser. Added CommandLineTest.
Some backwards compat
Update test
Additional cmd line fix and extra test
TrimQuoted...
Do the same when setting var
VR: More stuttering-related fixes, don't alloc joint data every frame
VR: Improved main menu scene
VR: Only create debug callback if `-vrdebug` is specified as a launch parameter
When loading ShaderGraphs and a connected property cannot be found, check for [Alias] attributes. This will resolve issues where loading old ShaderGraphs would look for old variable names. Facepunch/sbox-issues#5822
Added [Alias] to Combine node since its output was renamed at some point
Add Context Menu to Asset Browser Path Segments. Resolves Facepunch/sbox-issues#7391
https://files.facepunch.com/CarsonKompon/2025/January/16_10-33-GreedyQuahog.png
Fix Asset Browser Forward Button enabling/disabling based on the Back Button instead of itself.
Fixed connecting/connect rejection messages not using correct Name/SteamId
Disable PathWidget "Copy Relative Path" if the path is not within the Project's Assets folder, just like files/assets.
Humans: improved Run_N_m
When publishing an asset with IncludeSourceFiles, seek the asset and its dependencies for input dependencies (should include animgraph animations, texture source files)
Fixed p2p lobby clients not being able to connect to lobbies
LobbyConfig.HideInServerList would let you hide a lobby from appearing in any server lists in s&box but still queryable with QueryLobbies
Fix IsHidden support
Filter in the query
HideInServerList -> Hidden
User perms config
Allow Json comments
Add default users.json file and change structure of config
Don't ignore game/config/users.json because we want to keep the default with comments
Return true in Connection.HasPermission if the connection is the host. We'll check user permissions from the config file for connections to a dedicated server.
Remove some test logs and make HasPermission available
Automatically hotload user permissions if users.json is edited while the server is running - can change or add permissions without restarting the server
Rebuild content
Rebuild shaders
Don't reset the menu environment when you quit a game, so you're on the same page
Allow TryJoinLobby to be called only once at a time
Disable play button when joining a game, so we can't keep pressing it
Fix disconnect message showing "Unknown Player"
Editor: Launch dedicated server option (we probably want some way to join it from editor?)
Don't "step down" when on a dynamic physics object (let physics work)
Stomp z velocity when stepping down
Stomp z velocity when stepping up
Amend MoveMode.IsStandableSurace typo, though I can't Obsolete the old one without an error
Materials store the shader version they were compiled against, added Source( ShaderVersion ) for shaders to query what the current material was compiled against for backwards compatability
Blendable: Use hemi octahedron encoded normals same as complex for better quality, remove a redundant texture lookup per layer, remove the 5th unused blend layer because wtf
https://files.facepunch.com/matt/1b1811b1/mspaint_qIv6MYpn8Y.png
Don't try to auto-switch hosts if LobbyConfig.DestroyWhenHostLeaves is true. If that's true, we should only ever have the same host..
Delete ResourceConverterFactory, ResourceJsonConvert
safe to pick to main
Add TypeLibrary.Current
Add TypeLibrary.Current
Remove hacky Scene.IsWaitingForLoad
Give NavMesh a proper place to generate during loading (after everything is loaded)
KeyValuesToJson
Add Material.Shader
Add TypeLibrary.CreateProperty, Obsolete SerializedProperty.Create
TypeLibrary.CreateProperty takes attributes - allowing further customization
Make ParseToJsonObject public
Add Asset.SetInMemoryReplacement, ClearInMemoryReplacement
Pass on description, title, source info to property
Widget.Parent checks for valid
Fix warnings
Scene loading only happens once
Revert "Widget.Parent checks for valid"
This reverts commit 0da86010868490ff4bbe0b0cb524e5a5fcbb0bf7.
Run pending component starts at the end of loading, before host joins game
Fix crash in unit test when creating SoundStream
Push time scope when calling pending starts
Humans/animgraph: added Sprint_N (+ temp derived NE/NW)
Humans: small tweak to Sprint_N + export the copy of the graph assigned to Humans
Refactor GameObject serialization tests a little
A couple of object cloning edge case tests
CloneActionGraphProperty test
Add CloneActionGraphSceneReference test
Possible fix for fragile tests
Restore old TypeLibrary at end of SerializeTest
Move VR scene switcher logic into OnStart
Add support for custom specialised asset pickers per-resource type via AssetPickerAttribute
Add SimplePicker, use for shaders until we get something better so that's not awful to use
https://files.facepunch.com/solw/2025/January/20_13-12-GentlePinkriverdolphin.png
Fixed a bug where calling GameObject.GetPrefab could network spawn game objects. Never network spawn game objects if its scene is a PrefabScene.
Merge branch 'master' of sbox
New Clothing - Headphones
https://files.facepunch.com/daniel/1b2011b1/0OyFzoEgI6.png
LODs and Human aswell
CommandList.GetRenderTarget with SizeFactor, don't allocate DepthTexture for it since it's not being used anywhere yet
Overlay is considered a game layer since it draws to color, fixes depth prepass for overlays, remove overlay prepass from renderpipeline_standard
Optimze Pixmap.FromTexture (don't swizzle the format 3 times)
4096x4096 339ms -> 115ms
2048x2048 90ms -> 50ms
1024x1024 20ms -> 10ms
Bottleneck is going to be the data read from GPU -> CPU, not much else to do
Fixed an issue where FromHost sync vars could get stomped. Optimized delta snapshot updates - we no longer need to even try to process networked objects we don't own. Fixes Facepunch/sbox-issues#7261
Security check in snapshot processing - don't process snapshots we receive for an object if the source connection doesn't own it and isn't the host
Force add compiled VR menu scene
Stop "Create Sound Event" pranking people by opening to the wrong directory, resolves Facepunch/sbox-issues#7421
Move VRSceneSwitcher + add warning and move back to OnAwake, recompile main menu
In VR, menu defaults to having VR tag enabled
Added SoundscapeTrigger.Volume so you can control the volume of a Soundscape from the component
Added more property/enum docs to SoundscapeTrigger and gave TriggerType entries [Icon]
Vulkan 1.2 is minimum requirement, device support remains the same. We already required several extensions that are core in 1.2 such as descriptor indexing
Shaders compiler uses scalar layout instead of std140/std430 layout (VK_EXT_scalar_block_layout is core in 1.2)
This is a much less confusing layout for structures in HLSL, allowing for
tighter packing and generally matching their C++/C# counter parts.
e.g:
```hlsl
struct T {
float a_float;
float3 b_float3;
}
```
The size of struct T was previously 32 bytes with GL layout and is now 16 bytes.
The offset of b_float3 was previously 16 bytes and is now 4 bytes with scalar layout.
More info on rules (previously GL, new Scalar)
microsoft/DirectXShaderCompiler/blob/main/docs/SPIR-V.rst#memory-layout-rules
https://maraneshi.github.io/HLSL-ConstantBufferLayoutVisualizer/
Reduce JSON usage in GameObject.Clone (#1781)
We no longer converts the complete GameObject to and from JSON for cloning.
JSON is only used as a last resort for complex properties we cannot clone directly.
Should result in 1.5 to 3 times faster clones (depends on object size).
Catch null typedescriptor when cloning
Build shaders
Revert "Catch null typedescriptor when cloning"
This reverts commit 04c9f070c908428fd86eea9cbe8355e15aa069c5.
Revert "Reduce JSON usage in GameObject.Clone (#1781)"
This reverts commit 3975bc70bb23755766f1767725aab376864a5260.
Enable vulkan 1.2 features (scalarBlockLayout, bda, descriptor indexing, etc.) instead of using all the extensions
don't require everyone to have a raytracing capable gpu (:
Don't try to use shaderFloat16 either since this is only avaliable on gtx1660+
Add clone tests to master
Improvements to how delta snapshots are stored. Make sure we apply all snapshots so long as the last processed value for an entry has an older snapshot id.
When dragging multiple GameObjects onto a ListControlWidget of Components, get the first component from each GameObject similarly to if we were to drag them each individually.
FloatControlWidget keeps the drag delta intact, fixes janky drag on int controls
Fixed Cloud Browser @installed tag not being filterable by query
Removed unused from InputContext
Added net_fakepacketloss ConVar for testing (0-100%). Fixed an issue where if a delta snapshot was received before an object was created on the client-side, it would remember the state wrongly. Fixed an issue with Network Refresh messages where, if arriving late, could overwrite Sync Vars with the wrong values
Protocol++
Fix minor error
Add test for cloning prefabs that contain a nested prefab instance which has a variable that references the outer prefabs root
Bindless lightmaps/Lightmap Combo Removal (#1765)
Multiply light cookie rgb by alpha
Compile shaders
Merge branch 'master' into improved-undo-system
thumb_up
1
thumb_down
1