Bilgisayar bilimleri alanında yenilikçi bir çalışma ile karşı karşıyayız. Bir bilgisayar bilimcisi, yalnızca "saf SQL" kullanarak klasik DOOM oyununu anımsatan çok oyunculu bir yapay zeka oyunu geliştirdi. Yaklaşık 150 satır Python koduyla oluşturulan bu birinci şahıs nişancı oyunu, DOOMQL adını taşıyor.
Belirtilen yazılım kısıtlamalarına rağmen, veritabanı performansı üzerine çalışan bir firmanın kurucu ortağı olan Lukas Vogel, DOOMQL'nin akıcı bir şekilde saniyede yaklaşık 30 kare (FPS) hızında çalıştığını belirtiyor. Elbette, bu grafiksel olarak en etkileyici DOOM benzeri oyun değil.
Vogel'in SQL tabanlı DOOM hayalleri, Patrick Trainer'ın DuckDB-DOOM projesinden ilham aldı. Trainer'ın projesi de SQL ile birinci şahıs nişancı oyunu geliştirmeyi amaçlıyordu. Ancak Trainer'ın kodu, tarayıcıda WebAssembly kullanarak tek bir web sayfasında çalışıyor ve ayrıca grafik oluşturma (rendering) ile girişler (inputs) için JavaScript kullanıyor.
DOOMQL ve DuckDB-DOOM arasındaki diğer önemli farklar şunlardır: DOOMQL, çok oyunculu bir yapıya sahip ve hem grafik oluşturma hem de giriş işlemleri için SQL kullanıyor. Oyun, 128 x 64 piksel çözünürlükte saniyede yaklaşık 30 FPS hızında çalışıyor. Vogel, Trainer'ın çabalarına saygı duyduğunu belirterek, "Grafik oluşturma hattının bir kısmının JavaScript ile yapılması hile gibi hissettiriyordu" diyor. Bu "hileye" rağmen, DuckDB-DOOM klonu yalnızca yaklaşık 8 FPS hızında çalışıyor ve daha düşük bir çözünürlük kullanıyor. Vogel'in bu başarısını daha da etkileyici kılan şey, DOOMQL'yi çocuk izni sırasında, yani bir ay gibi kısa bir sürede kodladığını iddia etmesi.
Vogel'in SQL tabanlı DOOM oyununun derinliklerine inmek için ilgili blog yazısını inceleyebilir ve kodunu GitHub üzerinden kontrol edebilirsiniz. Oyunun mimarisine üst düzey bir bakış atmak isterseniz, şu temel noktaları göz önünde bulundurabilirsiniz:
- Oyunun durumu (state), tablolar içinde tutuluyor (harita, oyuncular, düşmanlar, girişler, ayarlar, karakterler vb.).
- Grafik oluşturma, ışın izleme (raycasting) ve karakter projeksiyonu uygulayan SQL görünümlerinden oluşan bir yığın (stack).
- Oyun döngüsü, saniyede yaklaşık 30 kez bir SQL dosyasını çalıştıran küçük bir kabuk betiği (shell script).
- İstemci (client), yaklaşık 150 satır Python kodundan oluşuyor: Girişleri alıyor ve veritabanından 3D görüntünüzü sorguluyor.
Vogel, oyun mantığını ve durum yönetimini uygulamak için SQL hakkında çok şey öğrendiğini ve çabaları sonucunda "şaşırtıcı derecede zarif bir oyun döngüsü" ortaya çıktığını belirtiyor. Performans da daha önce bahsedildiği gibi memnun edici bir düzeyde. Vogel, okuyucuları DOOMQL'yi oluşturmaktan daha hızlı bir veritabanı sistemi bulmaya davet ediyor.
DOOMQL'yi kendiniz denemek isterseniz, GitHub deposunu ziyaret edebilirsiniz. Tüm dosyaları indirdikten sonra, Docker ve Python kullanarak yerel olarak çalıştırabilirsiniz. MIT Lisansı sayesinde kod üzerinde dilediğiniz gibi değişiklik yapabilir ve oyunu inceleyebilirsiniz. Vogel, yakın gelecekte oyuna bazı iyileştirmeler eklemeyi planladığını da belirtiyor. Özellikle "güçlendirmeler, farklı silahlar ekleme, karakter görsel sistemini iyileştirme, daha iyi bir istemci, yapay zeka kontrollü rakipler" gibi özelliklerden bahsediyor.