Я думаю, я краще розумію, про що ви зараз просите.
Шум не випадковий - він виглядає випадковим чином, але повністю заснований на математичній формулі і є повторюваним. Вся інформація кодується у формулі. Це означає, що ви можете мати формулу, яка потенційно охоплює нескінченну область, і просто використовувати формулу для координат потрібної вам області. Коли вам потрібна сусідня область, ви просто повторно використовуєте формулу за новими координатами, і оскільки формула дає безперервні значення, області приєднуються плавно.
Ось спрощений приклад: використання синуса замість перлін-шуму для покоління висоти, і уявлення про світ нескінченний по осі X, але висотою лише 1 одиниця в осях Y і Z.
Формула така: height(x,y) = sin(x/20)
Гра починається, і ми генеруємо висоти для прилеглої області, тобто. (0,0) до (9,0):
[0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.34, 0.39, 0.43]
У нас пагорб, піднімається вгору праворуч. Скажімо, ми йдемо до кінця, і зараз нам потрібно генерувати значення від (10,0 до 19,0):
[0.48, 0.52, 0.56, 0.61, 0.64, 0.68, 0.72, 0.75, 0.78, 0.81]
Зверніть увагу, як пагорб постійно зростає, і що значення (10,0) добре випливає із значення в (9,0). Це відбувається тому, що функція синуса є безперервною, що в основному означає, що якщо ви будете годувати її двома суміжними номерами, ви отримаєте 2 сусідніх результату - для певного визначення сусіднього. Отже, якщо ви використовуєте ваші координати світу в якості параметрів функції, що визначає ваш світ, ви отримаєте безперервний пейзаж, який підходить разом, незалежно від того, скільки або мало його генеруєте одночасно. Коли ви генеруєте нові деталі, вони будуть витікати з існуючих деталей автоматично, оскільки висоти вже заздалегідь визначені.
Якщо світ не збирається змінюватися, вам навіть не потрібно нічого зберігати, оскільки ви можете точно розрахувати, яка висота є в будь-якій точці формули. Очевидно, що з чимось на зразок Minecraft світ повністю деформується, тому ви просто зберігаєте кожен шматок під час його створення. Зважаючи на те, що між суміжними фрагментами є високий ступінь узгодженості (тобто, якщо 1 блок є травою, це швидше за все, що блок поруч із ним буде також травою), ви можете стиснути дані дуже ефективно - кодування довжини буде працювати добре, але тоді так би майже будь-який стандартний алгоритм стиснення.
Тоді як я говорив про висоту як про найбільш очевидне значення, ви можете використовувати ту саму систему, щоб генерувати будь-які потрібні вам характеристики. Використовуйте математичну функцію з безперервними властивостями, і де вхідні дані є вашими світовими координатами, і це може визначити наявність орієнтирів, родовищ корисних копалин, точок нересту, що б вам не хотілося. (Очевидно, що значення в одній формулі можуть вплинути на іншу. Немає точки розміщення родовища вугілля у повітрі, тож ви генеруєте карту висоти світу і потім тільки обчислюєте можливості вугілля для блоків, які досить далеко під землею.)