Mercek360 gündemi taradı - AI dünyasında yeni başlıklarApple Vision Pro 2 tanıtıldı - Daha hafif, daha güçlüNVIDIA Blackwell Ultra - Yapay zeka performansı yükseliyorTürk AI startup'ı 50M$ yatırım aldıRust 2.0 yolda - Bellek güvenliği yeni seviyede
Mercek360
Ana SayfaYazılım & Güvenlik

SQL Veritabanında Doom Çalıştırmayı Başardılar: İmkansız Projenin Perde Arkası

Ozan Tankuş3 Ekim 20260 görüntülenme
Paylaş:WhatsApp'ta PaylaşPaylaş
SQL Veritabanında Doom Çalıştırmayı Başardılar: İmkansız Projenin Perde Arkası
30 Saniyede Özet
Hızlı Bakış
  • Yazılım dünyasının sınırlarını zorlayan bir geliştirici, ikonik Doom oyununu tamamen SQL veritabanı sorguları üzerinden çalıştırmayı başardı.
  • SQLDoom adı verilen bu sıra dışı proje, ilişkisel veritabanlarının oyun mantığı ve render işlemlerindeki potansiyelini gözler önüne seriyor.

Teknoloji dünyasında sınırları zorlayan çılgın projeler denildiğinde akla ilk gelen efsanevi oyun Doom, bu kez yazılım mühendisliğinin en beklenmedik alanlarından birinde karşımıza çıkıyor. "Doom'u her şeyde çalıştırmak" (It runs Doom) felsefesi, mikrodalga fırınlardan diş fırçalarına, ATM'lerden osiloskop ekranlarına kadar uzanan geniş bir yelpazede yıllardır sürdürülüyor. Ancak bağımsız bir geliştirici olan Lukas Vogel, işi bambaşka bir boyuta taşıyarak Doom'u doğrudan bir ilişkisel veritabanı içinde, saf SQL sorgularıyla hayata geçirmeyi başardı. SQLDoom adı verilen bu proje, veritabanı mimarisinin ve sorgu dillerinin karmaşık oyun motoru mantığıyla nasıl harmanlanabileceğini kanıtlayan eşsiz bir teknik vaka çalışması olarak teknoloji literatürüne girdi.

SQLDoom Projesinin Teknik Altyapısı: Saf SQL ile Oyun Mantığı

Daha önce benzer bir deneme olan ve düşük çözünürlüklü, gri tonlamalı ASCII grafiklerine sahip DoomQL projesiyle adından söz ettiren Lukas Vogel, yeni sürümünde çıtayı adeta tavan yaptırdı. SQLDoom projesi, arka planda çalışan CedarDB tabloları vasıtasıyla oyunun tüm geometri ve durum (state) verilerini takip ediyor. Sistem, yaklaşık 1.300 satırlık karmaşık SQL sorgularını ve 89 adet ortak tablo ifadesini (Common Table Expressions - CTE) kullanarak oyun mantığını kusursuz bir şekilde işliyor ve saniyede 35 ila 60 kare (fps) arasında değişen tam renkli 640x480 çözünürlüğünde kare tamponları (framebuffer) üretiyor.

Sistemin kalbinde, verileri işlemek, oyunun zamanlamasını yönetmek ve her bir kareyi ekrana yansıtmakla görevli hafif bir Python istemcisi yer alıyor. Ancak ağır işin çok büyük bir kısmı, doğrudan veritabanı motorunun içinde gerçekleşiyor. Geliştirici, klasik Doom WAD dosyalarını ilişkisel bir veritabanına uyarlamanın nispeten kolay olduğunu belirtiyor; çünkü orijinal oyun zaten seviyeleri tepe noktaları (vertices), çizgiler (lines) ve sektörler (sectors) gibi net matematiksel bileşenlere ayırıyor.

Veritabanı Mimarisi ve Performans Optimizasyonları

Oyun dünyasında performansı artırmak için kullanılan ikili uzay bölme ağaçları (Binary Space Partitioning - BSP), SQLDoom projesinde de ustalıkla kullanılmış durumda. Yükleme anında her bir nesne için önceden hesaplanan özel bir 'sort_key' (sıralama anahtarı) sayesinde, veritabanı her karede hangi duvar parçalarının gösterileceğini ve hangilerinin görmezden gelineceğini basit bir 'ORDER BY' komutuyla saniyeler içinde belirleyebiliyor. Bu akıllı sıralama ve ayıklama (culling) algoritması, projenin performansını doğrudan yukarı taşıyan en kritik mühendislik hamlelerinden biri olarak dikkat çekiyor.

Elbette, bir veritabanı tablosundan birinci şahıs nişancı (FPS) perspektifine geçişte bazı zorluklar da yaşandı. Özellikle zemin ve tavanların render edilmesi aşamasında, orijinal oyunun sütun sütun çalışan zarif mimarisini veritabanı içinde birebir taklit etmek mümkün olmadı. Bu sorunu aşmak için Vogel, sıralı bir panel listesi üzerinde döngü kuran oldukça yaratıcı ve sıra dışı bir alternatif yaklaşım benimsedi. Tüm bu yoğun okuma ve yazma işlemlerine rağmen sistem, Ryzen 7 işlemcili dizüstü bilgisayarlarda ortalama 60 fps hızla akıcı bir deneyim sunmayı başarıyor; en yoğun sahnelerde dahi kare hızı sadece nadiren 35 fps seviyelerine geriliyor.

Veritabanı Tabanlı Çok Oyunculu Sunucuların Geleceği

Bu projenin arkasındaki motivasyon sadece eğlence veya teknik bir şovdan ibaret değil. Vogel, oyun durumunun veritabanında kararlı bir "referans anlık görüntüsü" (reference snapshot) olarak saklanmasının, çok oyunculu sunucu mimarileri için devasa avantajlar sunduğunu vurguluyor. Geleneksel oyun sunucularında yaşanan kısmi güncellemeler, senkronizasyon hataları veya roketin isabet edip etmediği konusundaki veri tutarsızlıkları, veritabanının yerleşik eşzamanlılık (concurrency) ve erişim yönetimi özellikleri sayesinde tamamen ortadan kalkıyor.

Eğer bu sıra dışı veritabanı deneyimini kendi yerel sisteminizde test etmek istiyorsanız, projenin GitHub deposundaki açık kaynak kodlarına, CedarDB yazılımına ve orijinal bir Doom WAD dosyasına ihtiyacınız var. Kod tabanını yerel makinenizde derleyerek SQL tabanlı bu dijital evreni bizzat deneyimleyebilir, veritabanı sorgularının bir oyun motoruna nasıl dönüştüğünü yakından inceleyebilirsiniz. Yazılım ve veritabanı dünyasının sınırlarını zorlayan bu tür projeler, teknolojinin hayal gücüyle birleştiğinde ne kadar ileri gidebileceğini bir kez daha kanıtlıyor.

Orijinal Haber Kaynağı:arstechnica.com
SQLDoomVeritabanıYazılımGeliştirmeCedarDB
Paylaş:WhatsApp'ta PaylaşPaylaş
Ozan Tankuş

Ozan Tankuş

Doğrulanmış Editör

Mercek360 kurucu editörü ve kıdemli teknoloji analisti. Kurumsal bilişim altyapıları, bulut teknolojileri, yapay zeka sistemleri ve tüketici elektroniği alanlarında uzmanlaşmış olup küresel teknoloji gündemini tarafsız ve derinlemesine incelemektedir.