Previously, the Navmesh was always generated from scratch on scene load, this could be slow especially on larger maps.
We added the ability to bake the navmesh to disk. Scenes with baked navmesh data will load significantly faster.
Memory Optimizations

We drastically reduced navmesh memory usage by packing & compressing the cached navmesh data. This means much larger scenes can now generate successfully.
For example, a very large map (~4km x 4km) now generates fine, before it would just run out of memory and crash.

Polymesh Generation Optimizations

Navmesh generation has two steps: heightfield generation, then polymesh generation.
We optimized the second step, polymesh generation, which directly translates into faster navmesh loads from baked data.

Fixes

  • Fixed a race condition that would cause an infinite stall when loading navmesh in the editor
  • Fixed CalculatePath giving up early on complex paths
Using RenderDoc captures to check timings is painful. Source 2 has an awesome backend to measure GPU timings with Timestamp Manager, but it was buried deep in the engine.

I integrated it to work with our stuff and our command lists API design.


Can very simply just toggle it from the game.

Now you can see what's killing your performance at a glance, makes it much easier to actually tackle the problem.

We've cleaned up our VR code internally again, and fixed a bunch of things in the process:
  • Fixed some of our VR components:
    • VR hand stuff is now correctly transformed using anchor-relative space
    • Our VR components now correctly check IsProxy so they run properly when networked
  • Fixed the VR projection matrix being broken whenever z-near for a camera isn't set to 1
  • Removed the unused VR stats editor widget
  • Added the ability to use both aim and grip poses for VR controllers
  • OpenXR compositor instances are now created / destroyed for individual game instances - rather than being shared. This mainly helps to improve compatibility with different OpenXR runtimes inside the editor, namely the Meta OpenXR runtime.
We'll still be iterating on our VR feature set heavily over time, which should be a lot easier with a cleaner codebase for this stuff.
Slowly iterating on Indirect Light Volumes to start to feel awesome, still a long way to go to deal with all edge cases but I have a clear roadmap.

Probes are generated starting from your eyes' view and do two passes for more accurate bounces and quicker iteration.

Editor UX with them is overall better specially across sessions.

TheRedPixel ( https://x.com/theredpix ) kindly contributed with a PR reviewing some things and I iterated on it, helps to better adjust backfacing probes without needing manual adjustment.
New cool foliage stuff was using clip(); and discard; directly instead of adjusting for Alpha to Coverage, this makes MSAA cry.



All sorted now, has A2C and doesn't turn translucent at distance.


Orthographic View didn't support our fancy glass properly, now it does.

We now support Vertex Snapping in the mapping tools, Enabling it allows you to snap you selection to a Vertex.

Also you can now snap any of your selection to the grid.
We fixed a crash that occurred when joining multiple games in succession.

Source 2 only supported up to 64 resource types, joining multiple games exceeded that limit and caused a crash. 
We've removed the limit, so you're now much more likely to play more than two games in succession without crashing.
We have Lasso selection in the mapping tools, allowing for more precise selections.
Box select also got some more love, allowing you to add and remove selection, as well support the select through geometry option.
Quad Overdraw debug vis broke at some point when we dealt with changes on stencil buffers, that was an oversight, fixed now.

Update 26.02.04
26.02.04
4 February 2026
🎁 Added
  • Mapping snapping
  • Mapping: flip mesh
  • Mapping: box select & lasso selection
  • LengthOverride property @ubre
  • GPU Profiler overlay
  • TreeView extras
  • Navmesh baking
🧼 Improved
  • Navmesh memory optimizations: improved by at least 5 times
  • Hi-res screenshots use global anti-aliasing setting
  • Mapping Tool "Save As Model" uses the model origin & supports more collision types
  • Swapchain creation now uses SDL to handle surface creation, try to be more sane about format
  • Swapchain depth format is simplified as always being D32FS8, with additional required flags
  • DDGI uses RG1616F instead of BC6H because block compression caused too many artifacts
  • Navmesh polygon mesh generation is 20-30% faster
  • DDGI gizmo probes load relocation positions from relocation texture
  • Use native C implementation for LZ4 managed compression API, used by networking
  • Error handling for nested prefabs when a prefab is missing
  • Foliage uses alpha to coverage for MSAA
  • Steam callbacks run in network thread to prevent disconnects whilst main thread is busy (loading resources)
  • Indirect light volumes use two passes bounce by default for higher quality
  • Keep MainThread responsive when loading navmesh in editor
  • Big VR cleanup
  • DDGI: Stability improvement for ComputeVisibility @RedPixel
  • Logs now archive when old or go over 512MB @766974616c79
🪛 Fixed
  • Crash: CLoadingResource::FinalizeLoadRequest with cyclical dependencies
  • Crash: ResourceType overflow (too many GameResources) causing a buffer overrun and resource system corruption
  • PlayerController animation events not reenabling when component is reenabled
  • Navmesh CalculatePath giving up early on complex paths
  • Not being able to frame to objects while in ejected viewport
  • Nudge direction being inverted
  • Auto-closing restore scene tabs on startup
  • Terrain buffer leaking if disabled or deleted
  • Terrain buffer reading has a HasTerrain check now
  • Memory usage is measured with WorkingSet instead of PrivateMemorySize
  • Vulkan robustness correctly uses pipeline robustness alongside now
  • Null GPU buffer descriptors are now "bound" correctly with VK_WHOLE_SIZE range
  • Error shader had mismatched descriptor set layouts between the vertex and pixel shader, potential GPU crash
  • Editor swapchains matching screen resolution forcing exclusive fullscreen on Nvidia
  • Titlebar switching back to fallback thumbnail after publshing
  • Screen recording failing with ScenePanels
  • MovieMaker: Session nav widgets not always being visible
  • MovieMaker: Additive keyframe editing when source block starts at T=0
  • MovieMaker: Timeline vibrating when trying to pan too far left
  • MovieMaker: When dragging in timeline, scrub if we drag off the edge
  • Indirect light volumes copy depth to color using compute, a Graphics.CopyTexture was not suitable because of different image formats
  • CookieContainer not auto saving properly
  • Renaming assets causing duplicate AssetListEntry selection
  • GameObjectSystems not serializing on global systems, and deserialization failing for non-trivial types
  • Glass shader not supporting orthographic projection properly for refaction
  • StickyPopup height being awful
  • Quad overdraw not working
  • Occasional double context menu on searchable menus
  • CodeGen compiler warnings related to [Sync] when using nullable @Remscar
trophy 1515
Apr 2021 126 posts
Update 26.02.04 : news/update-26-02-04
trophy 1370
Jan 2024 40 posts
yay!
trophy 1105
Aug 2022 105 posts
DEVELOPERS DEVELOPERS DEVELOPERS DEVELOPERS
trophy 1385
Feb 2024 41 posts
awesomesauce
trophy 1833
Sep 2021 163 posts
you've done a lot of optimization, fixed VR, and finally baked the navmesh. Now we can make Nextbot NPC games every day!
trophy 300
Sep 2021 6 posts
Good job! I'd love to see some wind effects (to make the vegetation more realistic), and also a better water shader
trophy 75
Oct 2025 1 post
Q1 release will be a total disaster. If you dont want to fuck it up, release the platform this summer.
trophy 1315
Jul 2022 28 posts
Peak update
people
Log in to reply
You can't reply if you're not logged in. That would be crazy.