Doom ponownie udowodnił, że można uruchomić go niemal wszędzie. Tym razem kultowa strzelanka z 1992 roku działa dzięki wyrażeniom regularnym, czyli narzędziu kojarzonemu głównie z wyszukiwaniem tekstu. Efekt jest jednocześnie imponujący i kompletnie niepraktyczny: wygenerowanie jednej klatki obrazu wymaga milionów operacji, a rozgrywka przypomina bardziej korespondencyjny pojedynek niż klasyczną strzelankę.
Lista nietypowych urządzeń, na których uruchomiono Dooma, regularnie się wydłuża. Gra id Software pojawiała się już na kalkulatorach, drukarkach, zegarkach, lodówkach i innych sprzętach, które nigdy nie były projektowane z myślą o uruchamianiu gier. Teraz do tej kolekcji dołączyło jedno z najbardziej zaskakujących środowisk: wyrażenia regularne.
Za eksperyment odpowiada Artem Lytkin, programista, który postanowił sprawdzić, czy popularny mechanizm wyszukiwania i zamiany tekstu może zostać wykorzystany jako pełnoprawna maszyna wykonująca kod. Pomysł brzmi jak żart, ale projekt faktycznie działa.
Wyrażenia regularne, znane jako regex, zwykle służą do sprawdzania wzorców w tekście, filtrowania danych albo wyszukiwania konkretnych fragmentów dokumentów. Ich możliwości są jednak znacznie większe. Przy odpowiednim wykorzystaniu mogą obsługiwać warunki, skomplikowane operacje logiczne i manipulację danymi.
Lytkin potraktował regex jak procesor i stworzył środowisko, które symuluje działanie klasycznego silnika Dooma.
96 MB tekstu udaje komputer dla kultowej gry
Cały projekt opiera się na ogromnym ciągu znaków o rozmiarze około 96 MB. W środku znajdują się dane odpowiadające za pamięć gry, rejestry wirtualnego procesora, bufor obrazu, dane WAD oraz informacje potrzebne do obsługi sterowania.
Zamiast wykonywać instrukcje procesora w tradycyjny sposób, system dokonuje kolejnych podstawień tekstowych. Każda zmiana znaków reprezentuje operację, która normalnie zostałaby wykonana przez sprzęt.
Brzmi niewiarygodnie, ale efekt końcowy ma być identyczny z oryginalnym działaniem Dooma. Programista twierdzi, że wygenerowany obraz jest zgodny bajt po bajcie z tym, który tworzy klasyczna wersja gry.
Cena za ten sukces jest jednak ogromna.
Jedna klatka obrazu potrzebuje około 180 sekund obliczeń. Za każdym razem wykonywanych jest niemal 14 milionów podstawień. Cała maszyna regex pracuje z szybkością około 80 tysięcy zmian tekstu na sekundę.
W praktyce oznacza to, że sterowanie bohaterem wymaga niezwykłej cierpliwości. Sam autor projektu porównał doświadczenie do „szachów korespondencyjnych ze strzelbą”, zamiast dynamicznej strzelanki.
Największym wyzwaniem nie było uruchomienie gry
Najbardziej niezwykła część projektu kryje się w sposobie zarządzania pamięcią. Lytkin nie przeszukiwał za każdym razem całego gigantycznego pliku tekstowego. Zamiast tego stworzył strukturę przypominającą drzewo binarne, która pozwala szybciej odnajdywać potrzebne fragmenty danych.
Dzięki temu projekt nie kończył się na ciekawostce, która nigdy nie byłaby w stanie wygenerować obrazu. Programista musiał znaleźć sposób na ograniczenie liczby operacji, ponieważ pełna symulacja procesora w samych wyrażeniach regularnych mogłaby trwać niewyobrażalnie długo.
Jak przyznał Lytkin, największe pytanie nie brzmiało „czy Doom może działać w regex”, ale „czy uda się go uruchomić przed końcem istnienia wszechświata”. Więcej informacji oraz stronę projektu znajdziecie TUTAJ.
Spodobało Ci się? Podziel się ze znajomymi!

Pokaż / Dodaj komentarze do:
Ktoś uruchomił Doom w wyrażeniach regularnych. Nic bardziej absurdalnego dziś nie zobaczycie