Как  энтузиасты на мобильную систему «Аврора» портировали игры

Компьютерные игры давно вошли в нашу жизнь. Переносные устройства для игр тоже существуют давно. И, конечно же, с появлением мобильных телефонов, КПК и других носимых устройств игры проникли и на них. С развитием смартфонов (смеси КПК и мобильного телефона) игры на них становились всё более требовательными и графически интересными. Индустрия игр настолько развилась, что игры типа Genshin Impact или Fortnite отлично работают на смартфонах, а Doom (часто благодаря Raspberry Pi) запускают даже на тостере или кишечной палочке. Однако сейчас разговор пойдёт скорее об энтузиастах и других ОС.

За последние два года несколько российских компаний, разрабатывающих операционные системы (ОС), получили кратный рост благодаря уходу западных компаний и курсу на импортозамещение. Одна из таких компаний, Открытая мобильная платформа, разработчик мобильной операционной системы «Аврора» совместно с организацией развития видеоигровой индустрии (РВИ), весной 2024 года провела свою первую конференцию для создателей мобильных игр, где были продемонстрированы игры на отечественной мобильной операционной системе. Именно этот факт сподвиг меня пообщаться со специалистами компании, узнать, как портировали игры, какие тайтлы вообще работают на российской мобильной системе, и написать этот материал. Приятного чтения!

20f18a8276ebdc68b49eb715e4261bcf.png

Что такое игра для персонального компьютера?

Игра для персонального компьютера — это приложение со своими правилами создания, включая компоновку кода, ресурсов, жизненный цикл и так далее. Однако главное отличие заключается в том, что в играх делается сильный упор на визуальную часть и работу графики.

Разработчики игр часто используют сторонние графические движки или создают свои, чтобы наилучшим образом показать графическую составляющую игры. Например, условному приложению какого‑то магазина не нужно полностью использовать возможности, предоставляемые операционной системой и аппаратной составляющей устройства. SDK этих приложений используют стандартный набор виджетов, чего для игр будет недостаточно.

Поэтому у создателей игр есть два пути:  либо иметь свою внутреннюю разработку движка, которую нужно портировать на соответствующую платформу,  либо использовать сторонние решения, работающие на этой платформе, такие как Unreal Engine или Unity.

Портирование игр на ОС Аврора было вопросом времени. Этим могли заняться сторонние разработчики или энтузиасты. В случае с «Авророй» опередили всех собственные разработчики из «Открытой мобильной платформы». Эти порты делались в нерабочее время, как пет‑проект. Основная задача этих специалистов — создание операционной системы.

У ОМП есть SDK, который позволяет собирать и разрабатывать приложения под все типы устройств и различные архитектурные процессоры, на которых работает «Аврора». Разработчики ОМП считают, что это самое сильное отличие «Авроры» от Linux‑десктопов, поскольку Linux Desktop не предоставляют никаких инструментов, и разработчику приходится самостоятельно их находить, настраивать и проверять, заработают они или нет.

612d5b1c9d4011a013c07d313e230fa8.pngСергей Аносов

Директор по продукту ОС «Аврора»

«По‑моему, мы сейчас единственные, кто на российском рынке предоставляет инструменты разработки (SDK) для своей мобильной операционной системы. Причём SDK разных уровней: и для создания приложений, и для системной разработки, а также с возможностью интеграции в CI/CD. Мы в этом отношении близки к подходу, предлагаемому операционными системами iOS или Android, которые предоставляют свои SDK».

Три группы игр

1517b836ae380b135b3a1e70230e78bf.png

Для удобства я разделю компьютерные игры на три группы. Хочу оговориться: деление условное, только в рамках этого материала, вообще игры делить можно по самым разным критериям. В этом материале решено было взять только одну определённую классификацию.

Итак, вернёмся к разделению на группы. Первая — это браузерные игры. Их сейчас ведь не маленькая доля. Чаще всего это казуальные тайтлы, например «Весёлая ферма». Для этих игр не нужен какой‑то сложный графический движок.

Вторая группа — игры с более серьёзным движком (как инди, так и А‑, АА‑, ААА‑сегменты). Такие игры требуют портирования этого движка.

И третья группа — ретро‑игры. У этих игр тоже есть свои движки, но для современных устройств они считаются нетребовательными по мощностям.

Например, iOS разрешили размещать ретро‑игры в магазине. Существуют симуляторы различных приставок: от PlayStation до Sega, Dendy и так далее. И вот это тоже на самом деле хорошее направление, особенно в мобильных телефонах, когда люди хотят при помощи своего телефона вспомнить детство и поиграть в какую‑то любимую игру — недаром Apple этим озадачилась.

Браузерные игры

С первой группой, а именно с браузерными играми, всё просто: — они должны запускаться на любом устройстве с установленным современным браузером, независимо от операционной системы и аппаратной платформы.

С другими двумя группами ситуация интереснее с точки зрения портирования. Если говорить о «Авроре», то пока силами энтузиастов портированы в основном ретро‑игры, включая тайтлы с приставок Sega, NES и более требовательные, например Quake и Doom 3. Однако стоит отметить, что это всё равно игры даже не 2019 года выпуска.

Игры с более серьёзным движком

dce2b511d3cd04be23de4be783e37524.png2c18536ff125327062d1b8402962c04d.png

Начнём с игры типа Doom 3.

Как мне объяснил Ярослав Андреев, один из разработчиков‑энтузиастов игр, портированные тайтлы в основном написаны на C++. И преимущество «Авроры» в том, что С++ — это родная платформа для ОС. Для того же Android разработка приложений происходит на Java, для iOS — на Swift. Для этих языков нужно заниматься более сложным портированием, многое переделывать с нуля.

Также надо понимать, что часть переносов на другие ОС и платформы — не просто порты, а open‑source проекты этих игр (Quake, Doom 3, Half‑Life и так далее). И чтобы попробовать работу игр на ОС, надо скачать исходники этих проектов и собрать под конкретную систему. Когда разработчики собирают эти проекты, находятся дефекты, недостатки в совместимости ОС и игры. Эти недостатки исправляют и приводят тайтл к нормальному виду, чтобы всё правильно отображалось на ОС.

Отдельной доработки требует подключение джойстиков, но там тоже не так сложно — по известным интерфейсам, что есть в «Авроре», подсоединяются input в определённую игру.

ba26e5c873e839ce5b5ed1a2d60b2d0f.png

Разработчики мне объяснили, что «Аврора» поддерживает OpenGL (OpenGL ES3 и так далее), то есть графические ускорения и интерфейсы для разработчиков игр. Это нужно, чтобы показать игровым разработчикам, что на ОС от ОМП можно запускать более серьёзные игры, нежели простые казуалочки.

Портирование RetroArch

Идея с портированием Doom 3, Half‑Life вдохновила другого разработчика, Ильдара, на портирование RetroArch. Идея была в том, чтобы в короткое время заиметь большое количество игр без переноса каждой из них. И так как в RetroArch есть несколько эмуляторов ретроконсолей, то благодаря его переносу на «Аврору» сразу добавляется много игр с разных платформ.

6fe40cc443aa1ac38990f21e83041cf9.png95bb7843cf61177a14de4f108f987230.png

Портирование RetroArch на ОС «Аврора» началось с выделения особенностей и поддерживаемых технологий. Был подготовлен.spec файл и патчи для работы на ОС «Аврора».

Основные трудности возникли при прохождении проверки безопасности ОС (rpm‑validator) и подготовке к работе в «песочнице» (изменение путей). Также была проблема с некорректной регулировкой звука: RetroArch по умолчанию использовал формат float для звука, но это было исправлено в обновлениях ОС.

После добавления RetroArch было решено перенести эмуляторы таких консолей, как Super Nintendo, Nintendo Entertainment System, Sega Mega Drive, Sega Genesis, Game Boy Advance и PlayStation 1. Добавление других эмуляторов пока не планируется, поскольку необходимо учитывать технические параметры смартфона. Тем не менее, технически возможно перенести и более серьёзные эмуляторы, учитывая, что современные игровые движки переходят на новый Vulkan API, поддержка которого необходима для современных игр.

4461c577dde652c26f9ca42537f5ba06.png

Заключение

Единственное, в чём проблема разработки игры под «Аврору» — это позиционирование платформы. «Аврора» позиционируется как B2B‑система, игровой рынок — B2C. Поэтому пока всё находится в состоянии переговоров, но подвижки уже есть, и, как сказали специалисты ОМП, уже приходят запросы от игровых студий. Недавно уже были новости об установке на консоль ОС «Аврора» и ОС Alt Linux, и «Альт Мобаил» установили на одну из массмаркетовских консолей. Поэтому не удивлюсь, если скоро больше игр портируют на российские ОС и сами консоли. На Хабре вышел отличный материал, на мой взгляд, по созданию отечественной консоли с «Авророй» энтузиастом.

Однако надо понимать, что основная проблема развития той или иной платформы как игровой — количество игр. Я очень рад, что на «Аврору» уже можно их портировать. И в целом, считаю правильным вектором, когда для мобильной системы делаются игры, потому что смартфон много у кого есть, но вот именно позиционирование и количество игр дают больше всего ступеней для развития платформ. Пока портированием занимаются энтузиасты — это скорее спортивный интерес. Будем ждать, когда бизнес начнёт в коммерческих целях портировать игры.

Кстати, из интересного, в апреле 2024 года РВИ и F+ объявили о возможном тестовом финансировании портирования видеоигр на ОС «Аврора». Сейчас идёт сбор заявок на разработку двумерных игр под планшет F+ T1100 с «Авророй». Характеристики планшета слабенькие: МТ8788, 8 ядер, 2 ГГц, RAM 4 ГБ + ROM 64 ГБ или RAM 6 ГБ + ROM 128 ГБ, MicroSD до 512 ГБ. Потому и игры надо разработать нетребовательные. Компания F+ обещает следующие устройства на G99, а разработанные игры будут предустановлены на планшеты и телефоны. Поэтому F+ с РВИ готовы предложить грант (невозвратный) на портирование игр.

© Habrahabr.ru