Playback and Snapshot Differences¶
Beyond the physics step itself, the two backends differ in how they let you replay a run. This page captures the practical implications.
Playback¶
Backend |
Mechanism |
Best for |
|---|---|---|
MuJoCo |
Physics-state playback path reported by |
Record-mode playback and offline video export |
Motrix |
Native interactive renderer and native video capture reported by |
Interactive playback and record-mode capture |
Both backends resolve training.play_render_mode through
SimBackend.resolve_play_render_plan(...); unsupported modes should fail at
the backend boundary instead of branching in training scripts.
Snapshot¶
MuJoCo currently reports supports_physics_state_playback=True. Motrix reports
native interactive rendering and native video capture instead. Treat these as
different backend capabilities rather than feature parity.
The capability-boundary contract (Backend Capability Contract) requires that neither env code nor algorithm code call snapshot-only paths directly — it must be routed through a capability-aware abstraction. ADR-0002 codifies this.
What to put in your task owner¶
If a task starts to require a playback or snapshot capability, add that need to the backend contract first, then validate it at the env/backend boundary. Do not hide the requirement in a training script branch.