একটি ব্যক্তিগত প্রকল্প হিসাবে, আমি একটি ভূখণ্ডের জেনারেটর তৈরি করার চেষ্টা করছি যা ক্যাসল স্টোরি মসৃণ ভূখণ্ডের মতো দেখতে ভূখণ্ড তৈরি করবে।
আপনি যদি এটি আগে না দেখে থাকেন তবে এখানে:
আপনি যেমন দেখতে পাচ্ছেন এটি ব্লক এবং "স্মুথ" ব্লকের সংমিশ্রণ।
এই চেহারাটি অনুকরণ করতে আমি যা করার চেষ্টা করেছি তা হ'ল প্রতিটি পৃষ্ঠতলকে একটি মিনি উচ্চতা মানচিত্র দেওয়া। এটি সাধারণত কাজ করে তবে কিছু সমস্যা রয়েছে যা এইভাবে ভূখণ্ড দেয়:
সমস্যাটি হ'ল প্রতিটি ব্লক 1x1x1, তবে কখনও কখনও নির্দিষ্ট স্থানে উচ্চতা নেতিবাচক বা>> 1 হয় that সেক্ষেত্রে, আমি এটি ক্লিপ করে এবং উচ্চতা 0 বা 1 এ সেট করি।
আমার অর্থটি আরও ভালভাবে বর্ণনা করার জন্য এখানে একটি চিত্র রয়েছে:
উচ্চতা উত্পন্ন করতে, আমি মূলত:
genColumn(int x, int z)
{
int highestBlockY = (int)noise2d(x, z);
bool is_surface = true;
for(int y = max_height - 1; y >= 0; y--)
{
Block b;
if(is_surface)
{
b = Block.Grass;
b.HasHeightMap = true;
// generate heightmap
for(int ix = 0; ix < 5; ix++)
{
for(int iz = 0; iz < 5; iz++)
{
float heightHere = noise2d(x + ix / 4, z + iz / 4) - y;
// clip heights
if(heightHere > 1)
heightHere = 1;
if(heightHere < 0)
heightHere = 0;
b.HeightMap[ix][iz] = heightHere;
}
}
is_surface = false;
}
else
{
b = Block.Dirt;
}
setBlock(x, y, z, b);
}
}
সম্ভবত আমি "সত্য" পার্লিন শব্দটি ব্যবহার করে ভুল করে পৌঁছাচ্ছি?
কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে!