Doom’un duvarlarını, zeminlerini ve tavanlarını bu kez bir SQL sorgusu çiziyor. Geliştirici Lukas Vogel’ın SQLDoom adını verdiği projede CedarDB veritabanı, oyun verilerini saklamanın ötesine geçerek oyun mantığını ve görüntü üretimini de üstlenmiş.
İşin merkezinde, 89 ortak tablo ifadesine (CTE) yayılan yaklaşık 1.300 satırlık bir SQL sorgusu var. Oyun geometrisi ve mevcut durum veritabanı tablolarında takip edilirken, küçük bir Python istemcisi girdi, çıktı ve ekran zamanlamasını kontrol ediyor. Sistem, görüntülerin oluşturulduğu arka tamponu saniyede 35 kare hızında üretebiliyor.
Vogel’ın geçen yıl hazırladığı DoomQL ile arasındaki fark, ekrana bakınca hemen anlaşılıyor. Önceki proje gri tonlamalı ASCII grafiklerle sınırlıydı ve Wolfenstein 3D’yi andıran basit harita yapılarına sahipti. SQLDoom ise orijinal oyunun görünümüne benzeyen, 640x480 piksel çözünürlükte tam renkli görüntüler oluşturabiliyor.
Doom haritaları veritabanına nasıl taşındı?
Oyunun WAD dosyalarını ilişkisel veritabanına aktarmak, yapıları nedeniyle nispeten kolay bir adım olmuş. Doom haritalarının köşe noktaları, çizgiler ve sektörlerden oluşması, bu bilgilerin tablolara yerleştirilmesine uygun bir temel sunmuş.
Görüntü üretimini hızlandıran ayrıntılardan biri, yükleme sırasında önceden hesaplanan sıralama anahtarları. Bunlar sayesinde her karede duvarların hangi bölümlerinin görüneceğini belirlemek için basit bir sıralama komutu yeterli. Zemin ve tavan kaplamalarında ise orijinal oyunun durum değişim modelleri yerine, panellerin sıralı listesi üzerinden ilerleyen özel algoritmalar kullanılmış.
Dizüstü bilgisayarda 60 FPS
Veritabanına veri yazıp okumanın ek yüküne rağmen SQLDoom, Ryzen 7 işlemcili bir dizüstü bilgisayarda saniyede 60 kareye ulaşabiliyor. Yoğun sahnelerde hız 35 FPS’ye kadar düşüyor.
Veritabanı yapısının çok oyunculu sunucular açısından da avantajları var. Kararlı durum anlık görüntüleri ve eşzamanlı erişim yönetimi, fizik hatalarıyla veri uyuşmazlıklarının önüne geçmek için kullanılabiliyor.
Projenin kodları açık olarak paylaşılmış durumda. Denemek isteyenlerin bilgisayarlarında CedarDB veritabanının yanı sıra Doom’a ait WAD dosyalarını da bulundurması gerekiyor.