लुडम डियर 22 के लिए, नोच ने मिनिक्राफ्ट नामक 48 घंटों में एक गेम प्रोग्राम किया। यह 2 डी Minecraft की तरह है।क्या मिनिक्राफ्ट में उपयोग किए जाने वाले इस नमूना एल्गोरिदम का नाम है?
वैसे भी स्रोत उपलब्ध है (यहां: 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);
उन दो छोरों के लिए नमूना एल्गोरिथ्म किसी तरह चल रहे हैं, और मैं सिर्फ यह जानना चाहते हैं इस एल्गोरिथ्म नामित ज्ञात है की तरह है, या होता अगर पायदान बस अपना खुद का लुढ़का।