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!)