field-guide / making-it-perform
07/10
07task lane

Making it perform

Triangle census, collider choice, what actually costs you.

26.07.08e
"A frame-budget method for stylized s&box scenes"

Census tris × instances before decimating; prefer BoxCollider over ModelCollider for decorative props.

26.07.08e
"Chunked mesh generation is math-bound, not draw-call-bound"

For a chunked runtime-mesh generator, REGEN (single-threaded generation CPU) is the binding resource, not fps or draw calls. Quartering the chunk count produces zero regen change; the lever is threading the passes.

26.07.08e
"Collider choice that actually costs you"

BoxCollider is cheap and follows WorldScale; Capsule/ModelCollider don't scale with WorldScale and ModelCollider is costly on clutter.

26.07.22
"Editor play mode is hard-capped at 60 fps: cvars won't lift it"

Editor-embedded play mode pins at exactly 60 fps regardless of cvars. The cap is the compositor's vsync on the editor window, not the engine frame sync. Under the cap even the p50 pins to 16.67 ms: read the tail (p99, worst frame, over-budget count), not the median.

26.07.22
"Editor vsync hides physics cost: time the step directly"

Frame fps pins at 60 in the editor regardless of physics load: implement IScenePhysicsEvents.PrePhysicsStep/PostPhysicsStep with a Stopwatch to get the true, vsync-free CPU cost of the solver step.

26.07.22
"FrameStats and PerformanceStats are accessible from game code: no engine benchmark system needed"

Sandbox.Diagnostics.FrameStats and PerformanceStats are whitelist-clean and reachable from game-assembly components: build a relative perf probe without any engine benchmark API. Raw GC.GetAllocatedBytesForCurrentThread/GC.CollectionCount are SB1000-blocked in-editor; use PerformanceStats instead.

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord