2011-12-21 2 views
8

Для 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); 

Те два для петель выполняется какой-то алгоритм дискретизации, и я просто хотел бы знать, если это известно по имени алгоритма, или если выемкой просто покатался.

ответ

Смежные вопросы