"Doom'u bir veritabanında render etmek açıkça kötü bir fikir," diye yazıyor Lukas Vogel. Yine de yaptı.

CedarDB'nin kurucu ortaklarından Vogel'ın geliştirdiği SQLDoom, orijinal Doom'u çalıştırıyor: küçük bir Python istemcisi girdiyi, zamanlamayı ve tamamlanan karelerin ekrana basılmasını üstleniyor. Arkada CedarDB tabloları oyunun geometrisini ve durumunu tutuyor; 89 ortak tablo ifadesine (CTE) yayılmış yaklaşık 1.300 satır SQL, oyun mantığını uyguluyor ve saniyede 35 bitmap çerçeve üretiyor. Sonuç, Vogel'ın önceki DoomQL denemesindeki gri tonlamalı ASCII raycasting'den farklı olarak 1993'teki orijinalden çıkmış gibi görünen tam renkli 640×480 kareler.

İlişkisel bir veritabanının Doom'un verisi için fena bir yuva olmadığı ortaya çıkıyor. Oyunun WAD dosyaları zaten köşe noktaları, çizgiler ve sektörlere bölünmüştü; seviyeleri yüklemek büyük ölçüde tablo meselesi. İkili uzay bölümleme (BSP) ağaçları bile çevrilebiliyor: her konum için önceden hesaplanan bir sort_key, her karede hangi duvar dilimlerinin çizileceğine sade bir "ORDER BY" ile karar verilmesini sağlıyor. Zor kısım tabanlar ve tavanlardı; Vogel'ın deyimiyle "oldukça kıvırma" bir sıralı panel iterasyonuyla, orijinaldeki visplane'ler yerine idare edildi.

Performans, bu fikrin hak ettiğinden iyi: Ryzen 7'li bir dizüstünde saniyede yaklaşık 60 kare, yoğun sahnelerde 35'e düşüyor. Üstelik veritabanının çok oyunculu için beklenmedik bir avantajı var: dünyanın tutarlı bir anlık görüntüsü, yarım uygulanmış güncelleme, fizik hatası ya da "roket isabet etti mi" tartışması bırakmıyor.

Kod GitHub'da; yerelde çalıştırmak için bir CedarDB kopyası ve bir Doom WAD dosyası gerekiyor. Çevrimiçi bir demo maçı da var. Ars Technica projeyi bu hafta duyurdu. Bu, Doom'u asla çalıştırmak için tasarlanmamış donanım ve yazılımlarda çalıştırma geleneğinin en yeni halkası.