2008-09-20 15 views
5

2-4 oyuncunun bir labirentte ayrı giriş noktalarına yerleştirildiği ve bir hedef noktasına ulaşması gereken basit bir çok oyunculu oyun üzerinde çalışıyorum. Genel olarak bir labirent oluşturmak çok kolaydır, ancak bu durumda oyunun amacı herkesin önünde hedefe ulaşmaktır ve ben nesil algoritmanın bir oyuncuyu diğerlerine göre daha fazla tercih etmesini istemiyorum.Optimal multiplayer labirent oluşturma algoritması

Bu yüzden, her oyuncu için başlangıç ​​noktasından hedefe en uygun yolun ortalama yoldan% 10 daha fazla adım olmadığı bir labirent oluşturma algoritması arıyorum. Bu sayede oyuncular az çok eşit bir oyun sahasında. Böyle bir algoritmayı düşünen var mı?

(bu haliyle Bir fikrim var, ama iyi düşünülmüş ve optimum çok daha az görünüyor değil -. Ben bir cevap olarak göndeririz)

cevap

7

Freespace'in cevabına bir alternatif rastgele bir labirent üretmek, sonra her bir hücrenin sonlara ulaşmak için hamle sayısını temsil eden bir değere atamak olabilir. Labirentin ('baştan başladığınıza karar verirseniz, her ikisini de yapabilirsiniz). Sonra bir mesafe seçin (belki de o mesafedeki n noktaları olan en yüksek olanı) ve oyuncuları bu değere sahip karelere yerleştirin.

+0

Bu kesinlikle mükemmel - tam olarak gereken şey türü . Bir milyona teşekkürler! :) –

0

Ben gelebilir kolay çözüm ile rastgele tüm bir labirent gibi normal oluşturmak, sonra rastgele hedef noktası ve oyuncu başlangıç ​​noktaları seçmektir. Bu yapıldıktan sonra, her başlangıç ​​noktasından hedefe en kısa yolu hesaplayın. Ortalamayı bulun ve 'düzleştirme' (engelleri kaldırın/taşıyın - bunun nasıl çalışacağını bilmeyin), tüm yollar uygun kenar boşluğu içinde olana kadar, önemli ölçüde üstündeki yollar. Ek olarak, ortalamanın oldukça altında olanları almak ve ek engeller eklemek mümkün olabilir.

1

İlk olarak oyuncuların ve hedeflerin ve eşit uzunluktaki bir yolun konumunu seçme ve sonradan tanımlanan yollara saygısız bir labirent inşa etme? Eğer yollar kesişmezse, bu kolayca çalışmalıysa,

+0

Bu iyi bir cevap, ve evet, freespace'in çok benzer :) Bence bu gitmek için doğru yol olabilir. Girdiniz için teşekkürler. –

1

farz edelim Bunu hedefe ve her oyuncunun giriş noktasını ayarlayarak ve her biri için hedefe benzer uzunluktaki yollar oluşturarak yaklaşacağım. Sonra bu yollarda yanlış dallar eklemeye, diğer oyuncuların yollarına bağlantı vermekten kaçınmaya veya bir dalı yola bağlamaya başlamaya başlıyorum. Yani aslında her dal bir çıkmaz sokaktır.

Bu şekilde, yolların benzer uzunlukta olmasını garanti edersiniz. Ancak, oyuncuların birbirleriyle etkileşmesine izin vermez. Bununla birlikte, her iki yoldaki şube giriş noktalarının hedeften uzaklaşacak şekilde dalları arasında bağlantılar oluşturarak bunu yapabilirsiniz. Ve bu dalda eğlence ve kar için daha fazla çıkmazdan uçabilirsin :-)

+0

heh, ikimiz de eşit derecede aptalız! :-) –

+0

Hmm, bunu beğendim. Nasıl çalışacağından emin değilim ama sanırım bu bir atıştı.Teşekkürler :) –

+0

@Vinko Vrsalovic, yazmaya başladığımda cevabını göremedi üzgünüm: P Dedikleri gibi, dahiler aynı düşünür ve aptallar asla farklı değildir: P – freespace

0

onlar sürece onların olmasını istediğiniz gibi olana kadar döngü başına her yolu 1 ekleyerek, oradan N Başlangıç ​​yolları

orta

yerde sizin çıkış noktasını seçin.

N başlangıç ​​noktanız vardır ve hepsi aynı uzunluktadır.

Labirent dolu olana kadar hat dışı ek dallar ekleyin.