HTML5 Tabanlı Oyunlar için Yapay Zekâ Kütüphanesi: DignityAI – 1

0
401
dignity
dignity

Giriş

Dünyanın son yıllarda üzerine yoğunlaştığı, en yeni ve popüler teknolojilerden birisi de HTML5 ve WebGL’dir. Yine, son yıllarda ivmesini artırarak güçlenen oyun geliştirme konusu üzerine yapılan her araştırma da çok değerli bir konuma yükselmektedir. Tüm bunların yanında, büyük teknoloji şirketlerinin yakından ilgilendiği yapay zeka konusu da yükselen bu değerli araştırma konularının yanında belki de birinci sırada gösterilebilecek bir popülerliktedir. Bu durum başta Apple, Microsoft ve Google gibi teknoloji devlerinin birer birer yayınladıkları yapay zekalı kişisel asistanlarla daha da önem kazanmış durumdadır.

Bu çalışmada öncelikle, yapay zekanın bilgisayar oyunlarındaki tarihi ele alınarak, oyunlardaki yapay zeka sistemlerinin gelişimi ve kullanılan yapay zeka kütüphaneleri anlatılmıştır. Bu araştırma sırasında herhangi bir oyun motoruna bağımlı olmadan, tüm oyun motorlarına entegre edilebilen yapay zeka kütüphaneleri incelenmiştir. Fakat, HTML5 tabanlı oyunlar için kullanılabilecek böyle bir kütüphane olmadığı gözlemlenmiştir.  Bu noktada geliştirilen DignityAI kütüphanesi ilk olma özelliği taşımaktadır. Ayrıca, yapay zeka kütüphaneleri incelenirken geliştirilen her yapay zeka kütüphanesinin belli bir türe odaklandığı görülmüştür. Bu doğrultuda ise, oyun türleri ile yapay zeka ilişkisi üzerine de incelemeler yapılmıştır. Oyun türleri içerisinden aksiyon (FPS,TPS), rol yapma oyunu (RPG), gerçek zamanlı strateji (RTS), macera, platform, spor ve yarış türlerine odaklanılmıştır. Bu oyun türlerinde, sonlu durum makineleri (FSM), hiyerarşik yapay zeka,  mantıksal durum makineleri (FuSM), davranış ağaçları (behavior trees), yol bulma (path-finding), veriye dayalı sistemler (data driven systems) ve bulanık mantık (fuzzy logic) yapay zeka yöntemlerinin kullanıldığı görülmüş ve kısaca bilgi verilmiştir. 

Ardından, HTML5 ve WebGL’in gelişimi hakkında bilgi verilmiştir. Daha sonra, HTML5 oyun motorları incelenmiş, hem 2D hem de 3D oyun geliştirilebilecek, kararlı durumdaki ve en popüler olarak kullanılan oyun motorları ele alınmıştır. Construct 2, ImpactJS, PixiJS, PlayCanvas, Three.js, Phaser, Kiwi.js ve enchant.js incelenen oyun motorları arasındadır. Bu çalışma içerisindeki örnek oyun da PlayCanvas oyun motoru kullanılarak geliştirilmiştir.

Son olarak, bu çalışma kapsamında geliştirilen DignityAI yapay zeka kütüphanesinin genel yapısı ve tüm sınıfları hakkında bilgi verilmiştir. Ayrıca, bu kütüphane kullanılarak geliştirilen küçük bir oyun da çalışma sonun da sunulmuştur.

Literatür Taraması

Wexler (2002) çalışmasında, öncelikle bilgisayar oyunlarının tarihine giriş yapmış ve bilgisayar oyunlarında yapay zekanın gelişimini incelemiştir. Asıl irdelediği konu bilgisayar oyunlarında yapay zeka olmakla birlikte, Lionhead Studios’un oyunu Black and White’ın yeni yapay zeka sistemini ve oyunlarda yapay zekanın nerelere gidebileceğini incelemiştir.

Middleton (2002) çalışmasında, oyunlardaki yapay zekanın tarihini ve bilgisayar oyunlarının son 25 yıllık tarihindeki yapay zeka sistemlerinin gelişimini incelemiştir.  Çalışmasında 1950’lerde Alan Turing’in tasarladığı satranç yapay zekasından Garry Kasparov’u yenen Deep Blue bilgisayarına, ünlü RPG oyunu Dungeons&Dragons’dan, yine bir başka efsane RTS oyunu Dune II’ye, Age of Empires serisinden, Valve’ın FPS türündeki en popüler oyunu Half Life’daki yapay zeka sistemlerine kadar detaylı bir inceleme ve karşılaştırma yapmıştır.

Stall (2006) çalışmasında, sonlu durum makinelerini anlatmak için yaşadığı çok doğal bir örnek üzerinden ilerlemiş ve sonlu durum makinelerini çok açık bir şekilde anlatmıştır.

Schwab (2009) çalışmasında, AI (Yapay Zeka) oyun motoru geliştirmenin detaylarını, karar verme, girişler, navigasyon gibi basit bileşenlerden,  oyun türlerinin detaylı incelemesine ve bileşenlerine, sonlu durum makineleri, bulanık durum makineleri, mesajlaşma sistemleri gibi detaylı metot analizlerinden komple bir AI oyun motoru gelişimine kadar çok detaylı bir şekilde incelemiştir. Genetik algoritmalar, yapay sinir ağları, bulanık mantık, davranış ağaçları gibi bir çok üst düzey konuya da ayrıntılı olarak kitabında yer vermiştir.

Lubbers vd. (2011) çalışmalarında, HTML5’in temeli olan HTML ve XML’den şimdi HTML5’i oluşturan bileşenler Javascript ve CSS olmak üzere, HTML5 programlamanın detaylarına inmiştir. Ayrıca HTML5’in yaygın olarak kullanılan ve henüz geliştirilme aşamasında olan tüm API kütüphanelerini detaylıca incelemiş ve bu inceleme ile birlikte hangi API’ın hangi tarayıcı tarafından desteklendiğinin öğrenilebilmesi için güzel örnekler vermiştir.

Freeman (2011) çalışmasında, HTML5’i oluşturan Javascript ve CSS’i incelemiş ve bu teknolojileri kullanarak HTML5’in gücünü tam olarak kullanabilmek için detaylı bir rehber ortaya çıkarmıştır. HTML5’in programlama tarafına eğilerek, formlar, form doğrulama yöntemleri konularına değinmiş ve detaylı bir CSS kaynağı ortaya koymuştur.

Parisi (2012) çalışmasında, WebGL’in dünyasının kapılarını aralamış ve WebGL’in tarihi ve oluşumundan bu günlere nasıl geliştiğini anlatmıştır. Öncelikli olarak WebGL’e bir giriş yaparak daha sonra Three.js oyun motorunu kullanıp basit bir WebGL uygulaması geliştirmiştir. Grafikler, animasyonlar, 2D ve 3D ortamlar ile birlikte promosyon için WebGL’in kullanılmasına değinmiş ve örnek bir WebGL oyunu geliştirmiştir.

Rabin (2002) çalışmasında, RPG oyunlarında yeni bir yapay zeka yaklaşımı olan detay seviyesine (level of detail / LOD) bağlı yapay zeka tekniğini detaylıca anlatmıştır. Grafik programlamadaki bu tekniğin yapay zekaya uyarlanması ile birlikte sistemin hızlanmasını ve CPU yükünün azalmasını sağlayan etkin bir sistem olduğuna değinmiştir.

Compton vd. (2006) çalışmalarında, platform oyunlarındaki en ağır yapay zeka konularından birisi olan prosedürel bölüm tasarımı üzerine odaklanmışlar ve dört seviyeli bir metot geliştirerek bölüm tasarımı için yeni bir algoritma geliştirmişlerdir.

Bernie (2007) çalışmasında, yarış oyunlarındaki yapay zeka sistemlerini ele almış ve en çok kullanılan modelleri ile yeni nesil inovasyonlar olan araba modifikasyonu ve ayarlama yapay zeka sistemlerinin gelişimlerini anlatmıştır.

Ayrıca github.com üzerindeki bazı projeler de HTML5 oyunlarda yapay zekanın bazı bölümlerini işleyerek bu alandaki çalışmalar arasına eklenmiştir.

Gordon (2011) çalışmasında, Javascripty State Machine olarak isimlendirilen ve sonlu durum makineleri (FSM) üzerine odaklanmış bir framework sunmaktadır. 

Cowart (2012) çalışmasında, yine aynı sonlu durum makineleri  (FSM) üzerine odaklanmış olan Machine.js isimli projede davranış ağaçları oluşturma özellikleri sunmaktadır.

Xu (2011) çalışmasında, sadece yol bulma (path-finding) üzerine odaklanmış ve bir çok arama algoritmasını bünyesinde barındırarak bu alanda özelleşmiş en iyi projelerden birisi olan Pathfinding.js isimli projede incelenmiştir.

BİLGİSAYAR OYUNLARINDA YAPAY ZEKA OYUNLARDA YAPAY ZEKA’NIN TARİHİ

Bilgisayar oyunları, 1958’de ilk olarak Brookhaven National Laboratory’de araştırmacı olan William Higinbotham tarafından geliştirilen “Tennis for Two” isimli oyunla doğmuştur. William’ın geliştirdiği bu ilk oyun yalnızca bir osilaskop üzerinde oynanabilmekteydi. Bilgisayarlar üzerinde oynanan ilk oyun ise MIT’den Steve Russell tarafından geliştirilen “Spacewar” isimli oyundur. 1970’lere gelindiğinde ise gelecekte Atari’nin de kurucuları olacak olan Nolan Bushnell ve Ted Dabney, ilk video arcade oyunu olacak olan “Computer Space” isimli oyunu geliştirdiler. 1980’de ise ABD hükümeti askeri alanlarda eğitim amaçlı kullanılması için ilk 3 boyutlu oyun olan Battlezone’u geliştirdi ve bundan 4 yıl sonra yani 1984’de Nintendo oyun konsolu  piyasaya çıkarak bilgisayar oyunlarının ticari olarak evlere girmesini sağladı. Daha sonra Sony’nin PlayStation’ı almasıyla ve kişisel bilgisayarlarda bilgisayar oyunlarının yaygınlaşmasıyla birlikte bilgisayar oyunları çok büyük endüstri halini aldı. (Wexler, 2002)

Bilgisayar oyunlarında yapay zekanın tarihine bakıldığında ise öncelikle board game türündeki oyunların üzerinde doğduğu söylenebilir. Yapay Zeka’nın babaları olarak görülen Alan Turing ve Claude Shannon tarafından 1950’de satranç oyunu için yazılan yapay zeka bunun ilk örneği olarak gösterilir. 1952’de ise IBM’den Arthur Samuel tarafından geliştirilen “The Samuel Checkers-playing Program” isimli dama oyunu kendi kendine öğrenebilen ilk programı olarak kabul edilir ve yapay zekanın ilk örnekleri arasında kabul görmektedir. (Middleton, 2002)

1990’lara gelindiğinde ise artık bilgisayar oyunlarındaki yapay zeka kullanımı ve oyunların gelişen işlemci teknolojisi ile birlikte daha zeki sistemler olarak kurgulanması dönemi başlamıştır. “Turn-based Strategy / TBS” türündeki bir çok oyun (Satranç, Dama, Go vb.) yapay zekanın kullanıldığı ilk oyun türü olarak kabul edilmektedir ve bunu “Role-Playing Games / RPG” türü takip etmektedir. 1992’de Westwood Studios tarafından geliştirilen ve “Real-Time Strategy / RTS” türünün ilk örneği olarak kabul edilen Dune II oyunu piyasa çıkmış, yapay zekanın gerçek zamanlı hesaplamalar ve karar verme yapıları üzerine daha hızlı ve yeni algoritmalar üzerinde çalışması gerekliliği doğmuştur.

1998’de Valve’ın geliştirdiği “First-person shooter / FPS” türündeki Half-Life isimli oyun yapay zeka konusundaki inovatif oyunlardan birisi olarak sıyrılmaktadır. Half-Life üzerindeki en büyük yeniliklerden birisi, oyunlardaki yapay zekada kullanılan finite state machine (sonlu durum makinesi) olarak adlandırılan, sınırlı sayıda durum, durumlar arası geçiş ve eylemlerin birleşmesinden oluşan bir davranış modelinin kullanılmayıp, “schedule-driven state machine” olarak isimlendirilen yeni bir türün uygulanmasıdır.

1999’da ise Age of Empires II ve Unreal Tournament gibi oyunların çıkmasıyla birlikte zaten RPG, RTS ve FPS oyun türlerinde gelişen yapay zekanın daha da zeki “oyuncu olmayan karakterler” (NPCs) geliştirmenin gerekli olduğunu göstermiş ve günümüzdeki bir çok üst seviye özelliği kullanmaya kadar gelen süreci başlatmışlardır.

Günümüzde ise dinamik olarak yol bulma algoritmalarının üst seviyelere çıktığı, karakterlerin davranış ve izleme sensörlerinin daha hızlı tepki vererek insanlar gibi düşünüp davranmaya yaklaşmış oyun karakterlerinin yazılabileceği bir sisteme doğru ilerlenmektedir. İleride oluşturulan bir bilgisayar oyununda, yapay zekalı karakterlerin oyunu ele geçirdiği ve tüm insanlığın oyun içerisindeki yapay zekalı karakterleri yenebilmek için mücadele vereceği süper zeki NPC’ler ile geliştirilmiş oyunlar oluşturulabilecektir.

 

@berkanuslu

Facebook Yorumları