Игроки, которые застали расцвет компьютерных игр в 1990-х и начале 2000-х, давно выросли. Вместе с ними изменились требования к играм, железу и графике. Но иногда хочется вернуться к проектам, с которых когда-то начинался игровой путь, даже если подходящий для них компьютер уже не так просто купить. Этот интерес подхватили энтузиасты, которые нашли способ запускать некоторые старые игры в необычном формате.
Теперь, чтобы поиграть в старую игру, достаточно просто открыть браузер. «Компьютерра» разбиралась, почему сегодня для запуска старой игры достаточно браузера, какую роль в этом сыграл язык программирования WebAssembly и почему техническая возможность запустить игру еще не означает, что ее файлы можно свободно распространять.

Как запускают классику на веб-страницах
Еще недавно для запуска игры эпохи DOS или Windows 95 требовались эмуляторы, отдельные программы для настройки видеокарты и просто длительная настройка железа. Сегодня часть таких игр можно запустить прямо в браузере. Пользователю достаточно открыть нужную страницу и начать игру. При этом современный компьютер вовсе не обязан быть мощным игровым устройством. На самом деле игру можно запустить даже в браузере на телефоне.

Это стало возможно благодаря развитию браузеров. Они давно перестали быть программами только для просмотра сайтов, так как научились выполнять сложный код.
Одной из технологий, сделавших это возможным, стал WebAssembly, или WASM. Если упростить, это способ превратить обычную программу в код, который браузер способен выполнять. Разработчику не нужно адаптировать старый проект под архитектуру браузера — он может взять существующий код программы, подготовить его для работы в новой среде и запустить внутри новой вкладки.

Важно понимать, что браузер не обязательно запускает саму игру напрямую. В одном случае он может эмулировать компьютер, для которого она была создана. Игра считает, что перед ней старый процессор, память и операционная система, хотя на самом деле все это работает внутри современного ПО и железа.
Другой вариант — перенос игрового движка. Тогда браузер не имитирует старый компьютер целиком, а запускает адаптированную версию программы, которая непосредственно отвечает за работу игры. Такой подход требует гораздо больше работы со стороны разработчиков, зато позволяет эффективнее использовать возможности современного компьютера.
Таким образом, оба способа позволяют вернуть к жизни игры, для которых современный компьютер далеко за пределами фантазии. Рассмотрим же эти способы подробнее.
Первый способ — эмулировать старый компьютер
Для игр эпохи DOS самый очевидный способ запуска интерактивных проектов в браузере — эмуляция. Специальная программа создает для игры виртуальную копию компьютера, на котором она когда-то работала. Проект обращается к этой системе так, будто перед ней старое железо, хотя на самом деле все происходит внутри современного железа.
Один из самых известных эмуляторов такого типа — DOSBox. Он не меняет саму игру и не пытается переделать ее под современные операционные системы. Вместо этого программа создает для игры привычную среду и переводит ее команды на язык, который понимает современный компьютер.
Чтобы запустить такой эмулятор в браузере, его код адаптируют для WebAssembly — специальный формат, который позволяет браузеру выполнять программы, написанные не на JavaScript. В результате программа, которая раньше устанавливалась на компьютер отдельно, может выполняться непосредственно внутри вкладки. Поверх нее запускается оригинальная DOS-игра, поэтому для нее почти ничего не меняется. Она по-прежнему считает, что работает на старом железе.

У такого подхода есть важное преимущество. Игру не нужно переделывать. Если эмулятор достаточно точно воспроизводит старую систему, он способен запускать оригинальный файл игры практически без изменений. Поэтому один и тот же принцип работы можно использовать для большого количества DOS-программ.
Но есть и ограничения. Эмулятор постоянно переводит команды старой программы в действия современного компьютера, поэтому часть его ресурсов уходит на саму эмуляцию. Для большинства игр DOS это не становится серьезной проблемой, поскольку по современным меркам они очень нетребовательны. Но чем сложнее программа, тем больше вычислительной мощности требуется от браузера и устройства пользователя.
В этом случае используется другой подход. Вместо того чтобы воспроизводить в браузере старый компьютер, разработчики адаптируют под него игровой движок. Тогда дополнительный слой эмуляции не нужен, а программа получает более прямой доступ к возможностям современной среды.
Второй способ — перенести сам движок
Хороший пример такого способа — The Elder Scrolls III: Morrowind. Этот проект показывает, что эмулятор нужен далеко не всегда. Вместо воспроизведения старого компьютера разработчики могут взять код, который отвечает за работу игры, адаптировать его для браузера и запустить непосредственно внутри вкладки.

OpenMW — свободный проект, который воспроизводит работу игрового движка Morrowind. Разработчик под ником Virtastic подготовил его для работы в браузере с помощью Emscripten — инструмента, который переводит код обычных программ в формат, подходящий для запуска в браузере. Затем код собрали в WebAssembly. Графику адаптировали для вывода через WebGL2, а работу с файлами и сохранениями перенесли на средства браузера. В результате движок смог работать непосредственно во вкладке, без эмуляции старого компьютера.
Такой вариант потенциально эффективнее эмуляции всей старой системы. Браузеру не приходится изображать старый процессор и оборудование. Он непосредственно выполняет код игрового движка, который уже адаптирован к современному компьютеру.

Есть и обратная сторона. Такой перенос значительно сложнее. Нужно заставить работать графику, звук, физику, файловую систему, обработку ввода и другие компоненты, которые изначально были рассчитаны на другой сценарий работы.
В случае OpenMW разработчику пришлось отдельно адаптировать OpenSceneGraph, перенести графику на WebGL2 и заменить привычную файловую систему потоковой загрузкой. При этом сами игровые данные Morrowind проект не включает. Пользователь может указать папку Data Files из своей официально купленной копии игры, после чего браузер получает необходимые файлы непосредственно с компьютера.
Это важное отличие от обычного сайта с играми. В техническом смысле браузер здесь становится не клиентом облачного сервиса, а средой выполнения программы.
Большая игра не обязательно должна загружаться целиком
Еще одна проблема старых игр заключается в размере файлов. Современный браузер вполне способен работать с гигабайтными данными, но заставлять пользователя каждый раз скачивать весь архив было бы неудобно.
Поэтому используются потоковая загрузка и локальное хранилище. Данные можно получать по мере необходимости и сохранять в браузере для последующих запусков.
В OpenMW-Web, например, игровые файлы загружаются по мере обращения к ним. При использовании собственной копии Morrowind содержимое Data Files не нужно целиком отправлять на сервер. Система читает необходимые данные непосредственно с файлов пользователя. Сохранения и настройки при этом могут храниться в браузерном хранилище.

В проектах на базе js-dos используется похожая идея. Сам js-dos поддерживает локальное хранение состояния, а современные версии используют браузерные механизмы постоянного хранения файловой системы. Это позволяет работать даже с достаточно крупными играми.
К примеру, ресурс Retro Online показывает этот принцип как готовый пользовательский сервис. На сайте доступны DOS- и Windows-игры, а сохранения можно загружать и хранить локально в браузере или, для платных аккаунтов, в облаке.

Другой проект «КАЛИNКА» показывает еще один путь запуска. Это русская версия игры 1988 года Snatcher, которую создатели проекта предлагают запускать непосредственно на сайте.
В подобных случаях браузер может выступать оболочкой для специализированного эмулятора конкретной платформы. Например, старые компьютеры и консоли иногда удается воспроизвести достаточно точно, чтобы оригинальная программа не заметила разницы.
Поэтому понятие «игра работает в браузере» само по себе мало что говорит о внутреннем устройстве проекта. За одним окном может скрываться полноценный эмулятор старого компьютера, порт игрового движка или сочетание нескольких технологий сразу.
По словам Игоря Беженаря, автора проекта, большая часть работы выполнялась с помощью инструментов, доступных прямо в браузере. Электронные таблицы позволяют править перевод без привязки к конкретному компьютеру, а собственными наработками легко делиться с коллегами.
«Порой приходит свежая мысль, а домашнего компьютера под рукой нет. Тут очень выручают онлайн-инструменты. Таблицы можно править прямо с телефона, а Python-скрипты для распаковки и упаковки графики — писать в браузере. Есть доступные HEX-редакторы с широкими возможностями и даже дизассемблер, если хочется глубже разобраться в коде.»
Игорь Беженарь, автор проекта «КАЛИNКА»
Игорь отмечает, что многие инструменты постепенно перекочевывают в браузер и становятся доступнее. Не нужно ничего устанавливать или искать подходящую версию программы для конкретной операционной системы.
Главная проблема находится не в коде
Технически запустить старую игру сегодня зачастую проще, чем получить право на ее распространение. Возраст игры ничего автоматически не меняет. То, что проект вышел двадцать или тридцать лет назад и давно исчез из магазинов, не означает, что он стал общественным достоянием. Некоторые ресурсы прямо предупреждают, что отсутствие коммерческой поддержки или прекращение разработки не отменяет авторских прав.
У игры может быть сразу несколько уровней прав. Всемирная организация интеллектуальной собственности (WIPO) отмечает, что современные видеоигры являются сложными объектами права, включающими программный код и различные аудиовизуальные элементы. Поэтому отдельно могут возникать вопросы по коду, музыке, изображениям, персонажам и другим компонентам.
В российском законе программа для ЭВМ охраняется авторским правом. Статья 1261 ГК РФ распространяет такую охрану на исходный текст и объектный код, а также на создаваемые программой аудиовизуальные отображения.
Статья 1270 ГК РФ относит к использованию произведения, среди прочего, воспроизведение, распространение, публичный показ и доведение произведения до всеобщего сведения. Последнее особенно важно для веб-сервисов, поскольку сайт фактически предоставляет пользователю доступ к произведению через интернет.
Поэтому схема «мы просто запустили игру на сервере» сама по себе не решает вопрос с правами. Если сайт хранит файлы игры и предоставляет к ним доступ пользователям, необходимо отдельное основание для такого использования. Здесь проходит принципиальная граница.
Сам эмулятор может быть полностью легальным программным продуктом с открытым исходным кодом. DOSBox распространяется как открытое программное обеспечение, а OpenMW имеет лицензию GPLv3. Это не дает автоматически права распространять вместе с ними коммерческую игру.
Именно поэтому OpenMW-Web отдельно указывает, что не содержит файлов Morrowind, и предлагает пользователю предоставить собственную легально приобретенную копию. Движок и игровые данные рассматриваются как разные сущности.
Ресурс Retro Online использует другую модель. На страницах игр пользователь должен подтвердить наличие легальной копии, а в юридическом уведомлении сервис заявляет, что предоставляет эмуляторы, тогда как образы игр получает из Archive.org.
Это уже более сложная юридическая конструкция. Само наличие такого уведомления на сайте не является универсальным разрешением на распространение конкретной игры. Правомерность зависит от правообладателя, лицензии на конкретный образ, законодательства соответствующей страны и обстоятельств его использования.
Также для старых игр часто используется термин abandonware. Обычно им называют программное обеспечение, которое больше не продается или фактически заброшено правообладателем.
Но это скорее описание состояния продукта, а не юридический статус. Если компания перестала продавать игру, авторские права от этого автоматически не исчезают. Поэтому размещение старой игры на сайте только на том основании, что ее невозможно купить в обычном магазине, остается спорным.
Выводы
Запуск старых игр в браузере перестал быть техническим экспериментом. Современные технологии позволяют возвращать к жизни проекты, для которых раньше приходилось искать старый компьютер, устанавливать устаревшую систему или долго настраивать эмулятор. Для пользователя весь этот процесс постепенно сводится к открытию страницы в браузере и запуску игры.
При этом браузер не решает главный вопрос, связанный с правами на старые игры. Возможность технически запустить программу не дает права распространять ее файлы, а возраст проекта не делает его автоматически свободным для использования. Поэтому будущее браузерных ретроигр зависит не только от развития технологий, но и от того, насколько разработчики сервисов смогут сочетать удобный запуск с законным доступом к игровым данным.
Читайте также: