Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software
DOOM z 1993 roku trafił na test ciążowy, satelitę i 40-letni kontroler drukarki Agfa Compugraphic 9000PS. Lista dziwnego sprzętu powoli się kończy, więc hobbyści sięgają po narzędzia, których nikt nie projektował z myślą o grach. Lukas Vogel, współzałożyciel monachijskiej firmy CedarDB, wziął na warsztat relacyjną bazę danych i strukturalny język zapytań SQL. Rok temu pokazał DOOMQL, a teraz wraca z projektem SQLDoom i tym razem mierzy w oryginał id Software.
SQLDoom odtwarza DOOM-a z 1993 roku w zapytaniach SQL i na laptopowym procesorze AMD Ryzen 7 PRO 7840U generuje obraz z częstotliwością do 60 kl./s. Najciekawiej wypada tryb sieciowy, w którym transakcje bazy danych zapewniają spójny stan rozgrywki dla maksymalnie czterech graczy.
PEGI przedwcześnie zdradziło szczegóły GTA 6. Jak zostanie pokazana brutalność oraz seksualność na tle GTA 5?
SQLDoom przenosi do bazy CedarDB logikę gry i renderer. Skrypt w Pythonie odczytuje klawiaturę, 35 razy na sekundę wywołuje kolejny krok symulacji i wyświetla bitmapę 320x200 pikseli. Logika zajmuje około 5900 linii SQL wobec około 9000 linii C w oryginale. Renderer to pojedyncze zapytanie liczące około 1300 linii kodu bez komentarzy, zbudowane z 89 wyrażeń CTE, czyli nazwanych podzapytań przekazujących sobie wyniki. Na laptopie z procesorem AMD Ryzen 7 PRO 7840U autor uzyskuje zwykle około 60 kl./s, a w bardzo obciążonych scenach wynik spada jednak do 35 kl./s.
DOOM: The Dark Ages otrzyma kolejne darmowe ulepszenia. Niebawem pojawi się Slaughter Mode
Vogel odwzorował drzewa BSP (Binary Space Partitioning), które w oryginalnym DOOM-ie odpowiadają za uporządkowanie geometrii i ograniczenie liczby sprawdzanych elementów. Ścieżki w drzewie pakuje w liczby całkowite, a kolejność ustala za pomocą `ORDER BY`. Gorzej poszło z podłogami i sufitami. Oryginał wykorzystuje iteracyjny algorytm wykorzystujący tablice, którego nie da się bezpośrednio przełożyć na SQL, więc autor emuluje jego działanie funkcjami okna. Przy rozstrzyganiu widoczności zapytanie generuje próbne piksele i wybiera dla każdego z nich zwycięzcę na podstawie głębokości. Ten etap zajmuje średnio 8,2 ms i jest najdroższym fragmentem renderowania.
Diablo II: Resurrected dostało ciekawą modyfikację, która pozwala ustawić kamerę w pierwszej lub trzeciej osobie
Baza danych dobrze sprawdza się również jako podstawa trybu sieciowego. Każdy krok gry jest wykonywany w jednej transakcji, dzięki czemu maksymalnie czterej gracze otrzymują spójny stan rozgrywki. Osobny skrypt Pythona pełni rolę arbitra i steruje wspólnym zegarem 35 Hz. Kolejnością operacji w ramach kroku steruje `cedarscript`, czyli proceduralny język CedarDB przypominający PL/pgSQL. Z tego powodu SQLDoom obecnie wymaga CedarDB, choć autor zaznacza, że tę część można byłoby przenieść do PL/pgSQL. Projekt korzysta z protokołu PostgreSQL, ale nie oznacza to obecnie jego pełnej zgodności z PostgreSQL. Kod jest dostępny na GitHubie na licencji GPL-2.0, a publiczna instancja pozwala rozegrać deathmatch na serwerach w Europie i USA.
Powiązane publikacje

Phantom Blade Zero - oto znakomicie wyglądający, ponad 20-minutowy gameplay. Walka, eksploracja i starcia z bossami
12
Forza Horizon 6 z oficjalną datą premiery na konsolach PlayStation 5 i PlayStation 5 Pro. Gra będzie dostępna fizycznie i cyfrowo
11
Mafia III: Definitive Edition to kolejna część Mafii, która otrzymała nową wersję na konsole PlayStation 5 oraz XBOX Series X|S
9
Twierdza 4 - nowy zwiastun wreszcie prezentujący datę premiery i przy okazji update wersji demo
7







![Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software [1]](/image/news/2026/10/05_inzynier_baz_danych_uruchomil_doom_a_w_sql_wyszlo_60_klatek_na_sekunde_i_kod_krotszy_od_oryginalu_id_software_0.jpg)
![Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software [2]](/image/news/2026/10/05_inzynier_baz_danych_uruchomil_doom_a_w_sql_wyszlo_60_klatek_na_sekunde_i_kod_krotszy_od_oryginalu_id_software_1.jpg)
![Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software [3]](/image/news/2026/10/05_inzynier_baz_danych_uruchomil_doom_a_w_sql_wyszlo_60_klatek_na_sekunde_i_kod_krotszy_od_oryginalu_id_software_4.jpg)
![Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software [4]](/image/news/2026/10/05_inzynier_baz_danych_uruchomil_doom_a_w_sql_wyszlo_60_klatek_na_sekunde_i_kod_krotszy_od_oryginalu_id_software_3.jpg)
![Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software [5]](/image/news/2026/10/05_inzynier_baz_danych_uruchomil_doom_a_w_sql_wyszlo_60_klatek_na_sekunde_i_kod_krotszy_od_oryginalu_id_software_5.jpg)
![Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software [6]](/image/news/2026/10/05_inzynier_baz_danych_uruchomil_doom_a_w_sql_wyszlo_60_klatek_na_sekunde_i_kod_krotszy_od_oryginalu_id_software_2.jpg)






