tick based recording / playback, still a bug where stages are being progressed via setTimeout but it's looking great