
Doom SQL Veritabanında Çalıştırıldı
Geliştirici Lucas Fogel, Doom'u SQL veritabanında çalıştırdı. SQLDoom, oyun mantığını 1300 satırlık SQL sorgusuyla gerçekleştirir ve saniyede 35 kare üretir; küçük bir Python istemcisi girdi, zaman ve kare çıktısını yönetir.
Geliştirici Lucas Fogel, 1993 yapımı oyun Doom'u SQL veritabanında çalıştırdı. Uzun bir blog yazısında, SQLDoom oyununu neredeyse tamamen SQL sorgularıyla nasıl çalıştırdığını anlatıyor ve şunu kabul ediyor: "Doom'u SQL veritabanında çalıştırmak açıkça kötü bir fikir."
Nasıl Çalışır
SQLDoom bir emülatör değildir: girdiyi, çıktıyı, zamanı ve karelerin ekrana çıkarılmasını küçük bir Python istemcisi yönetir, oyunun kendisi ise arka planda CedarDB tablolarında yürür. Yaklaşık 1300 satırlık SQL sorgusu, 89 CTE'ye dağıtılarak oyun mantığını gerçekleştirir ve saniyede 35 kareyi bitmap olarak üretir.
Doom'un klasik WAD dosyalarını ilişkisel veritabanına taşımak nispeten kolay oldu, çünkü orijinal motor seviyeleri düğümlere, çizgilere ve sektörlere böler. SQL içinde ikili uzay bölme (BSP) ağaçları da sıralanır: nesneler için önceden hesaplanmış sort_key, ORDER BY sorgusana her karede duvarın hangi kısmının çizileceğini ve hangisinin çizilmeyeceğini karar verme imkanı sağlar. Tam da bu numara oyunu hızlı kılar.

ASCII'den Renkli Karelere
SQLDoom, Fogel'in geçen yılki projesi DoomQL'den çok daha iyi. O zaman "tamamen SQL üzerine kurulu, Doom benzeri çok oyunculu bir shooter" oluşturmayı denemişti ancak sonuç olarak sadece ışın izlemeye dayalı, gri ASCII grafikler ortaya çıkmıştı ki bu da Doom'dan çok Wolfenstein 3D'nin 90 derecelik haritalarına benziyordu. Şimdi ise proje tam donanımlı 640×480 kareler oluşturuyor ki bunlar orijinal Doom karelerine benziyor.
En zor kısım zemin ve tavanın çizilmesi oldu. Orijinal oyunda bunlar dikey olarak, visplanes ve durum değişiklikleriyle çizilir ki bu SQL'e iyi taşınmıyor. Bunun yerine Fogel "oldukça hack" çözüm yazdı: panellerin sıralı bir listesi üzerinde iterasyon yapan bir yöntem.
Performans ve Çok Oyunculu
Her şeyin SQL tablolarından okunup yazılmasına rağmen, Fogel'e göre SQLDoom Ryzen 7 işlemcili bir dizüstü bilgisayarda saniyede yaklaşık 60 kare hızında çalışıyor, yüklü sahnelerde ise bazen 35 kareye düşüyor.
Kendi ifadesine göre, veritabanı çok oyunculu sunuculara avantaj sağlar: oyun durumunun stabil bir kopyasını saklar ve eşzamanlı erişimi kendisi düzenler, bu yüzden "kısmen uygulanan güncellemeler, fizik hataları veya roketin gerçekten öldürüp öldürmediği konusunda anlaşmazlık yoktur".
Oyunu çalıştırmak için GitHub kodu, CedarDB ve Doom WAD dosyası gereklidir. Ayrıca ücretsiz bir çevrimiçi demo da mevcut, ancak Ars Technica testi sırasında bu versiyon kötü çalışıyordu.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.