Zgłoś błąd
X
Zanim wyślesz zgłoszenie, upewnij się że przyczyną problemów nie jest dodatek blokujący reklamy.
Błędy w spisie treści artykułu zgłaszaj jako "błąd w TREŚCI".
Typ zgłoszenia
Treść zgłoszenia
Twój email (opcjonalnie)
Nie wypełniaj tego pola
Załóż konto
EnglishDeutschукраїнськийFrançaisEspañol中国

Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id Software

Maciej Lewczuk | 05-10-2026 15:30 |

Inżynier baz danych uruchomił DOOM-a w SQL. Wyszło 60 klatek na sekundę i kod krótszy od oryginału id SoftwareDOOM 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.

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]

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.

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]

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]

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.

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]

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]

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]

Źródło: GitHub (cedardb/sqldoom), CedarDB, Tom's Hardware
Bądź na bieżąco - obserwuj PurePC.pl na Google News
Zgłoś błąd
Liczba komentarzy: 14

Komentarze:

x Wydawca serwisu PurePC.pl informuje, że na swoich stronach www stosuje pliki cookies (tzw. ciasteczka). Kliknij zgadzam się, aby ta informacja nie pojawiała się więcej. Kliknij polityka cookies, aby dowiedzieć się więcej, w tym jak zarządzać plikami cookies za pośrednictwem swojej przeglądarki.