Ateş etmeden önce yörüngeler etrafında füze yörüngesinin hesaplanması


10

Unity3D ile bir oyun inşa ediyorum. Bir Yerçekimi Savaşları klonu. Hem oyuncu hem de AI kuleleri, füzelere ateş ederek (Açı ve Güç değişkenleri vererek) füzeleri gezegenlerde çarpmamaya çalışırlar. Ama işte benim sorum: AI'nın bir gezegenin yerçekimini de göz önünde bulundurarak füzesini vurmadan önce güç ve açı hesaplamasını nasıl sağlarım?

Yanıtlar:


5

Birden çok gövdeli böyle bir sistem kaotik olacaktır. Bunun için bir denklemi gerçek zamanlı olarak çözebileceğinizi düşünmüyorum. Umabileceğiniz en iyi şey genetik bir algoritma kullanarak bir çözüm bulmaktır;

1: bir dizi (örn. 100) rastgele çözüm üretin (açı, güç çiftleri).

2: bu çözümleri simüle edin.

3: eğer bunlardan herhangi biri, sonunda hedefi vurmak (veya yeterince yakın gelmek), Bitti! aksi halde devam edin.

4: En iyi 10 çözümü seçin (hedefe en yakın olanları)

5: bu 10 çözümden, açılarını ve güçlerini rastgele ayarlayarak her biri için 10 çocuk oluşturun.

6: Şimdi 100 yeni çözümünüz var, 2. adıma geri döndünüz

Herhangi bir çözüm bulunamaması veya araması çok uzun sürmesi durumunda yineleme sayısını sınırlamanız gerekecektir.

Bu yaklaşımın bile iyi bir çözüm bulması garanti edilmez çünkü; 1. çözüm olmayabilir 2. kaotik bir sistemde, bir çözüm küçük değişiklikler sonucu üzerinde büyük bir etkisi olabilir


1

Bir çekimi çizmeden simüle edebilmelisiniz.

Sonra 10 çekim simüle edebilir ve sonra 10 çekimden en yakın olanını alabilirsiniz.


0

Füzenin yörüngesinin girdilerine dayandığı Angleve ters denklemden Powerçözebilmeniz ( kesin bir cevap alabilmeniz ) gerekir.

Temel (psuedo) AI adımları aşağıdaki gibidir:

  1. Rastgele bir Powerseviye seçin. Makul bir aralığa düştüğü sürece , kesin değerin (bir dereceye kadar) ne olduğu önemli değildir .
  2. Kesin (iki katına mümkün olduğunca yakın ) vermek için ( gerçek yoldan ters çevrilmiş) denklemini çözün Angle.
  3. Yapay zekanın Angle' zorluğunu ' ayarlamak için, bir (değiştirilebilir) rastgele ofset seçin .
  4. Füzeyi oyuncuya (rastgele) Powerve (hesaplanan) ateşleyin Angle.

Elbette her iki giriş için de AI ateşini rastgele seviyelerde tutabilirsiniz, bu da bazı ilginç sonuçlar verebilir ...


Bu yöntem, sahip olduğunuz tek şey yerçekimi aşağı doğru ve sabit bir rüzgar olduğunda mükemmel bir anlam ifade eder, ancak Angleevreninize yayılmış birden fazla yerçekimi cisiminiz olduğunda " kesinliği vermek için bir denklem " için ne kullanırsınız? Çekmeleri mevcut konumunuza bağlıdır. Bazı çekimler bile mümkün olmayabilir.
John McDonald

@John - Bir atış tamamen imkansızsa (zayıf bir giriş gücü seçimini düşürmek ), oyun alanınızda ciddi bir sorun var. Bu tür oyunlarda, oyunculardan herhangi biri bir yapay zeka ile değiştirilebilir. Kabul edilirse, denklemler daha karmaşık hale gelir (ve birden fazla cisim ile çok hızlı bir şekilde), ancak yine de mümkün olmalıdır.
Clockwork-Muse

Yeterince adil. Ama bir denklem için ne kullanacağını biliyor musun? Bence bu yüzden bu soru yaratıldı.
John McDonald

John haklı: Aradığım şey bu denklem.
Onofrio

@Onofrio - Üzgünüm, ilgili denklemlerim yok ... ve bunu 'düzgün' yapmak için çok değişkenli analize ihtiyacınız var gibi görünüyor.
Clockwork-Muse

0

Hesaplamalarını değil, bir tahminden başlayıp uygun bir şekilde ayarlamalarını sağlayarak gerçekçi hale getirmeye ne dersiniz?

Yerçekimi Savaşları'nı oynadığımda, bunu yaptım; yarı rastgele bir güçle başlayın ve buna göre bir artışla ayarlayın. Birkaç çekimde gerçekten yaklaşıyorsunuz.

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.