Разработка программы с графическим интерфейсом для запуска игр с помощью геймпада (OSEDUCONF-2024) — различия между версиями

Материал из 0x1.tv

;{{SpeakerInfo}}: 
* {{Speaker|Михаил Тергоев}}
* {{Speaker|Глеб Орлов}}
* {{Speaker|Александр Давыдов}}
<blockquote>
Сфера компьютерных игр является одной из быстроразвивающихся индустрий в мире, в том числе 
приобретает популярность на платформах GNU/Linux. 

Ввиду растущего спроса на связанное 
с играми СПО необходимо разработать программный продукт, позволяющий запускать видеоигры 
для разных платформ из одного меню. 

В докладе приводится описание этапов разработки 
приложения с графическим интерфейсом запуска установленных через <tt>PortProton</tt> игр 
и программ с помощью геймпада. 

Продемонстрированы результаты использования данного 
меню при управлении игровым контроллером.
</blockquote>

{{VideoSection}}
{{vimeoembed|990136040|800|450}}
{{youtubelink|}}

{{SlidesSection}}
[[File:Разработка программы с графическим интерфейсом для запуска игр с помощью геймпада (OSEDUCONF-2024).pdf|left|page=-|300px]]

{{----}}

== Thesis ==

* https://github.com/Castro-Fidel/ingame
* видеоигры, PortProton, python, QT, QML.

На данный момент индустрия компьютерных игр является одной из быстроразвивающихся индустрий в мире, интерес 
к которой в пределах России остаётся высоким.
Большинство видеоигр выпускается в виде исполняемых программ для зарубежной проприетарной ОС Microsoft Windows 
(как правило, для архитектур CPU x86 и AMD64 в виде 16-, 32- и 64-битных приложений). 

Сообществом свободного 
программного обеспечения разрабатывается проект <tt>Wine</tt>, который формирует слой совместимости для запуска бинарных 
файлов с расширением «.exe» на системах <tt>GNU/Linux</tt>, таким образом позволяя работать с ПО, созданным исключительно 
для ОС семейства Windows<ref name="yank-1">WineHQ  Run Windows applications on Linux, BSD, Solaris and macOS, [https://www.winehq.org/]</ref>.

В 2018 году компания Valve приняла решение сделать своё ответвление «Valve Proton» от вышеописанного проекта и 
реализовала модификацию для улучшения совместимости именно с видеоиграми, которая увеличивает производительность 
многопоточных игр, обеспечивает трансляцию вызовов DirectX 11 и 12 через API Vulkan, улучшает совместимость 
с игровыми контроллерами<ref name="yank-2">Introducing a new version of Steam Play, [https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561]</ref>.

Существует отечественная утилита под названием <tt>PortProton</tt>, предоставляющая пользователю графический интерфейс 
для автоматической установки видеоигр (например, OSU, Genshin Impact), игровых центров (например, Lesta Game Center, 
vkPlay Games Center), эмуляторов платформ электронных приставок (например, эмулятор платформы игровой приставки 
Sony PlayStation Portable  PPSSPP), управления Wine-префиксами, запуска сторонних Windows-совместимых приложений 
и расширенной настройки<ref name="yank-3">PortProton  ALT Linux Wiki, [https://www.altlinux.org/PortProton]</ref>.

Ввиду отсутствия у вышеописанной утилиты возможностей выбора видеоигр для запуска с помощью геймпадов и просмотра 
списка нативных для GNU/Linux приложений из категории «Игры» из репозиториев системы нашей командой было принято 
решение о разработке проекта «Ingame», решающего вышеописанные задачи.

Для формирования отзывчивого и удобного меню можно воспользоваться технологией <tt>Qt 6 QML</tt>, которая позволяет 
реализовывать графический интерфейс с использованием аппаратного ускорения через слой <tt>OpenGL</tt>. В качестве языка 
для программирования части обработки бизнес-логики был выбран Python 3.x ввиду популярности среди открытого 
программного обеспечения. Для связки <tt>Python</tt> с <tt>Qt</tt>  том числе  <tt>QML</tt>) используется прослойка <tt>PySide</tt>. 
Проект <tt>Ingame</tt> использует менеджер зависимостей <tt>Poetry</tt>.

[[File:osseduconf-2024-yankovsk-yankovsk-yankovsk.png|center|640px|thumb|Главное меню запуска игр через PortProton]]

Список сторонних игр, запускаемых через <tt>Wine</tt>, запрашивается из сформированной утилитой <tt>PortProton</tt> директории. 
Информация о каждой выбранной игре загружается с ресурса цифрового распространения видеоигр <tt>Steam</tt>. Меню программы 
масштабируется под размер экрана. Управление реализовано как с помощью контроллера для Xbox 360 (стрелки на левом 
верхнем стике  выделение элементов в сетке, A  выбрать выделенный элемент, B  назад), так и  при использовании 
клавиатуры (Tab  переключение фокуса на соседний правый элемент, Shift+Tab  фокус в обратную сторону, то есть на 
соседний левый элемент, Пробел  выбрать выделенный элемент, Esc  назад). Помимо геймпадов, поддерживается 
управление с сенсорного экрана.

Программа имеет несколько вкладок: управление питанием используемого устройства (например, выключить, перезагрузить), 
список игр <tt>PortProton</tt>, установленные нативные видеоигры, системные настройки (например, произвести переход в 
полноэкранный режим). После выбора конкретного наименования происходит переход в меню с информацией и кнопками запуска 
игры. На рисунке выше продемонстрирован список игр, показываемый после запуска приложения.

Проект «Ingame» размещён на хостинге IT-проектов Github, имеет лицензию MIT, все желающие могут присоединиться к разработке.


{{----}}
[[File:{{#setmainimage:Разработка программы с графическим интерфейсом для запуска игр с помощью геймпада (OSEDUCONF-2024)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->

<references/>

[[Категория:OSEDUCONF-2024]]
[[Категория:Draft]]
[[Категория:СПО в образовании]]

Версия 10:49, 30 июля 2024

Докладчик

Сфера компьютерных игр является одной из быстроразвивающихся индустрий в мире, в том числе приобретает популярность на платформах GNU/Linux.

Ввиду растущего спроса на связанное с играми СПО необходимо разработать программный продукт, позволяющий запускать видеоигры для разных платформ из одного меню.

В докладе приводится описание этапов разработки приложения с графическим интерфейсом запуска установленных через PortProton игр и программ с помощью геймпада.

Продемонстрированы результаты использования данного меню при управлении игровым контроллером.

Видео

Презентация

Thesis

На данный момент индустрия компьютерных игр является одной из быстроразвивающихся индустрий в мире, интерес к которой в пределах России остаётся высоким. Большинство видеоигр выпускается в виде исполняемых программ для зарубежной проприетарной ОС 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.

Главное меню запуска игр через PortProton

Список сторонних игр, запускаемых через Wine, запрашивается из сформированной утилитой PortProton директории. Информация о каждой выбранной игре загружается с ресурса цифрового распространения видеоигр Steam. Меню программы масштабируется под размер экрана. Управление реализовано как с помощью контроллера для Xbox 360 (стрелки на левом верхнем стике — выделение элементов в сетке, A — выбрать выделенный элемент, B — назад), так и при использовании клавиатуры (Tab — переключение фокуса на соседний правый элемент, Shift+Tab — фокус в обратную сторону, то есть на соседний левый элемент, Пробел — выбрать выделенный элемент, Esc — назад). Помимо геймпадов, поддерживается управление с сенсорного экрана.

Программа имеет несколько вкладок: управление питанием используемого устройства (например, выключить, перезагрузить), список игр PortProton, установленные нативные видеоигры, системные настройки (например, произвести переход в полноэкранный режим). После выбора конкретного наименования происходит переход в меню с информацией и кнопками запуска игры. На рисунке выше продемонстрирован список игр, показываемый после запуска приложения.

Проект «Ingame» размещён на хостинге IT-проектов Github, имеет лицензию MIT, все желающие могут присоединиться к разработке.


Разработка программы с графическим интерфейсом для запуска игр с помощью геймпада (OSEDUCONF-2024)!.jpg

Примечания и ссылки

  1. WineHQ — Run Windows applications on Linux, BSD, Solaris and macOS, [1]
  2. Introducing a new version of Steam Play, [2]
  3. PortProton — ALT Linux Wiki, [3]