Age of Empires II'nin rastgele haritalar üretme şeklini seviyorum (iyi çeşitlilik, iyi biyom geçişleri, kaotik hissetmeden haritalar rastgele hissedildi), ancak stili çoğaltmak için mücadele ediyorum. Örneğin, Perlin gürültüsünü kullanmaya çalıştım, ama her şey ya çok homojen çıkıyor ya da değilse, Perlin değeri -> arazi sezgiselleri çeşitli dünya türlerini yapmak için çok hassas ve kırılgandır.
AoE2 harita tipini "Bilinmeyen" tanıtılan "100.000 olası harita" yı hatırlıyorum, bazı tohum numaralarının kullanımını önerdi, ancak gördüğüm çeşitliliği üretmek için tohum numaralarını nasıl kullanacağımdan emin değilim.
AoE2 rastgele haritaları gibi rastgele haritalar oluşturmak için hangi algoritmaları ve sezgisel tarama yöntemlerini kullanabilirim?
Daha spesifik olmak için düzenleyin:
Sorunum hakkında daha fazla düşünüp AoE2'nin rastgele harita motoru hakkında sevdiğim şeyleri inceleyerek, en büyük sorunumun su ve bitki yaşamının haritadaki dağılımını yönetmek olduğuna inanıyorum . Şimdi de bunu aklıma "anlamlı mantık geçişleri" ile bağladığımı görüyorum, ama bu farklı bir problem (Perlin gürültüsünü sürekli kullanmamın çözmeyi zorlaştıracağını umuyorum).
Haritalama motorları hakkında sevdiğim şeyleri vurgulayan birkaç AoE2 rastgele harita ekledim, bu da kendi çabalarımın çoğaltamadığını. Tüm ekran görüntüleri rastgele harita tipinden ("Özel" -> "Bilinmeyen") alınır. Oyuna takımadalar gibi belirli coğrafyaları kullanma talimatı vermedim.
Aşağıda kendi harita motorumdan görüntüler var. Her piksel bir AoE2 harita döşemesine karşılık gelir.
Projem için bir sorun, haritaların AoE2 haritalarından çok, çok daha büyük olmasını istiyorum. Bu nedenle, kullandığım motor ne olursa olsun, AoE2'nin kullandığı gibi harita başına tek bir dar biyom seti değil, her haritada tam bir biyom dizisi oluşturabilmelidir.
Age of Empires II harita
İşte iç gölleri ve bir çeşit nehir görünümlü şeyleri içeren bir örnek. Haritanın nasıl dağılmış büyük miktarda su içerdiğini seviyorum, ama bu su hala biraz konsantre - imparatorluğunuzu inşa etmek için kullanılabilir büyük arazi alanları var. Tüm oyunu şehrinizi suyun etrafında planlayarak harcamanıza gerek yok.
İşte oyunun adaları sürülebilir bataklıklarla birleştirecek kadar akıllı olduğu benzer bir örnek. Gürültüye dayalı bir algoritmanın bataklığı nasıl yaratacağını ve sadece bu yerleri hayal edemiyorum. Ayrıca, oyunun araziyi nasıl yarattığına dikkat edin, böylece her oyuncu kendi özel, büyük bir arazi alanına sahip olur. Rastgele arazi yamaları yaratmadı, sonra her bir oyuncunun başlaması için en az korkunç olanın hangisi olacağını tahmin edin.
Bu harita da suyun yoğun kullanımını yapar, ama böyle değil birçok iç göl bulunmaktadır. İlk görüntüyle karşılaştırın. AoE2'nin aynı yapı taşlarını kullanarak tamamen farklı coğrafyalar yaratma şeklini seviyorum. Perlin gürültüsünü kullanma girişimim burada başarısız oldu - ya kara kütlesini cüce eden muazzam genişleyen okyanuslar ya da 10.000 Göller Diyarı alıyorum. Ben de zor adaları için ikisini de buldum ve bağlı kıtaları (Kuzey / Güney Amerika düşünüyorum).
Bu görüntüyü üstündeki görüntüyle karşılaştırın. Bir haritanın kuraklığının su seviyesine bağlı olmadığını gösterirler. İlk resimde neredeyse sudan yoksun, ancak ormanlar ve çimenler var. İkinci görüntü orta miktarda su içerir, ancak bir çöldür. Bunun mümkün olduğunu seviyorum (dünyanızda New Mexico veya Sahara ve Kosta Rika'ya sahip olmayı düşünün).
Kendi haritalarım
Harita oluşturmanın iyi bir yolunun, her biri farklı bir veri boyutunu temsil eden birden fazla Perlin gürültüsü katmanı katmanlamak olduğunu bir sürü yerde okudum. Popüler önerileri takiben, burada Whittaker tablosundan arazi türlerini seçerek yükseklik ve nem ile gittim .
İki perlin haritası aldım, her birinden değerleri basit bir şekilde tamsayılara ölçtüm if perlin_val < x { i=some_int } else if perlin_val < y...
, sonra (yükseklik, nem) tamsayı çiftlerini bir arazi tipi tablosu (örneğin, [1,0] -> tropikal çöl, [1,1) ile eşledim ] -> otlak). Okyanuslar bu sisteme dahil edildi - yükseklik = 0 tanımlı okyanus.
İyi bir varyasyon var ve birçok yönden gerçek bir dünya gibi hissediyor, ancak birkaç sorun var:
İlk olarak, okyanus derinliklerinde bir model yoktur. Kıyıya yakın sığ suların ve derin suların daha da dışarıya çıkmasını beklersiniz, nerede olduğu konusunda kafiye veya sebep yok
İkincisi, suyun tamamı okyanuslarda yoğunlaşır; göller veya nehirler yoktur, çünkü Perlin gürültüsü aniden bir kıtanın ortasında daha düşük bir değere düşmez.
Her biyomun miktarları arasında bir denge oluşturmak çok, çok zordur. Ben bu özelliği:
Perlin gürültüsü normal bir dağılım izler, bu nedenle her boyut eşlemesinin olasılığının nasıl ayarlanacağını tahmin etmek zordur
Birden çok boyutu dengelemeye çalışmak zordur - belki daha fazlasını isterim (2,3) bu yüzden elde etme ihtimalini yükseltirim (n, 3). Şimdi çok fazla var (3,3) ve her şey yanlış görünüyor.
Gürültüyü düzgün veriye sahip olacak kadar yakınlaştırdığımda, Perlin değerlerinin tam bir örneğini alamıyordum. Bu yüzden haritadaki dağılımlarımı önümde düzeltiyor, yeni bir rastgele harita yüklüyorum ve çok farklı sonuçlar elde ediyorum.
Nehirler / göller sorununu üçüncü Perlin değerlerinden su yaparak düzeltmeye çalıştım. Bir ikili su / toprak kararı, daha sonra yukarıdaki şeylerin tümünü karaya uygulayın. Bu, su dağıtımını kontrol etmeyi büyük ölçüde kolaylaştırır (yine de mükemmel değil, ama daha iyi), ancak mantıklı olmayan birçok biyom geçişi olduğu sorununu ortaya çıkarır. Örneğin, yemyeşil otlakların ortasında açıklanamayan çöl yamaları, sahilde kar, vb. Ayrıca yukarıda belirtilen nedenlerden dolayı kara biyomlarının oranlarını kontrol etmek hala zordur.
Yukarıdaki sorunlara baktığımda, Perlin gürültüsünü sadece bir boyuta eşleyen daha basit bir algoritma denedim. Şimdi 0 = derin okyanus -> 1 = sığ okyanus -> 2 = plaj ... -> N = kardan çıkan bir dizi arazi tipim var. Bu adalar ve kıtalar verirken ve her bir arazinin oranını dengelemeyi çok kolaylaştırırken, arazi türleri çok fazla kümelenmiştir. Her kara kütlesi, genellikle yüzeyine dağılmış arazi tipleri olmayan bir yükseklik haritasına benzemektedir. Her kara kütlesi yaklaşık olarak aynı özelliklere sahiptir, her zaman aynı sırada ve her zaman aynı halka benzeri şekildedir.