AktualnościDoom uruchomiony w TypeScript Types. Jedna klatka powstaje 12 dni, całość zajmuje 177 TB

Doom uruchomiony w TypeScript Types. Jedna klatka powstaje 12 dni, całość zajmuje 177 TB

Z cyklu "na co by tu jeszcze można było przeportować Dooma?".

Doom przeportowany na TypeScript Types
Doom przeportowany na TypeScript Types
Źródło zdjęć: © YouTube | Michigan TypeScript

Doom był już na kosiarkach, symulacji komputera kwantowego, budziku od Nintento, a nawet w Wordzie i Captchy. W skrócie – praktycznie wszędzie. Nie dziwi więc, że pomysłowi programiści szukają coraz to bardziej nietypowych obiektów i środowisk, na których nikt jeszcze nie zdołał odpalić legendarnej strzelanki id Software. Jedną z takich osób jest Dimitri Mitropoulos, który postanowił przenieść FPS-a do systemu Types TypeScript.

Doom w TypeScript Types

Zacznijmy od wyjaśnienia czym jest TypeScript. Wedle anglojęzycznej Wikipedii to " wolny i otwartoźródłowy język programowania stworzony przez firmę Microsoft jako nadzbiór języka JavaScript", który pozwala na opcjonalne statyczne typowanie, a nawet na oparte na klasach programowanie zorientowane obiektowo. W skrócie – język ten powinien być w stanie odtworzyć Dooma, a przynajmniej w teorii.

Dalsza część artykułu pod materiałem wideo

TypeScript types can run DOOM

Bo, jak wielu z nas zdążyło nauczyć życie, w praktyce wszystko wychodzi zgoła inaczej. Co prawda przeniesiona na TypeScript Types strzelanka działa, niemniej jej port złożony jest z trzech i pół biliona linijek kodu i, jak na grę z 1993 r., waży całkiem sporo, bo ok. 177 TB. Jeśli ta liczba robi wrażenie, to pomyślcie, że bez żadnej optymalizacji rozmiar typescriptowego Dooma sięgnąłby prawdopodobnie 1,25 petabajtów. Jakby tego było mało, tracker TypeScript potrzebuje 12 dni na wygenerowanie pierwszej klatki gry, więc na płynną zabawę raczej nie mamy się co nastawiać.

No i wymagania – w szczytowych momentach środowisko wykonawcze trackera Type pożerało przeszło 90 GB RAM, a większość z nas raczej raczej może pomarzyć o maszynie, która byłaby w stanie dostarczyć tak pokaźnej liczby pamięci o dostępie swobodnym.

Jak podkreślił Dimitri Mitropoulos, przenosiny Dooma na TypeScript trwały rok, a w jego trakcie mężczyzna musiał nie tylko nauczyć się języków C i C++ oraz standardu WebAssembly, ale i stworzyć od podstaw własne narzędzia. Dlaczego więc Mitropoulos zdecydował się na podjęcie niemal niewykonalnego wyzwania? Ano dlatego, że chciał na własnej skórze przekonać się, dlaczego przeportowanie kultowego shootera na tytułowy język jest niemożliwe. Mimo że początkowo Dimitri sam zakładał, że szanse powodzenia są niewielkie, tak z biegiem czasu opracował on kilka obejść, które pozwoliły uruchomić Dooma w oszałamiającej prędkości 0,0000009645 klatek na sekundę. Działa? Działa.

Wybrane dla Ciebie