Для Ludum Dare 22, Notch запрограммировал игру через 48 часов под названием Minicraft. Это похоже на 2D-миниатюру.Есть ли название для этого алгоритма выборки, используемого в Minicraft?
В любом случае источник доступен (здесь: http://www.ludumdare.com/compo/ludum-dare-22/?action=preview&uid=398), и я смотрел, так как меня интересует случайное генерирование ландшафта и уровней. В коде есть блок кода, который запускает генерацию ядра, и алгоритм для меня кажется знакомым, но я не могу указать ему имя. Я хотел бы точно знать, что это такое, чтобы я мог больше узнать об этом и узнать, как это работает.
В частности, код от levelGen.java:
do {
int halfStep = stepSize/2;
for (int y = 0; y < w; y += stepSize) {
for (int x = 0; x < w; x += stepSize) {
double a = sample(x, y);
double b = sample(x + stepSize, y);
double c = sample(x, y + stepSize);
double d = sample(x + stepSize, y + stepSize);
double e = (a + b + c + d)/4.0 + (random.nextFloat() * 2 - 1) * stepSize * scale;
setSample(x + halfStep, y + halfStep, e);
}
}
for (int y = 0; y < w; y += stepSize) {
for (int x = 0; x < w; x += stepSize) {
double a = sample(x, y);
double b = sample(x + stepSize, y);
double c = sample(x, y + stepSize);
double d = sample(x + halfStep, y + halfStep);
double e = sample(x + halfStep, y - halfStep);
double f = sample(x - halfStep, y + halfStep);
double H = (a + b + d + e)/4.0 + (random.nextFloat() * 2 - 1) * stepSize * scale * 0.5;
double g = (a + c + d + f)/4.0 + (random.nextFloat() * 2 - 1) * stepSize * scale * 0.5;
setSample(x + halfStep, y, H);
setSample(x, y + halfStep, g);
}
}
stepSize /= 2;
scale *= (scaleMod + 0.8);
scaleMod *= 0.3;
} while (stepSize > 1);
Те два для петель выполняется какой-то алгоритм дискретизации, и я просто хотел бы знать, если это известно по имени алгоритма, или если выемкой просто покатался.