__Surgeon___ - Oh yeah that's probably the best way to do it, thanks! I'll probably update the surface every time the player walks 5 tiles to the right/ left and then it loads the next 5 tiles and deletes the 5 tiles that are now out of view.

__YanBG__ - Thanks! Ah I see, I probably don't have time to draw hundreds of frames! As for how I did it... I drew each tile out with a script, an array stored the height of each tile and the the corner of the tile's y position will be changed by 25 * corner of tile height, it's surprisingly mathy (for me anyway). I drew each tile with 2 triangles. It's probably better for me to show the actual (unoptimized) code:

/// tile x, tile y

var t_x = argument0;

var t_y = argument1;

if t_x < 1 or t_y < 2

{

return false;

};

if (t_y mod 2 = 1)

{

var t_offset = 0;

}

else

{

var t_offset = 100;

};

var tile_x_real = t_x * 200 + t_offset;

var tile_y_real = t_y * 60;

var t_draw_x1 = tile_x_real - global.main_x;

var t_draw_y1 = tile_y_real - global.main_y - global.D_M_height[t_x,t_y] * 50;

var t_draw_x2 = tile_x_real - global.main_x + 100;

var t_draw_y2 = tile_y_real - global.main_y - global.D_M_height[t_x + 1 - t_y mod 2,t_y - 1] * 50 - 60;

var t_draw_x3 = tile_x_real - global.main_x + 200;

var t_draw_y3 = tile_y_real - global.main_y - global.D_M_height[t_x + 1,t_y] * 50;

var t_draw_x4 = tile_x_real - global.main_x + 100;

var t_draw_y4 = tile_y_real - global.main_y - global.D_M_height[t_x + 1 - t_y mod 2,t_y + 1] * 50 + 60;

var hue = 96

draw_triangle_colour(t_draw_x1,t_draw_y1,t_draw_x2,t_draw_y2,t_draw_x3,t_draw_y3,make_color_hsv(hue, 255, 255 - global.D_M_height[t_x,t_y] * 64),make_color_hsv(hue, 255, 255 - global.D_M_height[t_x + 1 - t_y mod 2,t_y - 1] * 64),make_color_hsv(hue, 255, 255 - global.D_M_height[t_x + 1,t_y] * 64),0);

draw_triangle_colour(t_draw_x1,t_draw_y1,t_draw_x4,t_draw_y4,t_draw_x3,t_draw_y3,make_color_hsv(hue, 255, 255 - global.D_M_height[t_x,t_y] * 64),make_color_hsv(hue, 255, 255 - global.D_M_height[t_x + 1 - t_y mod 2,t_y + 1] * 64),make_color_hsv(hue, 255, 255 - global.D_M_height[t_x + 1,t_y] * 64),0);

draw_set_colour(c_black);

draw_line(t_draw_x1,t_draw_y1,t_draw_x2,t_draw_y2);

draw_line(t_draw_x2,t_draw_y2,t_draw_x3,t_draw_y3);

draw_line(t_draw_x3,t_draw_y3,t_draw_x4,t_draw_y4);

draw_line(t_draw_x4,t_draw_y4,t_draw_x1,t_draw_y1);

(the indents slightly messed up, sorry!)