The best (most straightforward) way to do this is to generate a table of figures and export the table instead of the Play[]
function. That way, each plot will be entirely pre-computed. In dynamic blocks, Mathematica only computes as much as it needs to. It will show a lower-quality version while playing, then increase the quality when it's paused. This is further discussed here:
http://reference.wolfram.com/mathematica/tutorial/AdvancedManipulateFunctionality.html
Just swap your
Play[plot[i],{i,0,limit}]
with
Table[plot[i],{i,0,limit,stepsize}]