Разработка программы с графическим интерфейсом для запуска игр с помощью геймпада (OSEDUCONF-2024)
Материал из 0x1.tv
- Докладчик
Сфера компьютерных игр является одной из быстроразвивающихся индустрий в мире, в том числе приобретает популярность на платформах GNU/Linux.
Ввиду растущего спроса на связанное с играми СПО необходимо разработать программный продукт, позволяющий запускать видеоигры для разных платформ из одного меню.
В докладе приводится описание этапов разработки приложения с графическим интерфейсом запуска установленных через PortProton игр и программ с помощью геймпада.
Продемонстрированы результаты использования данного меню при управлении игровым контроллером.
Содержание
Видео
Презентация
Thesis
- https://github.com/Castro-Fidel/ingame
- видеоигры, PortProton, python, QT, QML.
На данный момент индустрия компьютерных игр является одной из быстроразвивающихся индустрий в мире, интерес к которой в пределах России остаётся высоким. Большинство видеоигр выпускается в виде исполняемых программ для зарубежной проприетарной ОС Microsoft Windows (как правило, для архитектур CPU x86 и AMD64 в виде 16-, 32- и 64-битных приложений).
Сообществом свободного программного обеспечения разрабатывается проект Wine, который формирует слой совместимости для запуска бинарных файлов с расширением «.exe» на системах GNU/Linux, таким образом позволяя работать с ПО, созданным исключительно для ОС семейства Windows[1].
В 2018 году компания Valve приняла решение сделать своё ответвление «Valve Proton» от вышеописанного проекта и реализовала модификацию для улучшения совместимости именно с видеоиграми, которая увеличивает производительность многопоточных игр, обеспечивает трансляцию вызовов DirectX 11 и 12 через API Vulkan, улучшает совместимость с игровыми контроллерами[2].
Существует отечественная утилита под названием PortProton, предоставляющая пользователю графический интерфейс для автоматической установки видеоигр (например, OSU, Genshin Impact), игровых центров (например, Lesta Game Center, vkPlay Games Center), эмуляторов платформ электронных приставок (например, эмулятор платформы игровой приставки Sony PlayStation Portable — PPSSPP), управления Wine-префиксами, запуска сторонних Windows-совместимых приложений и расширенной настройки[3].
Ввиду отсутствия у вышеописанной утилиты возможностей выбора видеоигр для запуска с помощью геймпадов и просмотра списка нативных для GNU/Linux приложений из категории «Игры» из репозиториев системы нашей командой было принято решение о разработке проекта «Ingame», решающего вышеописанные задачи.
Для формирования отзывчивого и удобного меню можно воспользоваться технологией Qt 6 QML, которая позволяет реализовывать графический интерфейс с использованием аппаратного ускорения через слой OpenGL. В качестве языка для программирования части обработки бизнес-логики был выбран Python 3.x ввиду популярности среди открытого программного обеспечения. Для связки Python с Qt (в том числе — QML) используется прослойка PySide. Проект Ingame использует менеджер зависимостей Poetry.
Список сторонних игр, запускаемых через Wine, запрашивается из сформированной утилитой PortProton директории. Информация о каждой выбранной игре загружается с ресурса цифрового распространения видеоигр Steam. Меню программы масштабируется под размер экрана. Управление реализовано как с помощью контроллера для Xbox 360 (стрелки на левом верхнем стике — выделение элементов в сетке, A — выбрать выделенный элемент, B — назад), так и при использовании клавиатуры (Tab — переключение фокуса на соседний правый элемент, Shift+Tab — фокус в обратную сторону, то есть на соседний левый элемент, Пробел — выбрать выделенный элемент, Esc — назад). Помимо геймпадов, поддерживается управление с сенсорного экрана.
Программа имеет несколько вкладок: управление питанием используемого устройства (например, выключить, перезагрузить), список игр PortProton, установленные нативные видеоигры, системные настройки (например, произвести переход в полноэкранный режим). После выбора конкретного наименования происходит переход в меню с информацией и кнопками запуска игры. На рисунке выше продемонстрирован список игр, показываемый после запуска приложения.
Проект «Ingame» размещён на хостинге IT-проектов Github, имеет лицензию MIT, все желающие могут присоединиться к разработке.