Sanırım şu an ne sorduğunu daha iyi anlıyorum.
Gürültü rastgele değildir - rastgele görünümlüdür ancak tamamen matematiksel bir formüle dayanır ve tekrarlanabilir. Tüm bilgiler formülde kodlanmıştır. Bu, potansiyel olarak sınırsız bir alanı kapsayan bir formüle sahip olabileceğiniz ve yalnızca ihtiyacınız olan alanın koordinatlarında formülü kullanabileceğiniz anlamına gelir. Bitişik bir alana ihtiyaç duyduğunuzda, yeni koordinatlardaki formülü yeniden kullanmanız gerekir ve formül sürekli değerler verdiğinden, alanlar sorunsuz bir şekilde birleşir.
İşte basitleştirilmiş bir örnek, yükseklik üretimi için perlin gürültüsü yerine sinüs kullanmak ve dünyayı hayal etmek X ekseninde sınırsız, ancak Y ve Z eksenlerinde sadece 1 birim yüksekliğinde.
Formül: height(x,y) = sin(x/20)
Oyun başlar ve yakındaki alan için yükseklikler oluştururuz, yani. (0,0) ila (9,0):
[0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.34, 0.39, 0.43]
Sağa doğru yükselen bir tepemiz var. Diyelim ki sonuna kadar yürüyelim ve şimdi (10,0 - 19,0) arasında bir değer üretmemiz gerekiyor:
[0.48, 0.52, 0.56, 0.61, 0.64, 0.68, 0.72, 0.75, 0.78, 0.81]
Tepenin nasıl sabit bir şekilde yükselmeye devam ettiğini ve (10,0) 'daki değerin (9,0)' daki değerden güzel bir şekilde geçtiğini görün. Bunun nedeni sinüs fonksiyonunun sürekli olmasıdır, yani temelde 2 bitişik sayıyı beslerseniz, 2 bitişik sonuç elde edersiniz - belli bir bitişik tanım için. Böylece, dünyanızın koordinatlarını, dünyanızı tanımlayan işlevin parametreleri olarak kullanırsanız, bir kerede ne kadar çok veya az oluşturursanız olun, birbirine uyan sürekli bir manzara elde edersiniz. Yeni parçalar oluşturduğunuzda, yükseklikler önceden belirlenmiş olduğundan, mevcut parçalardan otomatik olarak akacaktır.
Eğer dünya değişmeyecekse, hiçbir şey saklamanıza gerek kalmaz, çünkü formülde belirtilen herhangi bir noktada tam olarak yüksekliğin ne olduğunu hesaplayabilirsiniz. Açıkçası Minecraft gibi bir şeyle, dünya tamamen deforme olabiliyor, bu yüzden yarattığınız gibi her bir parçayı kurtarıyorsunuz. Bitişik topaklar arasında yüksek derecede tutarlılık olduğu göz önüne alındığında (yani, 1 blok çim ise, yanındaki bloğun da çim olamayacağından daha muhtemeldir) verileri verimli bir şekilde sıkıştırabilirsiniz - çalışma uzunluğu kodlaması işe yarayabilir peki, fakat o zaman neredeyse herhangi bir standart sıkıştırma algoritması olur.
En belirgin değer olarak yükseklik hakkında konuştuğum halde, istediğiniz sistemi oluşturmak için aynı sistemi kullanabilirsiniz. Sürekli özelliklere sahip ve girdilerin dünya koordinatlarınız olduğu ve yer işaretlerinin, maden birikintilerinin, yumurtlama noktalarının ne olduğuna karar verebileceğiniz bir matematiksel işlev kullanın. (Açıkçası bir formüldeki değerler başka birini etkileyebilir - havaya bir kömür yatağı yerleştirmenin bir anlamı yoktur, bu nedenle dünya yükseklik haritasını oluşturur ve daha sonra yalnızca toprak altında yeterince blok olan bloklar için kömür olasılıklarını hesaplarsınız.)