Half-Life 2 запустился в Safari у школьника раньше, чем у самой Valve
На Mac с Apple Silicon фирменная копия Half-Life 2 от Valve не запускается: macOS отказалась от 32-битных программ, а игру так и не пересобрали. Веб-порт старшеклассника поднимает её прямо во вкладке браузера.
Порт опирается на режим рендеринга ToGLES: движок Source выдаёт вызовы OpenGL ES, рассчитанные на Android, а Emscripten переводит их в WebGL2. Всё началось с веб-порта Portal, который сделал друг; тот, в свою очередь, был форком кодовой базы Source, восходящей к утечке 2020 года.
Порт заодно показывает, чего в нём нет. Джеймс Дарпиниан, экс-Meta и Google, перечислил отсутствующие шейдеры: у G-Man нет глаз, ни у кого не двигаются губы, экраны с Брином пустые.
И всё это работает на железе, которое Valve бросила. В этом и весь смысл.
Half-Life 2 поднимается во вкладке браузера — три месяца работы одного школьника

Откройте hl2.slqnt.dev, дождитесь полоски «Downloading…», и вот вы уже стоите в поезде, въезжающем в Сити-17, который рисует Safari или Chrome без установки и без Steam. Автор скрывается под ником slqnt, он старшеклассник, потратил на проект около трёх месяцев и выложил его бесплатно.
Главный трюк — путь рендеринга ToGLES. Обычно Source общается с десктопным OpenGL или DirectX. ToGLES заставляет его выдавать вызовы OpenGL ES (вариант для Android-телефонов), а Emscripten (компилятор из C++ в WebAssembly) переводит их в WebGL2, который умеет браузер. slqnt начал не с чистого листа. Друг показал ему веб-порт Portal от разработчика по нику weliveinhell, а тот сам был форком nillerusr/source-engine, поддерживаемого сообществом дерева Source, чья родословная уходит к утечке кода движка Source в 2020 году. Сохранения пришлось перевести на виртуальную файловую систему Emscripten; присед переназначили на C, потому что Ctrl постоянно срабатывал как горячая клавиша браузера; аптечки и батареи ломались, и их чинили.
Полный рассказ есть в статье автора.
То, что делает это больше, чем демку: оно работает там, где настоящая игра не может
Громче всего в треде обсуждали не рендеринг. Обсуждали абсурдность того, где это запускается.
«Я не могу играть в HL2 в Steam, потому что в macOS больше нет поддержки 32 бит, а Valve так и не собрала игру под 64 бита. И вот пожалуйста — на той же ОС она играбельна в браузере».
Вот настоящий крючок. Нативная Mac-сборка Valve — 32-битный бинарник, который macOS больше не запустит, а версии под Apple Silicon нет. Веб-порт обходит всё это стороной. Другой читатель сформулировал желание прямо:
«Я просто хочу, чтобы Valve добавила в Steam официальные сборки под macos-arm64 для разных игр серии hl2 :-/».
Инверсия задела так, что породила небольшое эссе. Один разработчик спросил, как целая виртуальная машина, скомпилированная в браузер, вообще может быть проще в доставке, чем нативный порт:
«Как вышло, что это добралось до моего Mac на Apple Silicon раньше, чем Valve сделала нативную версию? … Если бы на нативные приложения тратили 10% тех усилий, что уходят на веб-приложения, мы бы ушли куда дальше».
Контраргумент пришёл с другой стороны: переносимость как защита от цензуры. Как только целая игра (или целая ОС под QEMU) сворачивается в одну веб-страницу, её можно хостить на чём угодно, от Raspberry Pi Zero до телефона, и «неважно, что заблокировано».
Что на самом деле сломано — от человека, который рендерит Source профессионально
Самое точное техническое замечание оставил Джеймс Дарпиниан, по его собственной биографии работавший в Physical Intelligence, Meta, Google и Microsoft, и автор браузерного графического обозревателя noclip.website. Он не восхищался, а перечислял:
«…этот веб-порт (в котором, похоже, не хватает многих шейдеров, включая глаза персонажей)».
Его собственный сайт, отметил он, рисует уровни Half-Life 2 с более точным затенением, чем играбельный порт: запустить движок и отрендерить его правильно — разные задачи. Игроки натыкались на одни и те же пробелы независимо друг от друга. Один, прошедший вступление десятки раз, составил список:
«У персонажей глаза совсем не те. У G-Man глаз не было вообще. А огромный экран с Брином отсутствовал».
Та же тройка багов (NPC без глаз, замершие губы, пустые внутриигровые экраны) всплывала на iPad Pro с M4, старом Intel MacBook и неигровом ноутбуке, вместе с сообщениями о жёстких вылетах на городской площади и в каналах. Чему никто не мог поверить, так это нижней планке: вступление рендерится с играбельной скоростью на железе, которое не обязано тянуть ААА-шутер 2004 года. Для тех, кто бросил игры примерно во времена Half-Life 2, эта вкладка всё ещё, каким-то образом, передовой край.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
«AI-first и open source» — но локальную модель не подключить никак
Inkeep выпустила OpenKnowledge — конкурента Obsidian под GPL-3, вся идея которого в работе с ИИ. Подвох тред нашёл сразу: приложение умеет управлять только Claude, Codex и Cursor, а свою модель подключить нельзя.