Son birkaç yılda Yapay Zeka konusunda bir çok ilerleme kaydedildi ve sık sık gündemde kendine yer buldu. Yapay Zeka konusu haberlere yansımayan birçok alanda da hayatımızın bir parçası haline gelmiş durumda. Diğer alanlara değinmek yerine, bu yazıda bizi en çok ilgilendiren, oyunlarda kullanılan Yapay Zeka tekniklerine bir göz atacağız.
Konunun derinliklerine dalmadan önce belirtmek istediğim birkaç konu var. Öncelikle Yapay Zeka denildiği zaman aklınıza tek bir yöntem, tek bir kod grubu veya tek bir matematik formülü gelmesin. Yapay zeka başlığındaki karşılaştığımız her bir konuda farklı bir algoritma kullanılmakta. Zaten bu Yapay Zeka alanın geliştirilmesinin amacı geleneksel yöntemlerle çözülemeyen problemleri çözmek. Bu yöntemlerden en yaygınlarına derin öğrenme, yapay sinir ağları ve genetik algoritmalar örnek verilebilir.
Belirtmek istediğim diğer konu ise “Bilimin farklı kollarında bu kadar gelişmiş yapay zeka örnekleri ile karşılaşırken, neden milyon dolarlar harcanan oyunlardaki yapay zekalar vasat derecede oluyor?”. Oyun geliştirme sürecinde, yapay zeka kısmına az önem veriliyor. Bu yüzden muhteşem grafikler gördüğümüz oyunlarda düşmanlar vasat seviyede davranışlar sergileyebiliyorlar. Yapımcıların böyle davranmasının en büyük nedeni, doğru çalışan bir sistemin geliştirilmesinin çok zaman alması. Buna rağmen oyunlarını yapay zeka yönünden geliştirmeye özen gösteren birkaç firma da yok değil.
Oyunlardaki yapay zekanın gelişim tarihine de bakacak olursak, başlangıçta hamle tabanlı oyunlardaki uygulamalarından günümüzdeki üç boyutlu dünyalarda hareket edebilen ve kalabalık topluluklarda insan yaşamını simüle eden örneklerine çeşitli oyunlarda karşılaşıyoruz. Yaptığım araştırmalar sırasında ise Black & White isimli oyunda kullanılan sisteme denk geldim ve hayran kaldım. Oyundaki yaratığın öğrenme mekaniğinde kullanılan yöntem çok başarılı.
Kural Tabanlı Yapay Zeka
Oyunlarda, bilgisayar kontrolündeki karakterlerin hareketlerinin belirli kurallara göre gerçekleştirilmesi yöntemi. Bu yöntem için Sonlu Durum Makineleri (Finite State Machine) ve Bulanık Durum Makineleri (Fuzzy State Machine) yöntemleri yaygın olarak kullanılıyor.
Bu sistemin çalışmasına örnek vermek gerekirse, askerin sağlık durumuna, düşmanın mesafesine göre bir durumdan başka duruma geçmesini sağlıyor. Bu sisteme ne kadar fazla parametre eklenirse o kadar zengin bir davranış modeli olur. Parametreler artmasıyla sayısal değerlerin doğru ayarlanması işi de gittikçe zorlaşmaktadır.
Sonlu Durum Makineleri’ninbir üst modeli de Bulanık Durum Makineleri’dir. Burada durumlar arası geçişler kesin mantıksal ifadelere dayanmadığı için daha tahmin edilemez; insan mantığına daha uygun davranışlar elde edilir.
Yol Bulma
Yol bulma, oyuncunun veya bilgisayarın isteğiyle karakterlerin bir yerden başka yere hareket ederken gerçekleştirdiği davranışlardır. Günümüzde her oyunda bu soruna biraz rastlıyoruz. Özellikle strateji oyunlarının yaygınlaşmaya başladığı zamanlarda bu sorun daha da can sıkıcıydı.
Yapılan çalışmalar sonucunda bu sorunun çözümü için en uygununun A* (A Star) algoritmasının olduğuna karar verilmiştir. Bu yöntemin üç boyuta uygulanmasıyla da D* algoritması üretilmiştir. Günümüz oyunlarında ne kadar yaygın olarak kullanılsa da başarısız olduğu durumlarda olabiliyor. Algoritmanın detaylarına girmeyeceğim ama isteyenler ayrıntılarına buradan ulaşabilir.
Sürü Hareketi
Sürü hareketi birçok nesnenin veya karakterin bir noktaya doğru hareket etmesiyle oluşuyor. Bu hareketin gerçeğe yakın olarak canlandırılması çok zor olarak biliniyordu. Ancak ortaya atılan bir algoritmayla basitçe çözüldü.
Algoritmaya göre sürüyü oluşturan nesneler üç kuralı gerçekleştiriyor:
Yapay Yaşam
Özellikle Sims gibi oyunlarla gündeme gelen bu konu oldukça ilgi çekti. Genellikle genetik algoritmalar kullanılarak gerçek hayat bilgisayarda modellenmeye çalışılmıştır. Yapay yaşamda karakterler oyuncunun müdahaleleriyle ortama göre farklı özellikler elde ediliyor ve tecrübe kazanıp öğrenme işlemi gerçekleşiyor.
Bu işlemin daha kolay olması için oyunun geçtiği ortam ona uygun şekilde tasarlanmıştır. Ortamdaki nesneler yayın yapma özelliğine sahipler. Örneğin, mutfak belli bir alanda doyma sinyali yayar. Bunun alanına giren karakter buzdolabının yaydığı yemek sinyalini alır ve senaryo bu şekilde ilerler. Diğer yaşam alanları da bu şekilde tasarlandıktan sonra bir bütün olarak yaşam modelinden bahsedilebilir.
AI Yazılımları
Belli başlı tekniklerden bahsettikten sonra birazda bunların geliştirilmesinde kullanılan Yapay Zeka geliştirme araçlarından bahsetmek istiyorum. Extensible AI ve Game AI SDK bunlardan birkaçıdır.
Extensible AI özellikle Quake, Half Life gibi FPS oyunlarında bilgisayar kontrollü düşman karakterlerin davranışlarını tasarlamada kullanılan bir tür script dilidir. Bazı RPG oyunlarında da kullanılmıştır. SDKlar arasında ise durum makineleri kolaylaştıran Direct IA ve Spark! yazılım aracı geliştirilmiştir.
Araştırmaya başladığınızda bu konular biraz sıkıcı gelebilir. Ancak bir yapım ne kadar güzel hikayeye sahip olursa olsun, dünyasındaki yaşamlar gerçekçilikten uzak, saçma sapan olursa o hikayesini bize güzelce aktaramaz. Sonuçta hangimiz savaşamayan bir droid veya toplu hücum yapamayan süvarileri oyunda görmek ister.
Konunun derinliklerine dalmadan önce belirtmek istediğim birkaç konu var. Öncelikle Yapay Zeka denildiği zaman aklınıza tek bir yöntem, tek bir kod grubu veya tek bir matematik formülü gelmesin. Yapay zeka başlığındaki karşılaştığımız her bir konuda farklı bir algoritma kullanılmakta. Zaten bu Yapay Zeka alanın geliştirilmesinin amacı geleneksel yöntemlerle çözülemeyen problemleri çözmek. Bu yöntemlerden en yaygınlarına derin öğrenme, yapay sinir ağları ve genetik algoritmalar örnek verilebilir.
Belirtmek istediğim diğer konu ise “Bilimin farklı kollarında bu kadar gelişmiş yapay zeka örnekleri ile karşılaşırken, neden milyon dolarlar harcanan oyunlardaki yapay zekalar vasat derecede oluyor?”. Oyun geliştirme sürecinde, yapay zeka kısmına az önem veriliyor. Bu yüzden muhteşem grafikler gördüğümüz oyunlarda düşmanlar vasat seviyede davranışlar sergileyebiliyorlar. Yapımcıların böyle davranmasının en büyük nedeni, doğru çalışan bir sistemin geliştirilmesinin çok zaman alması. Buna rağmen oyunlarını yapay zeka yönünden geliştirmeye özen gösteren birkaç firma da yok değil.
Oyunlardaki yapay zekanın gelişim tarihine de bakacak olursak, başlangıçta hamle tabanlı oyunlardaki uygulamalarından günümüzdeki üç boyutlu dünyalarda hareket edebilen ve kalabalık topluluklarda insan yaşamını simüle eden örneklerine çeşitli oyunlarda karşılaşıyoruz. Yaptığım araştırmalar sırasında ise Black & White isimli oyunda kullanılan sisteme denk geldim ve hayran kaldım. Oyundaki yaratığın öğrenme mekaniğinde kullanılan yöntem çok başarılı.
Kural Tabanlı Yapay Zeka
Oyunlarda, bilgisayar kontrolündeki karakterlerin hareketlerinin belirli kurallara göre gerçekleştirilmesi yöntemi. Bu yöntem için Sonlu Durum Makineleri (Finite State Machine) ve Bulanık Durum Makineleri (Fuzzy State Machine) yöntemleri yaygın olarak kullanılıyor.
Bu sistemin çalışmasına örnek vermek gerekirse, askerin sağlık durumuna, düşmanın mesafesine göre bir durumdan başka duruma geçmesini sağlıyor. Bu sisteme ne kadar fazla parametre eklenirse o kadar zengin bir davranış modeli olur. Parametreler artmasıyla sayısal değerlerin doğru ayarlanması işi de gittikçe zorlaşmaktadır.
Sonlu Durum Makineleri’ninbir üst modeli de Bulanık Durum Makineleri’dir. Burada durumlar arası geçişler kesin mantıksal ifadelere dayanmadığı için daha tahmin edilemez; insan mantığına daha uygun davranışlar elde edilir.
Yol Bulma
Yol bulma, oyuncunun veya bilgisayarın isteğiyle karakterlerin bir yerden başka yere hareket ederken gerçekleştirdiği davranışlardır. Günümüzde her oyunda bu soruna biraz rastlıyoruz. Özellikle strateji oyunlarının yaygınlaşmaya başladığı zamanlarda bu sorun daha da can sıkıcıydı.
Yapılan çalışmalar sonucunda bu sorunun çözümü için en uygununun A* (A Star) algoritmasının olduğuna karar verilmiştir. Bu yöntemin üç boyuta uygulanmasıyla da D* algoritması üretilmiştir. Günümüz oyunlarında ne kadar yaygın olarak kullanılsa da başarısız olduğu durumlarda olabiliyor. Algoritmanın detaylarına girmeyeceğim ama isteyenler ayrıntılarına buradan ulaşabilir.
Sürü Hareketi
Sürü hareketi birçok nesnenin veya karakterin bir noktaya doğru hareket etmesiyle oluşuyor. Bu hareketin gerçeğe yakın olarak canlandırılması çok zor olarak biliniyordu. Ancak ortaya atılan bir algoritmayla basitçe çözüldü.
Algoritmaya göre sürüyü oluşturan nesneler üç kuralı gerçekleştiriyor:
- Komşularla ve engeller çarpışmadan kaçınmak
- Hız ve doğrultuyu komşularla benzer seviyede tutmak
- Komşulara yakın durmaya çalışmak
Yapay Yaşam
Özellikle Sims gibi oyunlarla gündeme gelen bu konu oldukça ilgi çekti. Genellikle genetik algoritmalar kullanılarak gerçek hayat bilgisayarda modellenmeye çalışılmıştır. Yapay yaşamda karakterler oyuncunun müdahaleleriyle ortama göre farklı özellikler elde ediliyor ve tecrübe kazanıp öğrenme işlemi gerçekleşiyor.
Bu işlemin daha kolay olması için oyunun geçtiği ortam ona uygun şekilde tasarlanmıştır. Ortamdaki nesneler yayın yapma özelliğine sahipler. Örneğin, mutfak belli bir alanda doyma sinyali yayar. Bunun alanına giren karakter buzdolabının yaydığı yemek sinyalini alır ve senaryo bu şekilde ilerler. Diğer yaşam alanları da bu şekilde tasarlandıktan sonra bir bütün olarak yaşam modelinden bahsedilebilir.
AI Yazılımları
Belli başlı tekniklerden bahsettikten sonra birazda bunların geliştirilmesinde kullanılan Yapay Zeka geliştirme araçlarından bahsetmek istiyorum. Extensible AI ve Game AI SDK bunlardan birkaçıdır.
Extensible AI özellikle Quake, Half Life gibi FPS oyunlarında bilgisayar kontrollü düşman karakterlerin davranışlarını tasarlamada kullanılan bir tür script dilidir. Bazı RPG oyunlarında da kullanılmıştır. SDKlar arasında ise durum makineleri kolaylaştıran Direct IA ve Spark! yazılım aracı geliştirilmiştir.
Araştırmaya başladığınızda bu konular biraz sıkıcı gelebilir. Ancak bir yapım ne kadar güzel hikayeye sahip olursa olsun, dünyasındaki yaşamlar gerçekçilikten uzak, saçma sapan olursa o hikayesini bize güzelce aktaramaz. Sonuçta hangimiz savaşamayan bir droid veya toplu hücum yapamayan süvarileri oyunda görmek ister.