Update 26.07.01

Minor patch this week with fixes and optimizations.

Gizmo Optimizationsby Lorenz

Our gizmo performance is, terrible. At certain scene sizes it completely falls apart and turns the editor into a stuttery mess.

This week we've taken the first steps to fix that and optimized the draw performance of Gizmos.

For example, the My Summer Cottage main scene gizmo draw time went from 55ms to 19ms. 
This is a lot better, but still too high, so you can expect some more love for Gizmos in the future.

VSync micro stutter & latencyby Lorenz

We tracked down an issue with VSync and our frame limiter that could cause micro stutter and added input latency.

With VSync enabled, the screen only shows one frame per refresh. So if fps_max is set higher than your refresh rate, the game runs frames faster than it can display them, and they pile up waiting to be displayed.
The result is uneven frame times, some 5ms, some 30ms, which can be perceived as micro stutter even when your average fps looks perfectly healthy.
It also adds input latency, since each finished frame sits waiting a few refreshes before it ever reaches the screen.

To help diagnose frame pacing issues, we also added overlay_fps, an on-screen pacing overlay with a live frametime strip, a distribution histogram, and GPU time. 

Movie Keyframe Splittingby ziks

You can split Movie Maker keyframes into separate blocks in the context menu.
607854457-f2683e1a-f7c6-4883-b35b-1a93f71b7947.mp4 259.54 KB
Keyframes from separate blocks can overlap, letting you do a hard cut between values while still interpolating on either side.
614640027-096ce603-8054-460f-a3bb-2b455241b27e.mp4 6.24 MB

HtmlPanel Stylesby solwllms

We have a HtmlPanel type which renders just a bunch of HTML into our UI, sort of like rich text. We use this on the pause menu and other stuff instead of using an expensive web browser.

These were missing a bunch of styles and looked like shit. Now it all looks like you edit it on the package page.

Networking improvements

Big thanks to community contributor Josh Mobley, whose pull requests fixed a bunch of networking reliability issues.
Lobbies created at startup now behave like async ones, so Networking.IsActive reads correctly right from OnStart instead of lagging a frame behind, and host-authoritative SyncFlags.FromHost properties no longer get quietly stomped by client refresh messages. Also singular snapshots could occasionally arrive stale, which is now sorted.

On top of the correctness fixes, idle players are no longer at risk of being dropped: heartbeats are now sent as reliable packets, so sitting still won't get you kicked for "doing nothing". And if you're the one digging into all this, Josh also cleaned up the Debug Network Calls overlay to make it much clearer what's actually going across the wire.
image.png 2.47 MB



Box3D Publicby matt

We've been using Box3D for the better part of a year now, since it's inception as a fork from Rubikon.
Today it has been announced and is free and open-source on GitHub.
Huge congratulations and thanks to Erin Catto on the release - Box2D has been a cornerstone of game physics for years, and Box3D carries that same pedigree into 3D.