HERSEY BURDA

HERSEYİ BULABİLDECEĞİN TEK ADRES
 
AnasayfaTakvimSSSAramaÜye ListesiKullanıcı GruplarıKayıt OlGiriş yap
Arama
 
 

Sonuç :
 
Rechercher çıkıntı araştırma
En son konular
» free slot machines win cash
Çarş. Ağus. 03, 2011 3:57 am tarafından Misafir

» watch naruto hentai watch naruto hentai free
Çarş. Ağus. 03, 2011 3:52 am tarafından Misafir

» major fish oil
Salı Ağus. 02, 2011 10:26 pm tarafından Misafir

» hentai about hentai academy
Salı Ağus. 02, 2011 10:10 am tarafından Misafir

» гинекология ответы
Ptsi Ağus. 01, 2011 9:18 am tarafından Misafir

» x-Hack hack you
Ptsi Ağus. 01, 2011 8:00 am tarafından Misafir

» When the first Whirlpool Duet album was released in December 2001
Ptsi Ağus. 01, 2011 3:05 am tarafından Misafir

» women at work hentai online women at work hentai stream
Ptsi Ağus. 01, 2011 2:56 am tarafından Misafir

» facebook likes xb
Paz Tem. 31, 2011 9:22 am tarafından Misafir

Tarıyıcı
 Kapı
 Indeks
 Üye Listesi
 Profil
 SSS
 Arama
Forum
HABERLER
Fikri Türkel köşe yazıları

Paylaş | 
 

  Oyunlar İçin Yapay Zeka Teknikleri 1

Aşağa gitmek 
YazarMesaj
Admin
Admin


Mesaj Sayısı : 3361
KULLANICI PUANLARI : 9918
Kayıt tarihi : 16/05/10

MesajKonu: Oyunlar İçin Yapay Zeka Teknikleri 1   Ptsi Haz. 28, 2010 5:27 pm

1
Oyunlar İçin Yapay Zeka Teknikleri 1 : Dolaşan AI
29.Ağustos.2009 Kategori: Oyun geliştirme Yapay Zeka
Michael Morrison’un Game Programming kitabında dikkatimi çeken bir kısmı burada birkaç parça halinde paylaşmak istiyorum. Her ne kadar çok kapsamlı değilse bile, basit oyunlara nasıl yapay zeka ekleyeceğinizi anlayabilirsiniz. Bu da en azından bir başlangıç olur.
Oyun AI Türleri
Çok farklı türlerde AI sistemleri ve bu sistemleri tamamlayan özel algoritmalar vardır. Yapay zekayı sadece oyun dünyasıyla sınırlandırsanız bile, çok sayıda seçenek ve bilgi kümesiyle karşılaşacaksınız. Bazı yapay zeka çözümleri, belirli oyun türleri üzerinde daha sık kullanılır. Farklı durumlara uygulanabilen çok sayıda farklı seçenek vardır. Oyunlarla ilgili yapay zeka algoritmaları 3 temel türe ayrılabilir;
Dolaşan AI (Roaming AI)
Davranışsal AI (Behavioral AI)
Satratejik AI (Strategic AI)
Bu 3 yapay zeka algoritması türünün, oyunlarda kullanılan yaklaşımları tümüyle kapsadığını düşünmeyin. Sadece anlaşılması ve kullanımı kolay, genel üç türü temsil ediyorlar.
Dolaşan AI
Dolaşan AI, oyun nesnelerinin hareketini modeller. Bu da oyun nesnelerinin sanal bir oyun dünyasında nasıl dolaşacaklarına karar vermesi anlamına gelir. Klasik arcade oyunu Galaga gibi sjoot-em-up uzay oyunları dolaşan AI’ye bir örnektir. Bu tür oyunlarda uzaylılar genelede oyuncunun peşinden giderler.
Temel olarak, bilgisayar kontrolündeki bir nesnenin, yolunu değiştirmek için bir karak vermesi gerektiğinde dolaşan AI kullanılır. Nesne, oyun içinde istenilen bir sonuca ulaşmak veya belirli bir hareket şeklini izlemek için yolunu değiştirebilir. Galaga örneğinde istenilen sonuç, oyuncunun gemisine çarpışmak ve ona zarar vermek için izlenecek yoldur.
Dolaşan AI’nin uygulanması oldukça kolaydır; başka bir nesnenin (oyuncunun gemisi) konumuna göre bir nesnenin (uzaylı) hızı veya konumu değiştirilir. Nesnenin gezinim hareketi, rastgele veya önceden belirkenmiş modellerden etkilenebilir. Üç farklı dolaşan AI türü vardır : Kovalama (chasing), kaçma (evading) ve şablonlu (patterned). Şimdi bu dolaşam AI türlerini daha detaylı inceleyelim.
Kovalama
Kovalama, bir oyun nesnesinin başka bir oyun nesnesi veya nesnelerini izleyip, onların arkasından gittiği türdür. Kovalama, bir uzaylının oyuncunun gemisini takip ettiği shoot-em-up oyunlarının çoğunda kullanılan bir yaklaşımdır. Oyuncunun gemisinin geçerli konumuna göre, uzaylının hızı veya konumu değiştirilerek uygulanır. Aşağıdaki örnek br uzaylı ve bir gemi içeren basit bir algoritmadır.
1
if (iXAlien && iXShip)
2
iXAlien--;
3
else if (iXAlien && iXShip)
4
iXAlien++;
5
if (iYAlien && iYShip)
6
iYAlien--;
7
else if (iYAlien && iYShip)
8
iXAlien++;
Gördüğünüz gibi uzaylının XY konumu (iXAlien ve iYAlien), geminin konumuna göre (iXShip ve iYShip) değiştiriliyor. Bu kodun tek potansiyel sorunu fazla iyi çalışıyor oluşudur. Uzaylı büyük bir azimle oyuncuya saldıracak ve ona kurtuluş şansı vermeyecektir. Bu kovalama algoritmasını düzeltmenin bir yolu eşitliğe biraz rastgelelik eklemek olabilir.
01
if ((rand() % 3) == 0) {
02
if (iXAlien && iXShip)
03
iXAlien--;
04
else if (iXAlien && iXShip)
05
iXAlien++;
06
}
07

08
if ((rand() % 3) == 0) {
09
if (iYAlien && iYShip)
10
iYAlien--;
11
else if (iYAlien && iYShip)
12
iXAlien++;
13
}
Bu kodda uzaylı 3′te 1 şansla oyuncuyu her yönde kovalar. Üçte bir şans fazla verimli görünmeyebilir ama unutmayın, uzaylı sadece oyuncuyu kovalamak için yolunu değiştirecektir. Akıllı bir oyuncu bunu farkedecek ve sıkça yönünü değiştirecektir.
Kaçma
Kaçma kovalamanın mantıksal tersidir. Bu türde, bir oyun nesnesi diğer nesne veya nesnelerden kaçmaya çalışır. Örnek;
1
if (iXAlien && iXShip)
2
iXAlien++;
3
else if (iXAlien && iXShip)
4
iXAlien--;
5
if (iYAlien && iYShip)
6
iYAlien++;
7
else if (iYAlien && iYShip)
8
iXAlien--;
Bu kodda temel olarak kovalama algoritmasının tersi kullanılır. Kovalamada olduğu gibi kaçmada da rastgelelik ile etki yumuşatılabilir. Bu klasik arcade oyunu Pac-Man’deki hayaletler için kullanılan koda benzer. Oyuncu güç hapı yuttuğu anda hayaletler ondan kaçmaya başlarlar.
Kaçma algoritmasının başka bir kullanımı da demolardır. Örneğin bir uzay oyununun demo kipini çalıştırdığınızda, bilgisayar kendi başına oynamaya başlar ve diğer nesnelerden kaçmaya başlar. Aslında normal bir oyuncuda uzaylılardan kaçmak için klavye tuşlarıyla kaçma algoritması kullanır.
Şablonlu Dolaşım
Şablonlu hareket, bir oyun nesnesi için önceden tanımlı bir hareketler kümesi kullanan dolaşan AI türüdür. Şablonlu harekete örnek olarak klasik Galaga oyunundaki uzaylılar verilebilir. Uzaylılar ekranda aşağı doğru inerlerken çeşitli akrobatik hareketler sergilerler. Şablonlar daireler, zigzaklar veya daha karmaşık hareketlerden meydana gelebilirler. Space Invaders oyunu şablonlu hareketlere daha basit bir örnektir; bir uzaylı sürüsü yavaşça ve düzenli olarak aşağı doğru iner.
Şablonlar genellikle şablonlu harekete ihtiyaç duyulduğunda bir nesneye uygulanan bir hız veya konum ötelemeleri (çarpanları) dizisinde depolanırlar:
1
int iZigZag[2][2] = { { 3, 2 }, { -3, 2 } };
2
iXAlien += iZigZag[iPatternStep][0];
3
iYAlien += iZigZag[iPatternStep][1];
Bu kod, oldukça basit dikey bir zikzak şablonunun nasıl uygulandığını gösteriyor. Tamsayı dizisi iZigZag, uzaylıya uygulanacak XY öteleme çiftlerini içeriyor. iPatternStep değişkeni, şablondaki geçerli adımı temsil eden bir tamsayıdır. Bu şablon uygulandığında uzaylı, oyun döngüsü başına 2 piksel hızında dikey yönde hareket ediyor ve oyun döngüsü başına 3 piksel hızla yatay zikzaklar çiziyor.
Bir sonraki yazıda Davranışsal AI’yi masaya yatıracağız.
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör http://dessas.yetkinforum.com
 
Oyunlar İçin Yapay Zeka Teknikleri 1
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
HERSEY BURDA :: OYUN PROGRAMLAMA :: OYUN PROGRAMLAMA-
Buraya geçin: