Назад
cssQuake: Quake працює в браузері на HTML і CSS, без canvas
SiTech AI Team2 წთ. საკითხავი

cssQuake: Quake працює в браузері на HTML і CSS, без canvas

Порт шутера id Software 1996 року відображає свій BSP-світ як справжні DOM-вузли, розставлені CSS-трансформаціями matrix3d через рушій PolyCSS — без WebGL, без canvas і з повною інспекцією в інструментах розробника.

cssQuake — проєкт студії Layoutit — запускає шутер id Software Quake 1996 року в браузері, але не так, як це зазвичай роблять подібні порти. Тут немає ні контексту WebGL, ні елемента canvas: геометрія BSP-світу гри подана справжніми HTML-елементами, розставленими CSS-трансформаціями matrix3d за допомогою 3D-рушія PolyCSS. Проєкт опублікували на Hacker News, де він зібрав 548 балів.

Справжній DOM замість canvas

У cssQuake поверхні світу стають DOM-вузлами: кожна розставляється CSS-трансформацією matrix3d, текстурується піксельованими CSS-фонами та групується в меші, а не малюється на canvas. Результат можна оглянути в інструментах розробника браузера, як будь-яку іншу сторінку. Репозиторій описує проєкт як порт Quake, що відображає BSP-світи як справжню HTML/CSS 3D-геометрію та працює на TypeScript.

Попередня обробка даних Quake

Оскільки рендерингом займається CSS, гра постачається з підготовленими ресурсами. Препроцесор перетворює оригінальні дані Quake на готовий для браузера JSON, зображення та пакети рендерингу PolyCSS. Текстури декодуються через палітру Quake у PNG-файли, послідовності анімованих текстур стають вхідними даними CSS-анімацій, а карти епізодів отримують попередньо зібрані пакети, щоб браузер підключав готовий DOM світу, а не перебудовував кожну поверхню під час запуску. Крок підготовки читає shareware- або локальні PAK-файли; оригінальних ігрових даних Quake в репозиторії немає.

Гра та налагодження

Гра підтримує стандартне керування клавіатурою та мишею — WASD для руху, миша для огляду, клік для пострілу, пробіл для стрибка, shift для бігу, ctrl для присідання — і меню, яким керують стрілками. Розділ налагодження показує контури, панель статистики та лічильник FPS, а перемикачі охоплюють динамічне освітлення, частинки, ворогів, приціл, шкоду та рух, що робить порт корисним і для демонстрацій, і для гри. Є також екран мультиплеєра для створення кімнат із вибором карти, fraglimit і ліміту гравців, та режим запису.

Вбудовування та ліцензія

cssQuake може працювати в iframe; додавання relayKeys=1 змушує гру надсилати батьківській сторінці відфільтровані ігрові події клавіш як повідомлення cssquake:key, і перед їх читанням сторінка має перевіряти event.origin. Код поширюється за ліцензією GPL-2.0-only і лежить на GitHub, де репозиторій зібрав 182 зірки та 292 коміти. Оскільки рендерером є власний рушій верстки браузера, проєкт також перевіряє межі CSS-трансформацій: шутер від першої особи 1996 року, що працює як стилізовані DOM-вузли.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.