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,1,limit}];

with

    t = Table[plot[i],{i,1,limit,stepsize}];

You can then play through with

    Manipulate[t[[i]],{i,1,limit,1}];

or export the table directly with

    Export["videofile.avi",t];