Controls how the physics engine advances the simulation.
Live: physics thread advances at Options.Timestep on its own. Publishers
stream state, control subscriber writes ctrl. Live / streaming workflows.
Direct: physics thread blocks on a step-request queue fed by UURLabZmqRpcTransport.
RPC writes ctrl, calls mj_step n times, returns observations. Deterministic
RL training where UE owns the integrator.
Puppet: physics thread blocks on a push-state queue fed by UURLabZmqRpcTransport.
RPC writes qpos/qvel, calls mj_forward, returns observations. MJX / Jax-owned
rollouts where the client owns the integrator.
Auto: starts Live, hello RPC promotes to Direct or Puppet on first
client connection, demotes back when client disconnects.