one thing i noticed is that in your render view code, you set render to false and then back to true. this won't functionally do anything, as the only thing between those two states is a script that doesn't utilise the variable.
that's less of an issue though, inside scr_view_player, do you have anything to combat the fact that you have a minimum of approx 270 objects in
just the dirt layer alone? that'll cause some pretty massive performance issues.
at the end of render view code, can you try tacking this on?
GML:
instance_deactivate_object( ob_blk_par );
instance_activate_region( camera_get_view_x(0), camera_get_view_y(0), camera_get_view_width(0), camera_get_view_height(0), true );
this isn't the optimal way to use that code, but it'll probably be a decent start. going off the assumed 270+, that's a hell of a lot of draw events at the very least.
do keep in mind though, you may have to change ob_blk_par in that code to whatever the parent of the blocks is if it's any different, i'm just assuming here.
if it works, great. if it doesn't, not so great.
whether it works or not, i would recommend looking into optimisation techniques sooner rather than later. don't slow yourself down too much with learning about them, but it'll benefit you further down the line.
the main thing to keep in mind is that objects are / can be pretty performance-heavy by default, and the less execution you make your pc do at once, the better.