Here's my MD code:
//argument0 = heightmap's ID
//argument1 = the width/height of the heightmap (must be a power of 2)
//argument2 = the initial height-change variable. reccomended to by max height/4
//argument3 = the seed for the heightmap
var iid, width, h, seed, starttime, endtime, rep, i, b, x1, x2, y1, y2;
//define variables
iid=argument0
width=argument1
h=argument2
seed=argument3
//create Array
global.terrains[MD,iid]=ds_grid_create(width,width)
//define start points
ds_grid_set(global.terrains[MD,iid],0,0,128);
ds_grid_set(global.terrains[MD,iid],0,width,128);
ds_grid_set(global.terrains[MD,iid],width,0,128);
ds_grid_set(global.terrains[MD,iid],width,width,128);
//fetch the start time
starttime=current_time
//execute Midpoint Displacement code
for(rep = 2; rep < width; rep *= 2)
{
for(i = 1; i <= rep; i += 1)
{
for(b = 1; b <= rep; b += 1)
{
//get corner points
x1 = (width / rep) * (i-1);
x2 = (width / rep) * i;
y1 = (width / rep) * (b-1);
y2 = (width / rep) * b;
//right side
randomize()
avg = (ds_grid_get(global.terrains[MD,iid],x2,y1) + ds_grid_get(global.terrains[MD,iid],x2,y2)) / 2;
ds_grid_set(global.terrains[MD,iid],x2,(y1 + y2) / 2,avg + random_range(-h,h));
//left side
randomize()
avg = (ds_grid_get(global.terrains[MD,iid],x1,y1) + ds_grid_get(global.terrains[MD,iid],x1,y2)) / 2;
ds_grid_set(global.terrains[MD,iid],x1,(y1 + y2) / 2,avg + random_range(-h,h));
//top
randomize()
avg = (ds_grid_get(global.terrains[MD,iid],x1,y1) + ds_grid_get(global.terrains[MD,iid],x2,y1)) / 2;
ds_grid_set(global.terrains[MD,iid],(x1 + x2) / 2,y1,avg + random_range(-h,h));
//bottom
randomize()
avg = (ds_grid_get(global.terrains[MD,iid],x1,y2) + ds_grid_get(global.terrains[MD,iid],x2,y2)) / 2;
ds_grid_set(global.terrains[MD,iid],(x1 + x2) / 2,y2,avg + random_range(-h,h));
//center
randomize()
avg = (ds_grid_get(global.terrains[MD,iid],x1,y1) + ds_grid_get(global.terrains[MD,iid],x2,y1) + ds_grid_get(global.terrains[MD,iid],x1,y2) + ds_grid_get(global.terrains[MD,iid],x2,y2)) / 4;
ds_grid_set(global.terrains[MD,iid],(x1 + x2) / 2,(y1 + y2) / 2,avg + random_range(-h,h));
}
}
//divide height change variable by 2
h/=2
}
//fetch when code execution time ended
endtime=current_time
//return the time it took to excecute the code
return(endtime-starttime)and Here's the Diamond Square//argument0 = heightmap's ID
//argument1 = the width/height of the heightmap (must be a power of 2)
//argument2 = the initial height-change variable. reccomended to by max height/4
//argument3 = the seed for the heightmap
var iid, width, h, seed, starttime, endtime, rep, i, b, x1, x2, y1, y2;
//define variables
iid=argument0
width=argument1
h=argument2
seed=argument3
//create Array
global.terrains[DS,iid]=ds_grid_create(width,width)
//define start points
ds_grid_set(global.terrains[DS,iid],0,0,128);
ds_grid_set(global.terrains[DS,iid],0,width,128);
ds_grid_set(global.terrains[DS,iid],width,0,128);
ds_grid_set(global.terrains[DS,iid],width,width,128);
//set the random number generator's seed
random_set_seed(seed)
//fetch the start time
starttime=current_time
//execute Midpoint Displacement code
for(rep = 2; rep < width; rep *= 2)
{
for(i = 1; i <= rep; i += 1)
{
for(b = 1; b <= rep; b += 1)
{
//get corner points
randomize()
x1 = (width / rep) * (i-1);
x2 = (width / rep) * i;
y1 = (width / rep) * (b-1);
y2 = (width / rep) * b;
//center
randomize()
avg = (ds_grid_get(global.terrains[DS,iid],x1,y1) + ds_grid_get(global.terrains[DS,iid],x2,y1) + ds_grid_get(global.terrains[DS,iid],x1,y2) + ds_grid_get(global.terrains[DS,iid],x2,y2)) / 4;
ds_grid_set(global.terrains[DS,iid],(x1 + x2) / 2,(y1 + y2) / 2,avg + random_range(-h,h));
//right side
randomize()
avg = (ds_grid_get(global.terrains[DS,iid],x2,y1) + ds_grid_get(global.terrains[DS,iid],x2,y2) + ds_grid_get(global.terrains[DS,iid],(x1 + x2) / 2,(y1 + y2) / 2)) / 3;
ds_grid_set(global.terrains[DS,iid],x2,(y1 + y2) / 2,avg + random_range(-h,h));
//left side
randomize()
avg = (ds_grid_get(global.terrains[DS,iid],x1,y1) + ds_grid_get(global.terrains[DS,iid],x1,y2) + ds_grid_get(global.terrains[DS,iid],(x1 + x2) / 2,(y1 + y2) / 2)) / 3;
ds_grid_set(global.terrains[DS,iid],x1,(y1 + y2) / 2,avg + random_range(-h,h));
//top
randomize()
avg = (ds_grid_get(global.terrains[DS,iid],x1,y1) + ds_grid_get(global.terrains[DS,iid],x2,y1) + ds_grid_get(global.terrains[DS,iid],(x1 + x2) / 2,(y1 + y2) / 2)) / 3;
ds_grid_set(global.terrains[DS,iid],(x1 + x2) / 2,y1,avg + random_range(-h,h));
//bottom
randomize()
avg = (ds_grid_get(global.terrains[DS,iid],x1,y2) + ds_grid_get(global.terrains[DS,iid],x2,y2) + ds_grid_get(global.terrains[DS,iid],(x1 + x2) / 2,(y1 + y2) / 2)) / 3;
ds_grid_set(global.terrains[DS,iid],(x1 + x2) / 2,y2,avg + random_range(-h,h));
}
}
//divide height change variable by 2
h/=2
}
//fetch when code execution time ended
endtime=current_time
//return the time it took to excecute the code
return(endtime-starttime)
Any help is greatly appreciated.Thanks,
~Lethman~



This topic is locked







