Генерація карти

Матеріал з Minecraft Wiki
Перейти до: навігація, пошук
Шкала процесу генерації карти.

Генерація карти — це процес випадкового створення географічних і геологічних об'єктів на карті при першому запуску гри на порожньому слоті для ігрового світу. Процес генерації відображається на шкалі, яку можна побачити при першій генерації карти. Але при цьому карта генерується не до кінця. Вона буде продовжувати генеруватися в міру просування вами по карті. Це зроблено для того, щоб не навантажувати гру і комп'ютер генерацією при першому запуску.

На місці ще не згенерованої частини карти видно корінна порода.


Алгоритм генерації кілька разів змінювався. Тепер ландшафт генерується, зберігається і завантажується з диска і вимальовується шматками по 16×16×16 блоків. У кожного чанка є значення зсуву, яке зберігається у вигляді 32-бітного цілого числа і може перебувати в діапазоні приблизно від мінус двох мільярдів до плюс двох мільярдів. Однак світ обмежений і генерується тільки в координатах блоків до 30 мільйонів на всі боки. Раніше цього обмеження не було і можна було вийти за межі першого діапазону (а це приблизно чверть відстані від Землі до Сонця), тоді нові чанки починали блокувати перегляд старі (так звані «Далекі землі»). А після того, як подолана шістнадцята частина цієї відстані, функції, які використовують цілі числа для роботи з позиціями блоків, такі як використання інструментів і пошук шляхів, почнуть дивно себе вести.

У ранніх версіях гри для додання світу форми була використана карта висот на основі двовимірного шуму Перлина. Або, якщо бути точніше, кілька карт висот. Одна для загальної висоти, одна для шорсткості ландшафту і одна для дрібних деталей. Для кожного стовпа блоків висота дорівнювала (загальна висота + (шорсткість×деталі))×64+64. Карти загальної висоти і шорсткості були гладкими, сильно масштабувати шумами, а деталі були більш дрібними. У цього методу було чудове перевага в швидкості, так як потрібно було провести всього 16×16×(кількість_шумів) розрахунків на шматок карти, але його недоліком був нудний ландшафт. Зокрема через неможливість генерувати нависають над землею виступи.

Тепер (приблизно з Beta 1.3) довелося перейти на схожу систему, яка використовує тривимірний шум Перлина. Тепер уже не генерується «висота землі». Значення шуму було розглядається як «щільність», і все блоки з щільністю менше 0 стають повітрям, а блоки з щільністю більше або дорівнює 0 — землею. Щоб нижній шар був твердий, а верхній — немає, до отриманого результату додається висота (зміщення щодо рівня моря).

На жаль, миттєво з'явилися проблеми продуктивності та іграбельності. Перша — через велику кількість необхідних розрахунків, другі — через відсутність плоских місцевостей і гладких пагорбів. Рішення обох проблем полягала в зниженні дозволу при розрахунках (8x масштабування по горизонталях і 4x по вертикалі) і добудові ландшафту за допомогою лінійної інтерполяції. У грі з'явилися площині і пагорби, а заодно зникла більшість ширяють у повітрі блоків.

Остаточна формула, яка використовується зараз, трохи поліпшена. Вона повільно розвивалася протягом розробки гри, і, до речі, до цих пір використовує двовимірні карти висот і шумності.