Представлен публике публичный инициатива cssDoom — релиз Doom, использующая для отрисовки только CSS

3 мин
Представлен публике публичный инициатива cssDoom — релиз Doom, использующая для отрисовки только CSS

Разработчик Нильс Ленхеер представил открытый проект под названием cssDoom. Это реализация игры Doom, использующая для отрисовки графики только CSS, без применения элемента canvas и технологии WebGL. Игровая логика написана на языке JavaScript. В проекте используется в качестве эталона оригинальный исходник игры Doom, открытый компанией id Software. Наработки проекта cssDoom опубликованы на GitHub под лицензией GPLv2.

Всё что выводится на монитор, в том числе спрайты, текстурированные стены, уровни и эффекты, оформлено через стилизованные при помощи CSS элементы <div>, размещаемые в 3D-пространстве при помощи CSS-свойств transform и transform-style: preserve-3d.

«Как это работает: мы начинаем с линейных, боковых и секторных параметров из WAD‑файла Doom и строим сцену, создавая элементы <div>, размещённые в 3D‑пространстве с помощью CSS‑преобразований. Но мы не устанавливаем эти свойства напрямую из JavaScript. Вместо этого мы устанавливаем пользовательские свойства с помощью исходной геометрии вершин Doom. Эти значения берутся непосредственно из WAD‑файла. CSS вычисляет правильную ширину, высоту и 3D‑преобразования с помощью тригонометрических функций», — пояснил автор проекта.

«Платформа координат Doom не соответствует напрямую CSS 3D. Doom использует нисходящую 2D‑систему, где Y увеличивается, двигаясь на север. В CSS 3D Y направлен вверх, а Z — к зрителю. Вот почему вы видите translate3d(x, ‑z, ‑y) — наши пользовательские свойства заданы в координатах DOOM, в то время как для преобразования требуются координаты CSS. После того, как мы создали сцену, мы запускаем игровой цикл на JavaScript, который отслеживает состояние игры — положение игрока, ввод, столкновения, ИИ врагов. Этот игровой цикл — наименее интересная часть проекта, поскольку он, по сути, является воссозданием исходного кода на JavaScript. Существует строгое разделение между игровым циклом на JavaScript и рендерингом на CSS. JavaScript устанавливает ограниченное количество пользовательских свойств CSS, таких как ‑player‑x, ‑player‑y, ‑player‑z и ‑player‑angle, которые определяют местоположение игрока в нашей сцене. Остальное делает CSS — он перемещает весь мир в противоположном направлении от игрока, поскольку в CSS нет камеры. Перемещение и осмотр — это просто апдейт четырёх пользовательских свойств», — уточнил Ленхеер.

В игре помимо вида от первого лица можно менять камеру и смотреть игровую карту.

Ранее разработчик Адам Райс представил открытый проект под названием Doom Over DNS для игры в условно-бесплатную версию популярного шутера с помощью стандартных сетевых возможностей интернета. «В какой‑то момент здравомыслящий человек спросил: „DNS преобразует имена в IP‑адреса, что ещё он может создавать?“ Ответ, по‑видимому, — запускать Doom. Записи DNS TXT могут содержать произвольный текст. Cloudflare будет предоставлять их глобально, бесплатно, кэшируя на границе сети, любому, кто запросит. Это не файловая система хранения. Они не были разработаны как файловая платформа хранения. Никто в IETF не думал об их использовании в качестве файловой системы хранения, когда писал RFC 1035. И всё же вот мы здесь. Этот проект сжимает всю условно‑бесплатную версию DOOM, разбивает её на ~1964 записи DNS TXT в одной зоне Cloudflare и воспроизводит её во время выполнения, используя только сценарий PowerShell и общедоступные DNS‑запросы. Файл WAD никогда не записывается на диск, а DLL‑файлы игрового движка.NET загружаются непосредственно в память», — пояснил Райс.

Читают сейчас

В Москве начнут производить печатные платы для автопроизводителей

2 часа назад

В Москве начнут производить печатные платы для автопроизводителей

Новый резидент московского индустриального парка «Руднево» будет выпускать печатные платы для автопрома, рассказал мэр Москвы Сергей Собянин. Читать далее

После обновления фирменного ПО компьютеры Dell сталкиваются с BSOD и регулярной перезагрузкой

3 часа назад

После обновления фирменного ПО компьютеры Dell сталкиваются с BSOD и регулярной перезагрузкой

Компьютеры Dell, в том числе ноутбуки, после недавнего обновления программного обеспечения выдают критическую ошибку, которая приводит к появлению «синего экрана смерти» и регулярной перезагрузке, гов

Нет, ИИ не уничтожит сегмент труда: Эндрю Ын разнес позицию AI-компаний

4 часа назад

Нет, ИИ не уничтожит сегмент труда: Эндрю Ын разнес позицию AI-компаний

Эндрю Ын, основатель DeepLearning.AI и Coursera, опубликовал в рассылке The Batch колонку, в которой назвал нарратив о массовой безработице из-за ИИ безответственным и вредным. Аргумент несложный: уро

2,5x скорости за 6x цены: у Opus 4.7 появился турбо-режим

5 часов назад

2,5x скорости за 6x цены: у Opus 4.7 появился турбо-режим

Anthropic запустила fast mode (турбо-режим) для Claude Opus 4.7 — режим выдает до 2,5 раза больше выходных токенов в секунду, но стоит в 6 раз дороже стандартной модели. Опция доступна как research pr

7 часов назад

Ну что, прогрев пошел: GitHub назвали вредительской платформой для России

Прогрев к блокировке GitHub уже начался GitHub назвали «вредительской платформой» для России. Об этом заявил Антон Горелкин, начальный зампред ИТ-комитета Госдумы. По его словам, доля неудачных подклю