2011-12-21 5 views
8

Para Ludum Dare 22, Notch programó un juego en 48 horas llamado Minicraft. Es como un Minecraft 2D.¿Hay algún nombre para este algoritmo de muestreo utilizado en Minicraft?

De todos modos la fuente está disponible (aquí: http://www.ludumdare.com/compo/ludum-dare-22/?action=preview&uid=398), y estaba echando un vistazo ya que estoy interesado en la generación aleatoria de terrenos y niveles. En el código hay un bloque de código que ejecuta la generación central, y el algoritmo me parece familiar, pero no puedo ponerle nombre. Me gustaría saber exactamente qué es para que pueda leer más sobre él y aprender cómo funciona.

En concreto, el código es de 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); 

Los dos bucles están corriendo algún tipo de algoritmo de muestreo, y solo quisiera saber si esto se conoce el nombre de algoritmo, o si muesca acaba de rodar el suyo.

Respuesta

Cuestiones relacionadas