Myślę, że lepiej rozumiem, o co teraz pytasz.
Hałas nie jest przypadkowy - wygląda losowo, ale jest całkowicie oparty na matematycznym wzorze i jest powtarzalny. Wszystkie informacje są zakodowane w formule. Oznacza to, że możesz mieć formułę, która potencjalnie obejmuje nieskończony obszar, i po prostu użyj formuły na współrzędnych potrzebnego obszaru. Kiedy potrzebujesz sąsiedniego obszaru, po prostu ponownie użyj formuły na nowych współrzędnych, a ponieważ formuła daje ciągłe wartości, obszary będą łączyć się płynnie.
Oto uproszczony przykład, w którym do generowania wysokości wykorzystywany jest sinus zamiast szumu perlin i wyobrażenie sobie, że świat jest nieskończony w osi X, ale tylko o 1 jednostkę wysoko w osiach Y i Z.
Formula to: height(x,y) = sin(x/20)
Gra się rozpoczyna, a my generujemy wysokości dla pobliskiego obszaru, tj. (0,0) do (9,0):
[0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.34, 0.39, 0.43]
Mamy wzgórze, wznoszące się w prawo. Powiedzmy, że doszliśmy do końca i musimy teraz wygenerować wartości od (10,0 do 19,0):
[0.48, 0.52, 0.56, 0.61, 0.64, 0.68, 0.72, 0.75, 0.78, 0.81]
Zauważ, że wzgórze stale rośnie i że wartość przy (10,0) ładnie wynika z wartości przy (9,0). Wynika to z faktu, że funkcja sinusoidalna jest ciągła, co w zasadzie oznacza, że jeśli podasz jej 2 sąsiednie liczby, otrzymasz 2 sąsiednie wyniki - dla pewnej definicji sąsiedniej. Więc jeśli użyjesz swoich współrzędnych świata jako parametrów funkcji, która definiuje twój świat, otrzymasz ciągły krajobraz, który będzie do siebie pasował, bez względu na to, ile z niego wygenerujesz, czy niewiele. Po wygenerowaniu nowych części będą one automatycznie przepływały z istniejących części, ponieważ wysokości są już wcześniej ustalone.
Jeśli świat się nie zmieni, nie musisz nawet niczego przechowywać, ponieważ na podstawie wzoru możesz dokładnie obliczyć wysokość w danym punkcie. Oczywiście z czymś takim jak Minecraft świat jest całkowicie odkształcalny, więc po prostu zapisujesz każdy fragment podczas jego tworzenia. Biorąc pod uwagę, że istnieje wysoki stopień spójności między sąsiednimi kawałkami (np. Jeśli 1 blok jest trawą, bardziej prawdopodobne jest, że obok niego też nie będzie trawa), możesz bardzo skutecznie kompresować dane - kodowanie długości przebiegu zadziałałoby no cóż, ale wtedy prawie każdy standardowy algorytm kompresji.
Podczas gdy mówiłem o wysokości jako najbardziej oczywistej wartości, możesz użyć tego samego systemu do wygenerowania dowolnej cechy, którą chcesz. Użyj funkcji matematycznej z ciągłymi właściwościami i gdzie dane wejściowe są twoimi współrzędnymi świata, i które mogą decydować o obecności punktów orientacyjnych, złóż mineralnych, punktów odradzania, co tylko chcesz. (Oczywiście wartości w jednym wzorze mogą mieć wpływ na inny - nie ma sensu umieszczać złoża węgla w powietrzu, więc generujesz mapę wysokości świata, a następnie obliczasz możliwości węgla dla bloków, które są wystarczająco głęboko pod ziemią).