Döşeme Tabanlı 2D Platformer için Arazi Üretimi


15

Şu anda Terraria'ya benzer bir çini tabanlı 2D platform üzerinde çalışıyorum, ancak arazi üretimi ile ilgili zorluk yaşıyorum. Bazı temel şeyler var, ancak yararlı bir şey olarak ortaya çıkmıyorlar.

Perlin Gürültüsü gibi birkaç farklı teknik denedim ve Midpoint Deplasman gibi diğerlerini okudum, ancak hangisinin en iyi olacağından emin değilim veya farklı alanlar oluşturmak için farklı tekniklerin bir kombinasyonu. (Arazinin genel şekli için Orta Nokta Deplasmanı ve mağaralar için Perlin Gürültüsü gibi.)

C ++ 'da olmasına rağmen nasıl yanlışlıkla gürültü kitaplığı ile katman nasıl mükemmel bir açıklama bulduk ve ben C # kullanabileceğiniz bir DLL içine derlemek için yeterli C ++ bilmiyorum. Ben birlikte nasıl iki efekt (genel taban için degrade ve sonra detay için fraktal) birleştirmek bilmiyorum, ancak, bu kopyalamaya çalıştım.

Şu anda bir Plazma Fraktal kullanıyorum ve sonuçlar son derece çeşitlidir. Örneğin, neredeyse hiç yüzeyin olmadığı bir arazi oluşturabilir veya hiç yüzeyin olmadığı bir arazi oluşturabilir.

Yine de, iyi bir harita örneği, bazı iyileştirmelerle daha iyi olurdu. (Siyah katı, beyaz havadır):

İyi harita

Ve korkunç bir harita örneği. (Siyah katı, beyaz havadır):

Korkunç harita

Temel olarak, sorduğum şey, araziyi oluşturmak veya üretim süresi mümkün olduğunca hızlı olacak şekilde makul bir yüzey alanı olduğundan emin olmaya zorlamak için daha iyi bir yol olacaktır. Ya da alternatif olarak, Kazara Gürültü Kütüphanesi ile aynı sonucu nasıl elde edebileceğimi, ancak C #.

Herhangi bir örnek çok takdir edilecektir.


Merhaba, bunu nasıl yaptığını merak ediyordum. Böyle dünyaları nasıl üreteceğimize dair bir anlayış edinmeye çalışıyorum ve elde ettiğiniz sonuçları seviyorum. Hangi algoritmayı kullanıyorsunuz çünkü perlin gürültüsü 2D'ye benzemiyor ve kesinlikle perlin gürültüsü 1D değil.
G3tinmybelly

Yanıtlar:


8

Perlin gürültüsüne bağlı kalmayı denerdim, ancak belirli yüksekliklerde belirli bir ortalama yoğunluğu sağlamak için yüksekliğe dayalı bir ağırlık eklerdim. Notch'un Minecraft arazi üretimi hakkındaki yayınının bir kısmını alıntılamak için :

Bu yüzden sistemi 3D Perlin gürültüsünü temel alan benzer bir sisteme çevirdim. “Yer yüksekliği” ni örneklemek yerine, gürültü değerini “yoğunluk” olarak değerlendirdim; burada 0'dan düşük olan her şey hava, 0'dan yüksek veya 0'a eşit olan her şey öğütülmüş olacaktı. Alt katmanın sağlam olduğundan ve üst katın olmadığından emin olmak için, sadece örneklenen sonuca yüksekliği (su seviyesiyle ofset) eklerim.

Esasen, bir Minecraft arazisinden küçük bir dilim alıyorsunuz. Yani gürültü 2B Perlin oluşturmak, ancak kilo o kadar belli bir noktaya Yukarıdaki bir şey olasılıkla belli bir noktaya altındaki hava, ve bir şey olmaktır muhtemel yeryüzü olmak.

Bu, bazı çıkıntılar ve ilginç özelliklerin yanı sıra bazı mağaralar ve yüzen adalar ile iyi bir zemin alanı sağlayacaktır. (Yüzen adalar istemiyorsanız, bunları test edebilir ve manuel olarak kaldırabilirsiniz.) Bu yöntem size tünel gibi şeyler vermeyecektir, bu nedenle bunları arazi üretiminden sonra, rastgele yürüyüş .


Tam potansiyeline Perlin Gürültü kullandığımdan tam olarak emin değilim. Tam olarak tarif ettiğiniz gibi yaptıktan sonra, çok sayıda yüzen ada ile çok sayıda mağara yaptı. Gerçek arazi tipi tanımı yok. Sonuçları tartmak için bir degrade kullanarak, bu sonucu elde ederim .
Gölgeli Boyutlar

@Shaded Dimensions - Perlin Noise parametrelerinizin ayarlanması gerekiyor. İstediğiniz şey çok daha pürüzsüz, daha geniş bir desen olduğunda çok değişken bir gürültüye sahipsiniz. Check out freespace.virgin.net/hugo.elias/models/m_perlin.htm ve parametreleri bazı ile karıştırmasını deneyin. Daha az kalıcılık ve daha az oktav kullanmayı deneyin. (Bu terimler değişebilir, bu yüzden bu makaleyi okuyun.)
dlras2

Tamam, bağlantı için teşekkürler. Ayrıca, birkaç parametreyi değiştirdikten sonra ağırlığın amaçlandığı gibi çalışmadığını öğrendim.
Gölgeli Boyutlar

Tamam, parametreleri biraz değiştirdim ve en azından şimdilik oldukça kabul edilebilir bir şeyim var. İlk önce asıl araziyi yapmak istediğim için sadece bu test için mağara üretmeyi de kaldırdım. Bu nihai sonuçtur . Sadece yüzen adaları kaldırmak için çek eklemeniz gerekir. Tekrar teşekkürler.
Gölgeli Boyutlar

@ Gölgeli Boyutlar - Güzel! Çoğu zaman, iyi araziler sadece ayar parametreleri ve örtüşen gürültüden gelir. Çok mutlu olduğunuz bir şey elde etmeniz biraz zaman alacaktır, ancak şimdi sahip olduklarınızı her zaman kullanabilir ve ince ayarlar eklemek için geri dönebilirsiniz. İyi şanslar!
dlras2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.