
Doom SQL verilənlər bazasında işə salınıb
Developer Lukas Fogel Doom-u SQL verilənlər bazasında işə salıb. SQLDoom layihəsi oyun məntiqini 1300 sətir SQL sorğusu ilə həyata keçirir və saniyədə 35 kadr yaradır; kiçik Python klienti giriş, vaxt və ekranda göstərilməsini idarə edir.
Developer Lukas Fogel 1993-cü il oyunu Doom-u SQL verilənlər bazasında işə salıb. Uzun bloq yazısında o, SQLDoom-un oyunu demək olar ki, tamamilə SQL sorğuları ilə necə göstərdiyini təsvir edir və özü də etiraf edir: “Doom-u verilənlər bazasında göstərmək açıq-aşkar pis fikirdir”.
Necə işləyir
SQLDoom emulyator deyil: girişi, çıxışı, vaxtı və kadrların ekranda göstərilməsini kiçik Python klienti idarə edir, oyunun özü isə onun arxasında, CedarDB cədvəllərində baş verir. Təxminən 1300 sətir SQL sorğusu, 89 CTE-yə bölünərək, oyun məntiqini həyata keçirir və saniyədə 35 kadrı bitmap şəklində yaradır.
Doom-un klassik WAD fayllarının relyasiya bazasına köçürülməsi nisbətən asan oldu, çünki orijinal mühərrik səviyyələri təpələrə, xətlərə və sektorlara bölür. SQL-ə ikili fəza bölgüsü (BSP) ağacları da sığır: obyektlər üçün əvvəlcədən hesablanmış sort_key ORDER BY sorğusuna hər kadrda divarın hansı hissəsinin çəkiləcəyini və hansının çəkilməyəcəyini qərar verməyə imkan verir. Elə bu hiylə oyunu sürətli edir.

ASCII-dən rəngli kadrlara qədər
SQLDoom Fogelin keçən ilki layihəsi DoomQL-dən qat-qat yaxşıdır. O vaxt o, “tamamilə SQL üzərində qurulmuş çoxoyunçulu, Doom-a bənzər şuter” yaratmağa çalışırdı, amma nəticədə yalnız reykastinqə əsaslanan, boz ASCII qrafikası alındı ki, bu da Doom-dan çox Wolfenstein 3D-nin 90 dərəcəli xəritələrinə bənzəyirdi. İndi isə layihə orijinal Doom kadrlarına bənzəyən tam rəngli 640×480 kadrlar yaradır.
Ən çətin mərtəbə və tavanın göstərilməsi oldu. Orijinal oyunda onlar sütunlar üzrə, visplanes və vəziyyət dəyişiklikləri vasitəsilə çəkilir, bu isə SQL-ə yaxşı ötürülmür. Əvəzində Fogel “kifayət qədər hackvari” bir həll yazdı ki, bu da panellərin sıralanmış siyahısı üzərində iterasiyaya əsaslanır.
Performans və çoxoyunçuluq
Baxmayaraq ki hər şey SQL cədvəllərində oxunur və yazılır, Fogelə görə, SQLDoom Ryzen 7 əsaslı noutbukda saniyədə təxminən 60 kadr sürəti ilə işləyir, yüklü səhnələrdə isə bəzən 35 kadra qədər düşür.
Onun sözlərinə görə, verilənlər bazası çoxoyunçulu serverlərə üstünlük verir: oyun vəziyyətinin sabit surətini saxlayır və eyni vaxtlı girişi özü tənzimləyir, buna görə də “qismən tətbiq olunmuş yeniləmələr, fizika xətaları və ya raketin həqiqətən dəydiyi ilə bağlı uyğunsuzluq yoxdur”.
Oyunu işə salmaq üçün GitHub kodu, CedarDB və Doom WAD faylı tələb olunur. Həmçinin pulsuz onlayn demo var, amma Ars Technica-nın testi zamanı bu variant pis işləyirdi.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.