SQLDoom jalankan Doom di database SQL dengan 1.300 baris query, 89 CTE, dan 35 FPS full-color 640x480. Baca detail eksperimen Lukas Vogel.

Kamu pasti pernah lihat Doom dijalankan di tempat-tempat aneh — kalkulator, thermostat, bahkan test kehamilan. Tapi kali ini Lukas Vogel naik level: dia bikin Doom berjalan di dalam database SQL. Proyeknya bernama SQLDoom, dan ini bukan cuma proof-of-concept yang ngaco. Dia berhasil render full-color 640x480 di 35 frame per detik, semuanya lewat query SQL murni. Jadi gak ada engine game di belakang layar, cuma database yang di-suruh ngitung geometri, state, dan framebuffer tiap tick.

Caranya sih gak 100% SQL doang. Vogel pakai klien Python kecil buat handle input, timing, dan nampilin frame ke layar. Tapi otak game-nya — geometri, logika gerak, collision, rendering — semuanya di database. Dia pakai CedarDB, database analitik yang support recursive CTE (Common Table Expressions). Totalnya sekitar 1.300 baris query tersebar di 89 CTE. Setiap frame, database dieksekusi query rekursif yang ngitung posisi player, wall, enemy, dan warna pixel, terus nge-return bitmap yang siap ditampilin.

Dari ASCII Grayscale ke Full-Color 35 FPS

Ini lompatan dewa dari proyek sebelumnya Vogel, DoomQL. Tahun lalu dia coba bikin multiplayer Doom-like sepenuhnya di SQL. Hasilnya? Raycasting grayscale ASCII yang mirip Wolfenstein 3D — map kotak-kotak 90 derajat, gak ada tekstur, gak ada warna. SQLDoom beda jauh. Dia pakai teknik yang lebih canggih: binary space partitioning (BSP) tree di SQL buat urut rendering, fixed-point arithmetic biar cepet, dan framebuffer bitmap 640x480 24-bit color. Hasilnya keliatan kayak Doom asli, bukan mainan anak TK.

Advertisement

Advertisement

Slot in-article yang tampil setelah paragraf ketiga.

Yang bikin impresif, Vogel gak cuma render frame statis. Game loop-nya jalan di database: input dari Python dikirim ke tabel, query rekursif ngupdate state dunia, terus nge-return framebuffer baru. Semua 35 kali per detik. CedarDB ternyata cukup cepet buat handle workload kayak gini karena dia designed buat analytical query berat, bukan OLTP biasa. Vogel bilang di blog-nya: "Rendering Doom in a database is obviously a bad idea" — tapi dia lakuin anyway, dan hasilnya lucu banget.

Kenapa Orang Lakuin Hal Kayak Gini?

Catatan redaksi

Kalau lo cuma ambil satu hal dari artikel ini

Technology update dari Ars Technica.

Sumber asli

Artikel ini merupakan rewrite editorial dari laporan Ars Technica.

Baca artikel asli di Ars Technica→
#Technology#ArsTechnica#rss