<pre>Action Recording in Blender or Blender Replay<br><br><br>What Is This?<br><br>Blender Replay is a system that interactively records and plays user<br>actions. Recordings are stored in files (python scripts or text files)<br>
which can then be played on any computer with Blender installed.  This<br>has become possible with introduction of the operator system in<br>Blender 2.5.<br><br><br>Benefits<br><br>With Blender Replay, learning Blender becomes easier :-)<br>
Users can exchange recordings to learn something new.<br>Interactive unit tests can be made with Replay and Python.<br><br><br>The Approach<br><br>By hooking (unobtrusively) into Blender operator system, Replay will<br>record operators (and correspoding parameter values) invoked by a user<br>
during Blender work session.<br><br>This approach, when compared to &quot;just recording user input&quot;, provides<br>the following advantages:<br><br>- portability: recordings will be cross-platform and UI-independent<br>
- compatibility: as long as operators don&#39;t change names and<br>  parameters, in newer Blender versions old recordings will stay<br>  playable<br>- Replay will not break if a button changes position or any other UI<br>
  element is updated<br>- Replay will allow re-recording actions. You can take someone&#39;s<br>  recording, play it until some point, pause and continue recording<br>  from there.<br><br>To be useful, Replay will also record and apply time intervals between<br>
operator calls and will do smooth transitions for modal operators<br>(like view rotate for example). This also allows to have configurable<br>playback speed (normal, 2x, 4x, etc.).<br><br><br>Limitations<br><br>For Replay to be consistent, the following limitations have to be<br>
applied:<br>- during playback and in &quot;paused&quot; mode prevent user from modifiying<br>  the context. A user will only be able to do so when he &quot;stops&quot;<br>  playback<br><br><br>Issues<br><br>- other ways to edit recordings<br>
- implementation :-)<br><br><br>P.S.<br><br>My Blender coding experience is limited to operator porting so there<br>are problems I may have missed. K-3D&#39;s interactive tutorials and Emacs<br>macros were the source of inspiration. Is this idea viable? feasible?<br>
(Anyone is welcome for suggestions/modifications)<br><br>Arystan (kazanbas on IRC)<br></pre>