Использование OpenSimplex шума: https://gist.github.com/KdotJPG/b1270127455a94ac5d19
ли sommething как:
protected void generateLevel() {
OpenSimplexNoise noise = new OpenSimplexNoise(); //optionally pass in a seed.
for (int y = 0 y < height; y++) {
for (int x = 0; x < width; x++) {
double value = noise.eval(x/24.0, y/24.0, 0.5);
if (value < 0) {
tiles[x + y * width] = 6; //set water
} else {
tiles[x + y * width] = 1; //set grass
}
}
}
}
Есть также варианты, такие как Перлин шума и Simplex шума. Я бы пропустил шум Perlin полностью, потому что он имеет тенденцию демонстрировать визуально значимые артефакты сетки (он строит все свои функции с его базовой квадратной сеткой). Симплексный шум в 2D хорошо, хотя большинство реализаций 2D-симплекс-шума в Интернете используют странный набор градиентов, который приводит к искажениям артефактов по отрицательной диагонали. И 3D-симплексный шум запатентован.
шума Перлина против OpenSimplex шума, 2D ломтиков 3D:
- левый шум (х, у, 0) полутоновой
- Следующий шум (х, у, 0)> 0? белый: черный
- Далее - шум (x, y, 0) | > 0,1? белый: черный
- Следующий шум (х, у, 0,5) полутоновой
EDIT: Вот код от комментария
фрактал шума:
OpenSimplexNoise n1 = new OpenSimplexNoise(seed1);
OpenSimplexNoise n2 = new OpenSimplexNoise(seed2);
OpenSimplexNoise n3 = new OpenSimplexNoise(seed3);
for each x,y {
double value = (n1.eval(x/48.0, y/48.0, 0.5) + n2.eval(x/24.0, y/24.0, 0.5) * .5 + n3.eval(x/12.0, y/12.0, 0.5) * .25)/(1 + .5 + .25);
//Do whatever you need to with that value
}
Rivers:
if (value > -0.1 || value < 0.1)
water
else
land
Биомы:
OpenSimplexNoise n1 = new OpenSimplexNoise(seed1);
OpenSimplexNoise n2 = new OpenSimplexNoise(seed2);
OpenSimplexNoise n3 = new OpenSimplexNoise(seed3);
for each x,y {
double elevation = n1.eval(x/24.0, y/24.0, 0.5);
double temperature = n2.eval(x/24.0, y/24.0, 0.5);
double precipitation = n3.eval(x/24.0, y/24.0, 0.5);
if (elevation < 0)
water
else {
//decide biome based on temperature, precipitation, and elevation
}
}
Можете ли вы определить реалистичный эффект? Должен ли ваш ландшафт быть островом или больше земель с реками? Вы можете определить куски рек или озер и поставить их случайно на свою местность. – Mosa