But I haven't gotten that far yet to show any code.
The problem with my code is that I will push to the array:
"For Each Instance Order By Instance.Zindex ascending"
so that when it put them all back, they would be in the correct Zorder.
You would have to sort by X maybe, or make an instance variable labeling which column they belong to, and you could draw that column offscreen as your character approaches.
--I have a game that checks the FPS every couple seconds, and if it's below 25 twice in a row, it starts "destroying" extra scenery.
Edit: to clarify the column idea, your character is touching a block that's instance variable says it is in column 5. So if column 2 and column 7 aren't drawn, draw them. (if headed right, column 2 would have been drawn already, and column 8 would get drawn.)
Then you would also destroy any Column 1 and column 9 instances.