Split The code is public; the app answers only to the crew.
The renderer owns the frame and nobody counts it: a per-frame draw budget the recording WebGL2 context enforces #196
Sign in to join this conversation.
Split The code is public; the app answers only to the crew.
The README says it outright in Measuring the tick: the simulation is 1% of a 64 Hz tick and "the renderer owns the rest of it". Nothing measures the rest of it.
scripts/cost.tsalarms onworld.update, #120 asks for the HUD's 2D call budget, and the 3D renderer — the thing that actually decides whether a laptop holds 60 fps — has no ceiling anywhere in the suite.The harness is already built:
renderer.test.tsdrivescreateRendereragainst a recording WebGL2 context (recorder()) and itsframe()helper already countsdrawElements/drawArraysper frame to prove relative claims ("one fewer body when you are the one being drawn"). What is missing is an absolute number for a stated worst case, written down and asserted, so that a change that doubles the draw calls fails the check instead of arriving in production as a stutter on somebody's laptop.Done looks like
drawElements+drawArrays),useProgram, buffer uploads (bufferData/bufferSubData) and uniform sets — each ceiling a named constant with today's measured number in a comment beside it, set with the same "regression alarm, not a target" headroomscripts/cost.test.tsuses.Files
src/client/renderer.test.ts(or a newsrc/client/draws.ts+ test if the counting is worth its own concept),README.md.Risks
createWorld+ the renderer'sdraw) — if a state needs poking at internals to reach, it is the wrong worst case.renderer.tsis 855 lines and #110's flashbang will add a pass to it; the budget must be a number a new pass can raise on purpose, with the raise visible in a diff.Suggested: scout.