Haritada yordamı oluşturulan 2D kavisli yollar


9

Üzerinde çalıştığım bir oyun için otomatik olarak yol haritaları oluşturmak için algoritmalar deniyorum.

Harika görünümlü haritalara sahip oldukları için " Kingdom Rush " oyunlarını referans noktası olarak kullanıyorum.

Oyunun "Kingdom Rush" dan yol haritaları örnekleri

Prosedürel içerik oluşturma konusunda yeniyim ve burada herhangi birinin işaretçisi olup olmadığını merak ediyordum. Rastgele yol topolojileri üretmeyi denedim, örneğin birkaç giriş / kaynak düğümü, birkaç iç düğüm (çatal ve birleştirme) ve bazı çıkış lavabo düğümleri, daha sonra bu bilgilere dayanarak gerçek bir yol haritası oluşturmak için grafik düzeni algoritmaları kullanarak.

Yol düzeni için Fruchterman-Reingold algoritmasını kullanan bir örnek :

PCG tarafından oluşturulan harita 1

Mavi grafik, kenarların daha az düz görünmesini sağlamak için rastgele oluşturulmuş bazı Bézier kontrol noktalarını kullanır.

Aynı algoritma ancak farklı rasgele sayılar kullanılarak oluşturulan başka bir örnek:

PCG tarafından oluşturulan harita 2

Sorun, sonuçların çoğunun oldukça benzer görünmesi ve prosedürel olarak oluşturulan haritaların kontrol edilebilirliğini ve çeşitliliğini geliştirmek için hangi kuralları ekleyebileceğimden emin değilim.

Herhangi bir tavsiye takdir.


Harika bir soru. Referans resimler, şimdiye kadar denediğiniz şeyler de dahil olmak üzere çok yardımcı olur. 'Kontrol edilebilirlik' ile ne demek istediğinizi biraz daha açıklayabilir misiniz? Kontrol edebileceğiniz birçok şey var ; bazı örnekler yardımcı olabilir.
Pikalek

Selam! Yanıtınız için teşekkürler. Kontrol edilebilirlikle, yani belirli kurallar yazmak mümkündür (örn. Kavşakları birbirinden belirli bir mesafeden daha yakın yerleştirmeyin; x dereceden daha keskin açılara izin vermeyin) ve üretim algoritması bu kısıtlamalara uyuyor mu? Ayrıca, bu kurallar algoritmanın çok çeşitli ilginç haritalar üretme yeteneğini engellememelidir. Ancak cesaretiniz cesaret vericidir. Ben bu işe almak ayrıntıları ile sinirli olmaya başlamıştı!
SixTwoOne

Yanıtlar:


2

Örnek yollarınızda, oluşturduğunuz yolların kesişimleri arasındaki segmentlerde eğriler vardır. Yollarınıza daha fazla "yedek" kontrol noktası eklemeyi denediniz mi?

Döngü sayısının bir üretim parametresi olmasını sağlamaya ne dersiniz? Ayrıca "kıvrımlılık" (yedekli kontrol noktalarının sayısı) Çıkış sayısı başka bir olacaktır.

Bence kavşaklara çarptıklarında çift kontrol noktaları vererek yolları da bitirebilirsiniz. Bu, kavşakların daha iyi görünmesini sağlamalıdır.


Ara kontrol noktaları önerisinin iyi olduğunu düşünüyorum! Şu anda kullandığım grafik düzeni algoritması yalnızca düz çizgiler üretiyor, ancak diğer iki düğüm arasında bir yere "kavisli viraj" düğümü yerleştirebiliyor ve yakındaki güzel görünmesini sağlayacak kontrol noktalarını yerleştirmek için sezgisel bir yöntem kullanabiliyordum. Kesinlikle bu konuya daha fazla bakmam gerekiyor, çünkü daha iyi görünen kavşaklar oluşturmakla da bağlanıyor.
SixTwoOne
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.