Yarış AI sürücü oyunu


17

Bir yarış oyununda arabaları nasıl kontrol edebileceğimi merak ediyorum.

AI temsilcim arabasını "0.35 üzerinde gaz kelebeği, 0.5 sağda direksiyon simidi, 0.0'da fren" gibi komutlarla kontrol etmeli mi? Yoksa arabanın yapıştığı bir eğriyi önceden hesaplamalıyım ve ön tekerleklerin dönmesi gibi görseller her şeyin tutarlı görünmesini sağlamak mı? Yoksa başka bir yol var mı?


4
"İdeal eğriye sadık kalın" stratejisi sadece etkileşim olmadığı sürece çalışır. AI ajanlarının diğer arabalarla etkileşime girmeye başladığı anda (onlardan kaçmak veya çarpmak) doğaçlama yapmaları gerekecek.
Philipp

1
Evet, boids tipi direksiyon ile ray boyunca düğüm gibi bir şey.
MichaelHouse

1
İşte Colin McRae's Rally 2'deki AI hakkında bir makale
gre_gor

@gre_gor, bu çok yararlı bir makale, teşekkür ederim!
dargemir

Yanıtlar:


16

Bir düzeyde oyunun önceden hesaplanmış bir yolu takip ettiğini söyleyebiliriz. Yarış oyununun parçaları (genellikle) zaten önceden hesaplanmış bir yol olduğundan.

Parçaları rasgele üretmekten bahsediyor olsak bile, oyun arabanın oraya ulaştığı an boyunca parkurların mevcut kısmını hesaplamış olmalı.

Kolaydı. Bununla ilgili başka bir şey var mı?

Her ikisi de, önceden hesaplanmış bir yolu izlemek ve aracı sistematik olarak kontrol etmek oyun endüstrisinde kullanımlara sahiptir. Cevap her ikisini de kullanmaktır.

Öncelikle, "bir eğrinin hesaplanmasının" iki anlama gelebileceğinden bahsetmek istiyorum:

  • Ne kadar sorgulamak istediğinizi parametre olarak kullanarak, eğri üzerindeki konumu çıktılayacak işlevler oluşturma.

  • İzlenecek nokta listesi (veya talimatlar ve diğer kontrol bilgileri) olarak anlaşılan bir yol oluşturma.

Birincisi tahmin için veya bazı fizik simülasyonlarında yararlı olabilir. Ancak, bir nesneyi kontrol etmek hakkında konuştuğumuzda, ikincisi önerilen yaklaşımdır.

Not: Eski oyunlar (1980'ler) için daha fazla engelleri taşımak gibi diğer arabalar. Onlardan kaçınmanız ve onları aşmanız için oradaydınız. Biz bunlardan bahsetmiyoruz.


  • Önceden hesaplanmış bir yolu izlemek için: Bu, sinema veya tekrarlanabilir sahneler için kullanışlıdır. Örneğin GTA San Andreas'ta kovalamaca misyonları kovalamaca hedefini ve tüm arabalar önceden tanımlanmış bir yolu takip eder (bu kovalamaca hedefinin trafiği önleyebilmesini sağlar ※). Yine de, onları rahatsız ettiğiniz anda AI kontrolüne geri dönerler, bu durumda AI, normal yolunu izlemesi gereken yere ulaşmak için yol bulmak zorunda kalacaktır.

    ※: Aslında önceden kaydedilmişti. Kayıt ve oynatma GTA SA oyun motorunun yeni özelliklerinden biriydi.

  • AI tarafından kontrol edilir:

    AI en basit haliyle bir devlet makinesidir. Ne olduğunu kontrol eder ve buna bağlı olarak bazı eylemler gerçekleştirir. Bu durum ve eylem kombinasyonlarından davranış olarak bahsedeceğim. İşlemlerin oyuncunun gamepad ile eşleşmesi gerekmez. Davranışlar da değil.

    Basit bir oyun için, muhtemelen sadece iki önemli davranışa ihtiyacınız vardır: 1) pistlerde ise, diğer otomobillerden ve engellerden kaçınarak pisti takip edin ve 2) pistlerde değilse, pistlere geri dönün.

    Bu aşamada, bir yolu (izleri) takip etmekten uzak değildir. Ancak, parkurlar gerçekten bir çizgi olmadığından, bir yolu takip etmekten değil, buna yakın kalmaktan (diğer arabalardan ve herhangi bir engelden kaçınırken) bahsediyoruz. AI'nın “direksiyon, frenleme ve hızlanma” yı çözmesi gerektiği anlamına gelir.

    Modern bir oyun için, araba da fizik simülasyonuna tabi olacak (çarpışmayı çözmek ve gerçekçiliği korumak için). Bu nedenle, oyun döngüsünün her bir yinelemesi, otomobilin hızına ve hızlanmasına bağlı olarak güncellenecek ve mevcut davranışı takip etmek için “direksiyon, frenleme ve hızlanma” (hıza ince ayarlar) uygulanacaktır.

    Ayrıca modern oyunların daha karmaşık davranışlara sahip olabileceğinden bahsetmek istiyorum, örneğin AI başka bir arabaya çarpmayı veya yollarını engellemeyi seçebilir. Aslında, AI bir tür makine öğrenimine göre hangisinin uygulanacağını bile seçebilir, ancak araştırıyorum.

    Son olarak, oyuncu görünümü dışındaki AI araçları için daha basit bir kontrole sahip olmanın da yararlı olabileceğini düşünün. Performans ya da Lastik Bantlama için (bu durumda AI arabalarını oyuncuyu yakın tutmak için yarışı ilginç tutmak için, herhangi bir rakibi gerçekten geride bırakamadığınızda AI hile olarak kabul edilebilir).


Animasyon hakkında, tekerlekler için fiziği bağımsız olarak simüle etmek genellikle iyi bir fikir değildir. Bunu yaparsanız, oyuna gerçekçilik katabilir, ancak performansa mal olacaktır. Genellikle oyun, tekerleklerin hareketi açısından davranışı ifade etmek ve sonuçlarını simüle etmek yerine davranışları temel alarak tekerlekleri canlandıracaktır.

Tabii ki, tekerleklerin zemine uygun olup olmadığı konusunda ek dikkat göstermeniz gerekebilir. Ve belki de süspansiyonun canlandırılması.


Bu harika bir cevap, çok teşekkür ederim.
dargemir

0

Araç fiziğini / durum modelini araç denetleyicisinden ayırmanızı ve AI aracısını ve oynatıcı denetleyicisini, sorunuzda önerdikleriniz gibi üst düzey komutlarla iki tür değiştirilebilir denetleyici haline getirmenizi şiddetle tavsiye ederim.

Bunun birkaç güzel etkisi vardır:

  • Hem oyuncu hem de yapay zeka için fizik / durum modelini bir kez uygulayabilir ve hata ayıklayabilirsiniz.
  • Fizik / durum modelinin yeni özellikleri hem oynatıcı hem de yapay zeka için hemen geçerlidir
  • Oyuncu ve AI arabaları, algılanan ve gerçek adaleti artıran piste sürekli olarak davranır (yarışçıları handikap etmek istiyorsanız, elbette arabalardaki parametreleri değiştirerek yapabilirsiniz)
  • Çeşitli çok oyunculu desteğin geliştirilmesi çok daha kolay hale gelir.

Bu, bu arada, MVC ayrımı için özel bir durumdur .


2
Bu yanıtı seviyorum, ama bu son ifade sadece saçma. Çıkarın ve benden bir noktanız var. Endişelerin Ayrılması ? - Kesinlikle. Ancak MVC, tam cevabınız bağlamında geçerli değildir.
Mühendis

1
Görüş yönünün soru veya cevapta tartışılmamasının yanı sıra, bunu neden MVC olarak çerçevelemenin saçma olduğunu düşünüyorsunuz?
Russell Borogove
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.