[#388 follow-up] Deterministic cross-backend capture of animated snippets (virtual-clock stepping on web) #393
Labels
No labels
Alpha Release Requirement
Bugfix
Demo Target
Documentation
Major Feature
Minor Feature
priority:tier1-active
priority:tier2-foundation
priority:tier3-future
priority:tier4-deferred
Refactoring & Cleanup
system:animation
system:documentation
system:grid
system:input
system:performance
system:procgen
system:python-binding
system:rendering
system:ui-hierarchy
Tiny Feature
workflow:blocked
workflow:needs-benchmark
workflow:needs-documentation
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Reference
john/McRogueFace#393
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #387. Follow-up spun out of #388 (cross-backend screenshot diff harness).
Context
The #388 harness diffs the snippet corpus web (SDL2/WebGL) vs the desktop-headless oracle. It currently diffs static snippets only. The desktop oracle is captured on a virtual clock (seed 42, fixed step count via
_screenshot.py'sresolve_steps()—MCRF_SHOT_AT→ 0.6×longest-animation → 3 static steps). The web build advances on the browser'srequestAnimationFramewall clock, so a frame mid-animation is not reproducible cross-backend. Per Fail-Early,snippet_diff.pyexplicitly skips any snippet with still-activemcrfpy.animations(reported, never silent) — roughly the ~61.animate()+ timer-driven snippets.Goal
Make animated/timer-driven snippets deterministically capturable on web so they can be diffed too:
Module.pauseMainLoop) after the snippet's scene is set._screenshot.py: seed, then stepmcrfpy.step(0.016)for the same resolved count (honorMCRF_SHOT_AT/ 0.6×longest-animation / static-steps and the per-number OVERRIDES fromtools/generate_snippet_shots.py).mcrfpy.step()is exposed and behaves identically to the headless clock on the web build (it may need wiring through the JS interop surface inEmscriptenStubs.cpp).Acceptance
The ~61 animated snippets diff green (within the AA tolerance) against their oracle, or flag genuine divergences — no snippet excluded solely for being animated.
Depends on #388 (landed).