Энтузиаст и разработчик под ником Nolen (автор сайта с миллионом чекбоксов) рассказал о своём новом проекте. Nolen реализовал его вместе с коллегой Аднаном Агой. Разработчики запустили Doom внутри приложения «Фото» в iOS.
Для запуска проекта, который технически играбелен, требуется восемь вручную настроенных ярлыков в iOS, специальная папка для фотографий и отдельно настроенный компьютер.
«Я пытался встроить игру в огороженный сад iOS несколько месяцев. Мне нравится размещать игры в странных местах, а iOS — это классически закрытая экосистема, что делает её интересной целью», — уточнил Nolen.
Разработчики выяснили, что с помощью быстрых команд в iOS можно заходить на произвольные URL-адреса и загружать изображения. Таким образом, можно выделить отдельный веб-сервер, на котором будет работать игра. Эта система может выдавать изображения, которые можно передавать на смартфоне, например, в качестве обоев на экране блокировки.
Но в этом случае динамический контент экрана блокировки не даёт высокую частоты для смены изображений. Исследователи были ограничены 1 кадром каждые 5 секунд. А вот в приложения «Фото» таких ограничений нет.
Простая загрузка изображений в приложение «Фото» в этом случае не сработает, так как это будет не совсем анимация. Но нашёлся способ обойти этот момент: открыть/развернуть первое изображение, загрузить следующее изображение, удалить изображение, на которое смотрел пользователь. Таким образом, можно получить эффект анимации. И это… вроде как работает.
Чтобы запустить Doom внутри приложения «Фото» в iOS разработчики взяли за базу версию игры, в которую можно было играть в браузере, а также настроили ноутбук в качестве сервера управления и контроля. Можно было отправить на ноутбук команду, например, «двигаться вперёд» или «стрелять», а система отправляла соответствующее нажатие клавиши в игру и возвращала нужные изображения из игры на смартфон.
Для отправки команд из приложения «Фото» на сервер разработчики решили использовать функцию AssistiveTouch. С Assistive Touch всегда под рукой дисплей, похожий на геймпад, который находится на кране, и который можно настраивать с помощью различных команд.
AssistiveTouch предоставляет доступ к восьми командам. Разработчики создали восемь сочетаний клавиш, сопоставленных с важными командами в Doom — влево/вправо/вперёд/назад/шаг влево/шаг вправо/перезарядка/стрельба — и подключили их к конечным точкам на сервере управления и контроля на ноутбуке.
В итоге Doom в приложении «Фото» запустился, но частота кадров была довольно низкой. Разработчики попытались расширить возможности системы для загрузки нескольких изображений, но анимация, которая воспроизводилась каждый раз при отображении нового изображения, сильно дезориентировала.
Авторы проекта хотели увеличить частоту кадров и уменьшить частоту загрузки новых изображений, чтобы видеть меньше анимации при отображении новых изображений. И тогда они решили загружать анимированные файлы GIF. Разработчики добавили в код проекта возможность сделать несколько снимков экрана игры, удерживая соответствующие клавиши, и объединить эти снимки экрана в GIF перед возвратом изображения на смартфон.
После этого авторы проекта решили перейти на файлы MP4,которые позволили отображать анимацию в четыре раза быстрее, чем при GIF.
Чтобы не было проблемы с зацикливанием видео, авторы проекта добавляли в каждый файл на несколько секунд последний кадр на видео, чтобы в игре не отображалось начало старого видео, пока готовится новое.
Nolen пояснил, что с Аднаном Агой они просидели над этим проектом три месяца.
«Но работа над игрой была очень весёлой! Сейчас я редко работаю с кем-то над проектом; было приятно поработать с Аднаном. А работа с сочетаниями клавиш была мучительной в самом весёлом смысле — одна из моих любимых вещей в создании таких игр — насколько глупыми в итоге становятся ваши проблемы. Я не уверен, что это полностью утолило мою тягу к глупым вещам iOS — работа над этим проектом дала мне слишком много идей! И я бы хотел, чтобы мы нашли способ транслировать видео ещё быстрее, чтобы игра ощущалась более реалистично. Но я горжусь тем, что у нас получилось», — подытожил Nolen
Финальный код проекта по запуску Doom внутри приложения Фото в iOS
В апреле этого года разработчик под ником wojciech-graj представил порт Doom под названием cyDoomGeneric для запуска игры в приложении Microsoft Paint под Windows XP. Каждый кадр игры прорисовывается с помощью специального алгоритма в реальном времени. В зависимости от сложности сцены этот процесс занимает от одной до двух с половиной минут. Автор пояснил, что играть приходится совсем неспешно. Для управления пользователю необходимо закрашивать появляющиеся в конце каждой генерации под изображением клавиши.
Ранее разработчик под ником 0x0mer представил проект doom-htop, который позволяет играть в Doom при использовании консольной утилиты диспетчера задач htop.
Источник: habr.com