AktualnościSieciowy klon Dooma w języku SQL? Kolejny ambitny pomysł fanów gry

Sieciowy klon Dooma w języku SQL? Kolejny ambitny pomysł fanów gry

Co prawda DOOMQL sam w sobie nie jest idealną kopią sztandarowego dzieła studia id Software, niemniej pozostał wierny stojącym za nim ideałom. Dzieło Lukasa Vogela umożliwia wspólną zabawę nawet kilku osobom jednocześnie i, co ciekawsze, powstało w całości w języku zapytań SQL.

DOOMQL
DOOMQL
Źródło zdjęć: © CedarDB | Lukas Vogel

Twórca tytułowego projektu, Lukas Vogel, pochwalił się swoim dokonaniem na blogu narzędzia CedarDB. Jak napisał w opublikowanym na nim tekście mężczyzna, główną inspiracją do powstania DOOMQL był inny klon kultowego FPS-a, a dokładniej – napędzana przez DuckDB-WASM wersja gry w przeglądarce opracowana przez niejakiego Patricka. Tak się złożyło, że Vogel przebywał akurat na miesięcznym urlopie tacierzyńskim, w związku z czym był w stanie poświęcić nieco czasu na rozwój autorskiego. Skończyło się na kilkudziesięciu nieprzespanych nocach, niemniej doomopodobna gra napisana w całości w SQL stała się faktem.

DOOMQL – sieciowy klon Dooma w języku SQL

Jak nietrudno wywnioskować na podstawie załączonego powyżej zrzutu ekranu, DOOMQL nie należy do najbardziej spektakularnych graficznie klonów produkcji id Software i nawet do oryginału z 1993 roku mu daleko. Mimo wszystko – program z kodem powstałym w języku SQL wykorzystywanym do tworzenia i modyfikacji baz danych działa. I to nie byle jak, ponieważ Lukas Vogel obiecuje płynną zabawę (tj. w około 30 klatkach na sekundę) i rozdzielczości 128 × 64 pikseli. Jest to zauważalny przeskok względem napomkniętego Dooma na DuckDB, który oferował jedynie 8 FPS przy rozdzielczości 32 × 16.

Każdy element DOOMQL powstał w SQL – poczynając od renderera, przez pętlę gry, aż po synchronizację trybu wieloosobowego. Ze względu na ograniczenia języka niezbędne jednak było posłużenie się Pythonem, który odpowiada za wyłapywanie wciśnięć klawiszy i wyświetlanie poszczególnych klatek obrazu w systemowym terminalu. Jeśli wierzyć zapewnieniom Vogela, napisany w Pythonie kod składa się z zaledwie 150 linijek.

Na stronie projektu na GitHubie znalazło się dość pobieżne wyjaśnienie tego, jak DOOMQL działa. Otóż wszystko jest bazą danych – gracze, przeciwnicy, mapy, a nawet dane wejściowe. Oprogramowanie przekształca poszczególne warstwy SQL w widok 3D, czyli to, co widzimy z lewej strony poniższego zrzutu ekranu.

DOOMQL
DOOMQL© GitHub

Niewielki skrypt powłoki odpowiada za działanie SQL z częstotliwością 30 Hz, co pozwoliło na uwzględnienie przemieszczających się pocisków, sprawdzanie kolizji, jak i odradzanie graczy, którzy polegli w boju. W tle program nieustannie sprawdza widok ekranu oraz pobiera wprowadzane na klawiaturze dane, które trafiają do bazy danych i aktualizują jej stan.

Twórca projektu przekazał przy tym, że bodaj najważniejszym elementem zaprojektowanej przez niego gry jest... oszukiwanie. Jako że mamy do czynienia z zaawansowaną bazą danych, możemy wykorzystać ten fakt na naszą korzyść i wprowadzać w niej poprawki niekoniecznie zgodne z zasadami rozgrywki. Dla przykładu, jesteśmy w stanie ręcznie ustawić swój wynik (lub ten należący do konkurenta), a nawet ukraść zabójstwa, które zdążyły zasilić konto rywala.

Jeśli chcemy osobiście zapoznać się z DOOMQL, pełną instrukcję jego uruchomienia znajdziemy na GitHubie. Od razu nadmienię, że do rozpoczęcia zabawy będziemy potrzebowali Dockera oraz Pythona 3 z adapterem psycopg2. Prócz tego wystarczy nam okno terminala, którego rozmiar powinniśmy przed rozpoczęciem rozgrywki znacznie zwiększyć.

Jakub Dmuchowski, redaktor pcformat.pl

Źródło artykułu:GitHub

Wybrane dla Ciebie