О Doom на Typescript: год работы, 90 ГБ и 3,5 трлн строк

/ ТехнологииНовости / Технологии

Doom

Thumbnail: DoomDoom (иногда пишется DooM или DOOM; букв. «рок», «обречённость», «гибель») — компьютерная игра в жанре шутера от первого лица, разработанная и выпущенная компанией id Software в 1993 году. «Doom» является одной из самых значительных и влиятельных компьютерных игр в истории индустрии; в частности, её популярность во многом определила дальнейшее развитие и распространение жанра шутеров от первого лица. В этой серии вышла также игра-продолжение «Doom II: Hell on Earth» (в 1994 году), а также дополнения The Ultimate Doom (1995 год), Master Levels for Doom II (1995 год, сборник лучших уровней для Doom II, созданных энтузиастами, и объединённых id Software) и Final Doom (1996 год). Википедия

Читайте также:Шутер Total Chaos, созданный на основе мода для Doom 2, выйдет 24 июляДля улучшенной версии Neverwinter Nights выпустили дополнение, созданное фанатамиСоздатели DOOM: The Dark Ages рассказали о продолжительности уровней и значимости использования щита в бою«DOOM: The Dark Ages» получила взрослый рейтинг в СингапуреDoom работает на адаптере Apple Lightning-HDMI

портировали почти на все, верно? Ну, до сих пор название id Software не было воссоздано в системе Typescript Types, до сих пор.

Этот подвиг придумал инженер-программист Дмитрий Митропулос, основатель Michigan Typescript и соучредитель Squiggleconf. Он выпустил видео, демонстрирующее результаты годовых усилий по запуску игры в системе Typescript Types.

Typescript — это язык, построенный поверх Javascript, который добавляет статическую типизацию для обнаружения множества ошибок перед выполнением, думайте об этом как о щитах, которые проверяют, что функции и другие переменные используются правильно. Хотя это обычно используется во всех видах разработки, неслыханно запускать игру в системе TypeScript.

Сам порт работает внутри трех с половиной триллионов строк типов, что в сумме составляет гигантский размер в 177 ТБ. Это выполняется через Typescript's Type tracker, которому требуется 12 дней, чтобы скомпилировать первый кадр Doom (0,0000009645 кадров в секунду). Это означает, что 20 миллионов экземпляров типов запускались каждую секунду, чтобы получить вывод.

Митропулос объяснил на сервере Discord TypeScript в Мичигане, что этот процесс можно ускорить до «1–12 часов», если кто-то над этим поработает, а разработчик отметил, что у него есть заметки о том, где можно сделать потенциальную оптимизацию производительности.

Это было сделано путем запуска проекта в пользовательской среде выполнения WASM, которая затем обрабатывалась с помощью Typescript в редакторе для отображения фрейма.

Митропулос объясняет, что проект был тяжелым испытанием на протяжении года, поскольку ему пришлось писать собственные инструменты, включая 12 364 рукописных теста, изучать C, C++, WebAssembly и другие языки.

«Я действительно разработал то, что, по моему мнению, является крупнейшей кодовой базой Typescript из когда-либо созданных», — пояснил автор. До оптимизации он подсчитал, что проект может занять до 1,25 петабайт данных, при этом первый кадр будет скомпилирован после трех месяцев непрерывного создания экземпляров типов.

Каждый тип в проекте состоял из тысяч строк, и проект включал разработку виртуальной машины внутри системы типов, дополненной такими элементами, как оперативная память и дисковое пространство. «Компьютер состоит из типов Typescript, которые служат логическими реализациями всех 116 инструкций WebAssembly, необходимых Doom для запуска».

Митропулос далее пояснил, что каждое значение в системе Typescript Types соответствует строке пикселей, что в общей сложности составляет 128 000 строк пикселей, что дает «разрешение» 320x200, отображаемое в ASCII.

Для этого разработчику необходимо было снять ограничения в самом компиляторе Typescript, что наглядно показало, насколько большим стал проект: во время работы среда выполнения Type Tracker потребляла более 90 ГБ оперативной памяти.

Эти огромные накладные расходы означали, что обычные инструменты в Typescript не могли быть использованы, что означало, что титаническая задача кодирования каждого элемента Doom в типах. Это потребовало обучения разработке элементов, таких как кэш L1 CPU, в самих Typescript Types. Поскольку Typescript требовал итерации на одной строке с левой стороны, двоичные алгоритмы должны были вводиться в обратном порядке.

«О, и ИИ не может помочь», — добавил Митропулос, описав, что работа была настолько низкого уровня, что ИИ не мог помочь ни с одной из задач. Жаль, Grok 3.

Митропулос сказал, что он взялся за этот вызов после завершения «всех остальных» испытаний Types и хотел понять, почему Doom не сможет работать в Types. Однако ему удалось найти «смешные» обходные пути, чтобы заставить все это работать, несмотря на его собственное неверие в проект.

Митропулос готовит два отдельных видео, в которых подробно рассказывается, почему он создал проект, а также еще одно видео с техническим разбором подвига. Но на данный момент гигантский проект завершен, и Doom успешно перенесен на еще одну платформу.

Источник: Tomshardware.com

Подписаться на обновления Новости / Технологии

0 комментариев

Оставить комментарий


Новые комментарии

Можно делать смартфоны и планшеты на этом процессоре и наконец то использовать полноценную windows. Это отличная замена процессорам arm
  • Анон
Странно почему не 50 долларов.
  • Анон
Понимаю мощь производительность и все дела, но как черт возьми тепло отделять от камня если его прям нагрузить
  • Анон
Не предвзятость это - "Интересно, что Arc B580 проигрывает RTX 4060 в OpenCL" - где разница на невероятных 3,5 %, "но реабилитируется с НЕЗНАЧИТЕЛЬНЫМ 6%-ным преимуществом в Vulkan.". Не...
  • Анон
"Физика вышла из чата"??? Каким образом они добилис свечения точек, которые меньше четверти длины волны???
  • Анон
И теперь нельзя отключить авто обновление!!! Это жесть
  • Анон
Не знаю, я купил Cougar850 80Gold за 10К₽ и нормально
  • Анон
После всех роликов я одно понял у этой игры которую выпустят 20 мая у неё большое будущее
  • Анон
Когда они в продаже появятся? Уже как бы конец февраля, а нигде нет..
  • Анон

Смотреть все