二维地形生成algorithm的优化

我正在用二维开放的复杂噪声生成二维地形,但是在生成TileMap中的地形时,我遇到了FPS较低的问题。 我的游戏如何在javascript中生成地形的示例:

function generator(map_size=0, _posWorld=[0, 0], size=[1, 48], seed=0) { var simplex = new SimplexNoise(seed); var x = 0; var y = 0; var pos_modx = 0; var pos_mody = 0; while (x < size[0]) { pos_modx = utilsfunctions.mod(_posWorld[0] + x, map_size); y = 0 while (y < size[1]){ pos_mody = utilsfunctions.mod(_posWorld[1] + y, map_size); // GENERATION NOISE // TEMPERATURE var nx = parseFloat(pos_modx)/map_size - 0.5; var ny = parseFloat(pos_mody)/map_size - 0.5; var v1 = temperature * simplex.noise2D(1 * nx, 1 * ny); var v2 = 0.4 * simplex.noise2D(2 * nx, 2 * ny); var v3 = 0.23 * simplex.noise2D(4 * nx, 2 * ny); var v4 = 0.134 * simplex.noise2D(8 * nx, 8 * ny); var e = v1 + v2 + v3 + v4; // HUMIDITY var unx = parseFloat(pos_modx)/map_size - 0.4; var uny = parseFloat(pos_mody)/map_size - 0.5; var u1 = humidity * simplex.noise2D(1 * unx, 1 * uny); var u2 = 0.6 * simplex.noise2D(2 * unx, 2 * uny); var u3 = 0.7 * simplex.noise2D(4 * unx, 2 * uny); var u4 = 0.073 * simplex.noise2D(8 * unx, 8 * uny); var u5 = 0.09 * simplex.noise2D(16 * unx, 16 * uny); var u6 = 0.03 * simplex.noise2D(32 * unx, 32 * uny); var ue = u1 + u2 + u3 + u4 + u5 + u6; if (pos_modx >= 0 && pos_mody >= 0) && (pos_modx < map_size && pos_mody < map_size) { tile_map.set_cell(_posTileMap.x + x, _posTileMap.y + y, biomes.solos(e, ue)); } y += 1; } x += 1; } 

问题是我正在生成几层地图,一个是地形,一个是浮雕,另一个是树木。 那就是这三个脚本,当然是为了救济,树木也不那么复杂,比如说,就连这两者在一起也不会干涉FPS中的任何事情。 然而,只有用地上脚本来生成已经是一个大问题,并且我一次只能生成一个最小可能位,即移动时(1,48),移动时(48,1)移动时在左边和右边,显然有对角线运动的情况,必须产生48 + 48,这是最坏的情况。 然而,即使只有48人已经离开了FPS,也不需要对角线移动来感受FPS的遭遇。

我想提示能够优化这一代,如果知道任何方式只使用一种algorithm来生成一切(地形+救济+树),或任何帮助,可以带我到一个更好的方式。

了解为什么我用三种不同的脚本生成地形,浮雕和树木:

地形是大面积的大面积地区。

在这里输入图像说明

地图上的浮雕是弯曲的线条。

在这里输入图像说明

树木只是地图上肮脏的噪音点。

在这里输入图像说明