Javascript'te bir kule savunma oyunu oluşturmaya çalışıyorum.Toplu astar yol bulma
sorun i (Oldukça iyi olduğuna inanıyorum) bir ikili yığını kullanır http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript: Ben astar bu web sitesinden kod kullanıyorum
Her yol bulma dan iyi ayrı oluyor ..
Sahip olmak, insanların "saldırganların" yolunu engellemelerine izin vermek istiyorum. Bu, her "saldırganın" kendi başına çıkış yolunu bulabilmesi gerektiği anlamına gelir (birisi tek bir "saldırganı" kesebileceğinden ve çıkışa kendi yolunu bulması gerektiğinden). Şimdi 5/6 saldırganları herhangi bir sorun olmadan bir anda yol alabilirler. Ancak yolun 10'dan fazla saldırganın engellendiğini söyleyin, bunların 10'unun her ikisi de, FPS'yi saniyede 1/2'ye düşüren aynı zamanda kendi pathfinding komut dosyasını da tetiklemelidir.
Bu, herkesin çok zaman geçmesine yol açan çok fazla varlığı olan herkes için ortak bir sorun olmalı, bu yüzden benim yaklaşımımdan daha iyi bir yol olması gerektiğini hayal ediyorum.
Sorularım: Toplu yol bulma algoritmasını çoklu "botlara" en verimli şekilde uygulamanın en iyi yolu nedir?
sayesinde
James
, doğrusal-zaman alır), böylece uygulama optimal olmaktan uzaktır. –
Biraz hızlandırıp hızlandıramayacağımı göreceğim. Ama bence daha verimli bir yol bulmama rağmen, botları denemem ve yollarını bulursam, yavaş kareler ile sonuçlanacağım. En iyi bahse girmeye başlıyorum. her bir pasajın takip edilebilmesi için botlar .. – james
Eğer kulenin savunması gibi bir şey varsa, kabaca ekran değerinde bir haritaya ve karmaşık toplamalara (yani botlar birbirleriyle veya diğer hareketli nesnelerle çarpışmazsa) Bunu ayrı ayrı ele alırsınız) o zaman evet tüm haritanın yollarının hesaplanması en iyi olurdu.Aslında, muhtemelen tüm kareyi tüm kareyi yeniden hesaplamanız gerekmeyecektir. Bir algoritma oluşturmaya dikkat ederseniz, hangi düğümlerin bir kullanıcı değişikliğinden etkilendiğini belirleyebilir ve yalnızca bu düğümlerden 'yukarı akış' değerini yeniden hesaplayabilirsiniz. Kulağa ilginç geliyor! – Tim