Yapay zeka hafife alınmaması gereken bir konudur. Yapay zeka kodunuz ne kadar karmaşık olursa, oyununuzdaki karakterler o kadar gerçekçi, oyununuz da o kadar iyi olur. Diğer taraftan daha basit bir kod oyununuzu daha basit ama daha az ilgi çekici yapar. Yapay zeka genel anlamda çok karışık bir konudur, üniversitelerde master dersi olarak okutulmaktadır.
Yapay zeka hemen hemen tüm oyunlar için önemlidir; pek azı bunsuz da işini görebilmektedir. Bilgisayar oyunları anlatan dergilerindeki yorumlarda oyunun yapay zekası üzerine de puanlamalar görürsünüz.
Peki Yapay Zeka nedir?
AI kısaca oyununuzdaki düşman karakterlerini , Quake oyunlarında olduğu gibi gerçek bir insanla oynuyormuşçasına daha akıllı, gerçekçi yapmaya yarayan program komutlarıdır. Bunun pek de zor bir iş olmadığını düşünüyorsanız yanılıyorsunuz demektir. Bir kaç dakika ayırın ve normal hayatta kendi yaptığınız hareketlere karar verirken nasıl bir mantık izlediğinizi düşünün; sandığınızdan çok daha fazla etken var.
Başlayalım
Önce bir büyükçe bir kağıtla kalem alın, korkunç planlar yapacaksınız. Her karakter tipi için bir mantık ağacı tasarlayın ve değişik durumlarda nasıl davranacağını belirleyin. Örneğin bir first person shooter oyununu ele alalım:
Kötü adamımız oyuncunun arkasından kovalıyor. Oyuncunun bir odada girdiğini görüyor.
- Adamımız içeri giriyor mu, bekliyor mu?
İçeri giriyor, oda tamamen karanlık.
- Adamımız endişeleniyor mu? Savunmaya mı geçiyor, yoksa afallıyor mu? Arkadaşlarını çağırmaya gidiyor mu? Işıkları bulabiliyor mu?
İçeri giriyor.
- Hangi silahı seçiyor? Geniş alana etkili olanı mı (örn. el bombası) yoksa bir tabanca mı?
Aniden oyuncu saldırıyor.
- Adamımız kaçıyor mu, saldırıyor mu?
Saldırıyor.
- Oyuncuyu görebiliyor mu?
Hayır, o zaman yer değiştiriyor. Oyuncu adamımızın enerjisinin %90'ını götürüyor.
- Adamımız kaçıyor mu, saldırıyor mu?
Kaçıyor.
Bu aşırı derecede kolay örnekte 6 seçim yaptık. 10'larca, ya da oyununuza göre 100'lerce, seçimi gözden geçirmeniz gerekebilir. Kağıdınıza adamlarınızın hangi durumda nasıl davranacağını yazın.
Biraz Matematik
En basit seviyede, olasılık kullanacağız (daha sonra). Bir olasılık tablosu oluşturarak hangi ihtimal daha fazla ona karar vereceğiz. Eğer her olasılık eşit olsaydı ve her şey tek bir tabloda olsaydı, adamımızın başı dertteydi.
Saldır = % 25
Kaç = % 50
Yardım Çağır = % 15
Afalla = % 10
Bu basit tabloyu kullanarak adamımıza rasgele hareketler yaptırabiliriz. Bu tablodan anlaşılacağı gibi adamımız kaçmaya meyilli.
Diğer bir soru "yeni güncelleme ne zaman yapılacak?". Adamımız ne zaman içinde bulunduğu durumu yeniden gözden geçirecek? Eğer oyuncuyu kovalıyorsa yer değiştirdiği her an bunu yapmalıdır.
Örneğin ne zaman ateş açacağına karar verme işini çok sık yapmamalıdır. Adamınız ne kadar çok karar verirse o kadar değişken ve tutarsız davranışlar gösterir. Örneğin saniyede 20 kere bir seçim yapıyorsa, bir saniyede adamınız bir adım atar bir ateş eder, oraya buraya koşturur, gerçek dışı, çılgınca hareketler yapar. Bunun için kurallar koymanız gereklidir. "Adam ne zaman kımıldayacak", "ne zaman ateş açacak" vb.