[*nix, Игры и игровые приставки] Универсальный менеджер приложений (игр)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Любителям Linux-like систем наверняка приходилось устанавливать приложения по найденным руководствам в сети. В итоге описание оказывалось устаревшим/нерабочим, и для получения конечного результата приходилось собирать по крупицам и сводить воедино сведения из различных источников для "похожих" ОС. Иногда вам везло и все заводилось с первого раза.
Либо пытались поиграть в свою любимую игру детства, где для запуска важно установить нужную версию Wine с правильными настройками, или пошаманить с монтированием образов в Dosbox...
Предлагается очередной способ решения подобных проблем.
Для игр существует, конечно, единственный правильный способ — установка Windows на отдельный диск. Но в мире насчитывается 1.3 миллиарда PC-геймеров. Из них — пользователи MacOS (3%) и Linux (1%) — 50 миллионов человек. Поэтому эта статья для них.
Сегодня существует огромное разнообразие средств, упрощающих установку и запуск игр и, скорее всего, вы уже нашли все любимые игры детства на Steam и давно наслаждаетесь ими в своем Ubuntu. Но не все так просто. Например, любителей старых Point-n-Click адвенчур ждет разочарование: очень многих шедевров нет в наличии ни у одного дистрибьютора (distributor) видеоигр.
Дистрибьюторов можно условно разделить на:
Универсальные:
- Steam — сервис цифровой дистрибуции, изначально для игр и апдейтов от Valve, но позже расширен и для других разработчиков;
- GOG — платформа дистрибуции видеоигр и фильмов, подразделение CD Project (которые Ведьмак и Cyberpunk), расположенное в Польше;
- Humble Store — онлайн магазин игр.
Узко-специальные:
- Origin — игры Electronic Arts;
- Uplay — игры Ubisoft;
- Epic Games Store — игры Epic Games;
- Blizzard’s Battle.net — игры Blizzard.
Дружественнее всех зарекомендовал себя GOG. Именно они предоставляют игры в т.н. DRM-формате. Но, в последнее время, их инициатива с Galaxy клиентом тоже попахивает неудобствами и привязками.
Все основные дистрибьюторы поставляют собственные мульти-платформенные клиенты.
Разнообразие клиентов породило дополнительную прослойку абстракции для конечных пользователей — т.н. менеджеров игр (game managers). Вот самые известные из них:
- PlayOnLinux/BSD/Mac
- Lutris
- Homura
Менеджеры игр, в свою очередь, используют т.н. запускатели (runners) для запуска на конечном устройстве пользователя, иногда с дополнительными прослойками (например, Vulkan для Wine).
Основные запускатели:
- Wine — эмулятор Windows
- Dosbox — эмулятор DOS
- ScummVM — виртуальная машина для многих старых квестов
- Эмуляторы консолей
PlayOnLinux/BSD/Mac
Пациент скорее мертв. Судя по активности на github, четвертая версия давно мертва, а пятая никогда не родится. Хотя, кто его знает...
Достоинства:
- Приличная база поддерживаемого софта и игр.
Недостатки:
- Оборачивает исключительно Wine;
- Кодовая база не обновляется;
- Вся логика построена на полусотне функций адового bash-скриптинга;
- Новые скрипты принимаются через веб-форму (ссылку на сайте найти не удалось).
Lutris
На сегодняшний день — лидер и стандарт для Linux.
Достоинства:
- Ansible-like скриптинг;
- Добавление игр из gog и steam аккаунтов одним кликом.
Недостатки:
- Вся база с играми вынесена на отдельный полузакрытый сервер;
- Неудобная форма для добавления новых скриптов (нет версионности и т.п., решение по добавлению выносит непонятный комитет);
- Поддержка только Linux;
- Создает отдельный Wine-префикс для каждой новой игры (а они довольно увесисты);
- Нет клиентского API, отсюда UI довольно уныл;
- Нет возможности установки из образов (актуально для старых игр).
Homura
Пошли по граблям Lutris-а, сделали решение исключительно под одну ОС (в данном случае FreeBSD), адовый bash-скриптинг внутри, при этом небольшая база с играми. Также непонятно с добавлением игр.
Разработаем свою собственную систему, удовлетворяющую следующим критериям:
- Расширяемость;
- Гибкость;
- Функциональность;
- Кроссплатформенность.
В первую очередь, необходимо избавиться от недостатков существующих решений, для этого реализуем следующий функционал:
- Удобство добавления новых игр\приложений. Любой пользователь может без труда добавить поддержку нового софта через github репозиторий;
- Отказ от серверной части. База с приложениями должна быть частью самого менеджера и обновляться вместе с ним;
- Предоставление удобного API\CLI для создания сторонних UI;
- Отделение изменяемых данных (например, save-ов для игр) от остальных ресурсов приложения;
- Предоставление базовой возможности инсталляции с медиа-носителя. Важно для редких старых игр, которых не найти через онлайн дистрибьюторов, зато относительно легко найти их медиа-образы;
- Никакой черной магии в скриптах, каждый шаг должен быть понятен без изучения исходников.
Нечто способное объединить и заменить apt в Ubuntu и pkg в FreeBSD (и при этом еще обладать возможностями Lutris).
Предлагается реализовать всю систему на базе Ansible и его мощной скриптовой поддержкой в виде плей-буков (playbooks). Почему Ansible? Хотя бы потому, что для достижения всех вышеназванных целей вам в любом случае придется разработать свой собственный Ansible-like движок, а это весьма затратно по времени.
Полученное решение (yag) выложено в свободный доступ на github.
Рассмотрим примеры добавления новых игр в базу.
Ace Ventura Pet Detective
Старая, мультяшная Point-n-Click адвенчура. Распространялась на 1CD.
Для добавление поддержки создаем папку в ports/games со следующей структурой:
aceventura:
tasks:
install_image.yml
main.yml
run.yml
info.yml
Структура остается на усмотрение автора, обязательными являются лишь info.yml (описание игры) и main.yml (точка входа). Код можете посмотреть в репозитории, опишу лишь суть.
Установка производиться с помощью команды:
yag install aceventura --source=/path/to/CD1.iso
В install_image.yml передается путь к образу (/path/to/CD1.iso), где производится распаковка и копирование. Источником может быть как исполнимый файл с GOG-а (конкретно этой игры там нет), так и любой другой формат носителя.
Запуск:
yag run aceventura
Игра требует наличия save-ов в основной папке, поэтому запускающий скрипт (run.yml) копирует save-ы из постоянного хранилища и запускает wine с правильными параметрами. При выходе новые save-ы копируются обратно в хранилище. За сейвами во всех играх нужно внимательно следить и не забывать их сохранять (save your saves), создавая символические ссылки там, где это возможно. Также для запуска именно этой игры нужно включить virtual desktop:
- wine:
exec: "{{ app_folder }}/Ace.exe"
virtual_desktop: "800x600"
Обо всех поддерживаемых параметрах модуля wine читайте здесь.
Bad Mojo (redux)
Тоже классика, в которой вам предлагается вжиться в роль милой букашки.
Структура папок аналогична первому примеру:
badmojo_redux:
tasks:
main.yml
run.yml
install_image.yml
install_innosetup.yml
templates:
BADMOJO.j2
vars:
main.yml
info.yml
Здесь уже поддерживается несколько вариантов установки:
yag install badmojo_redux --source=/path/to/CD.iso
- запустит install_image.yml (распаковка CD образа)
yag install badmojo_redux --source=/path/to/badmojo_gog_setup.exe
- запустит install_innosetup.yml (распаковка GOG-овского innosetup exe-шника).
Игра требует точного указания путей к ресурсам, поэтому создаем Jinja-совместимый шаблон конфига (BADMOJO.j2).
Запуск:
yag run badmojo_redux
Как видите, внутри скриптов нам доступна вся мощь Ansible, к тому же мы можем спокойно дописывать свои модули.
Другие примеры можно посмотреть здесь
Недостатки
И все-таки Ansible — это в первую очередь про развертывание микросервисов на "тысячах нод". Использовать его для локальной установки игр, а тем более заменять им apt/pkg, с одной стороны, забивание гвоздей микроскопом, но с другой, если вся необходимая функциональность имеется — почему бы и нет? Более того, недостаток может легко превратиться в достоинство при реализации, например, онлайн сервиса видеоигр, где развертывание приложений на удаленные сервера станет необходимостью (кстати, если кто-то умеет звук\видео в VNC — пишите в личку, есть идея для неплохого стартапа).
Следствие главного недостатка — задержки при выполнении скриптов. Не критично при инсталляции, но может раздражать при запуске.
Также для добавления новых приложений требуется опыт в написании Ansible-playbooks. Но этого не избежать в любом подобном менеджере. А здесь вы хотя бы сможете применить полученные знания в другой области (к примеру, устроиться на работу в сферу devops).
Возможности
Описанный подход открывает много возможностей. Выше упоминалось о полноценной замене apt/pkg во всех дистрибутивах всех ОС. Согласитесь, было бы здорово, если бы, например, для установки Skype вам не пришлось качать deb-файл в Ubuntu, шаманить с pacman в Archlinux или мучиться с эмулятором linux в FreeBSD, а просто выполнить, например:
yag install skype
и получить одинаковый результат в любой ОС.
При этом все скрипты установки для разных ОС версионированы и поддерживаются в актуальном состоянии сообществом пользователей! А мощь Ansible-playbooks позволяет гибко реализовывать любые механизмы добавления в любой ОС.
Теперь самое важное: если вам понравилась идея, важно чтобы именно вы добавили свою любимую игру\программу в репозиторий, оформив простой PR на github.
Спасибо!
===========
Источник:
habr.com
===========
Похожие новости:
- [Open source, *nix] FOSS News №47 – дайджест новостей и других материалов о свободном и открытом ПО за 14-20 декабря 2020 года
- [Open source, Git, Софт] FreeBSD переносит свой репозиторий с Subversion на Git
- Red Hat объясняет трансформацию CentOS желанием сделать более открытой разработку RHEL
- [Тестирование IT-систем, Разработка мобильных приложений, IT-инфраструктура, Разработка под Android, DevOps] VirtualBox — Запуск Android эмулятора в виртуальной среде для тестирования Android проекта
- [Гаджеты, Старое железо, Игры и игровые приставки] Самодельная портативная консоль microByte (перевод)
- [Игры и игровые приставки, IT-компании] Покупатели Cyberpunk 2077 сталкиваются с невозможностью вернуть деньги за игру
- Проект FreeBSD анонисировал переход на Git в ближайшие дни
- [Тестирование IT-систем, Программирование, Kubernetes] Тестирование инфраструктуры как кода Terraform: анализ модульных тестов и сквозной разработки путем тестирования поведен (перевод)
- [Разработка игр, Управление продуктом, Игры и игровые приставки, IT-компании] CD Projekt Red признала, что «игнорировала сигналы» о проблемах с Cyberpunk 2077 на консолях Xbox One и PlayStation 4
- [Разработка игр, Старое железо, Игры и игровые приставки] Энтузиаст добавил в ретроконсоль трассировку лучей
Теги для поиска: #_*nix, #_igry_i_igrovye_pristavki (Игры и игровые приставки), #_*nix, #_games, #_ansible, #_packet_manager, #_linux, #_freebsd, #_*nix, #_igry_i_igrovye_pristavki (
Игры и игровые приставки
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:25
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Любителям Linux-like систем наверняка приходилось устанавливать приложения по найденным руководствам в сети. В итоге описание оказывалось устаревшим/нерабочим, и для получения конечного результата приходилось собирать по крупицам и сводить воедино сведения из различных источников для "похожих" ОС. Иногда вам везло и все заводилось с первого раза. Либо пытались поиграть в свою любимую игру детства, где для запуска важно установить нужную версию Wine с правильными настройками, или пошаманить с монтированием образов в Dosbox... Предлагается очередной способ решения подобных проблем. Для игр существует, конечно, единственный правильный способ — установка Windows на отдельный диск. Но в мире насчитывается 1.3 миллиарда PC-геймеров. Из них — пользователи MacOS (3%) и Linux (1%) — 50 миллионов человек. Поэтому эта статья для них. Сегодня существует огромное разнообразие средств, упрощающих установку и запуск игр и, скорее всего, вы уже нашли все любимые игры детства на Steam и давно наслаждаетесь ими в своем Ubuntu. Но не все так просто. Например, любителей старых Point-n-Click адвенчур ждет разочарование: очень многих шедевров нет в наличии ни у одного дистрибьютора (distributor) видеоигр. Дистрибьюторов можно условно разделить на: Универсальные:
Узко-специальные:
Дружественнее всех зарекомендовал себя GOG. Именно они предоставляют игры в т.н. DRM-формате. Но, в последнее время, их инициатива с Galaxy клиентом тоже попахивает неудобствами и привязками. Все основные дистрибьюторы поставляют собственные мульти-платформенные клиенты. Разнообразие клиентов породило дополнительную прослойку абстракции для конечных пользователей — т.н. менеджеров игр (game managers). Вот самые известные из них:
Менеджеры игр, в свою очередь, используют т.н. запускатели (runners) для запуска на конечном устройстве пользователя, иногда с дополнительными прослойками (например, Vulkan для Wine). Основные запускатели:
PlayOnLinux/BSD/Mac Пациент скорее мертв. Судя по активности на github, четвертая версия давно мертва, а пятая никогда не родится. Хотя, кто его знает... Достоинства:
Недостатки:
Lutris На сегодняшний день — лидер и стандарт для Linux. Достоинства:
Недостатки:
Homura Пошли по граблям Lutris-а, сделали решение исключительно под одну ОС (в данном случае FreeBSD), адовый bash-скриптинг внутри, при этом небольшая база с играми. Также непонятно с добавлением игр. Разработаем свою собственную систему, удовлетворяющую следующим критериям:
В первую очередь, необходимо избавиться от недостатков существующих решений, для этого реализуем следующий функционал:
Нечто способное объединить и заменить apt в Ubuntu и pkg в FreeBSD (и при этом еще обладать возможностями Lutris). Предлагается реализовать всю систему на базе Ansible и его мощной скриптовой поддержкой в виде плей-буков (playbooks). Почему Ansible? Хотя бы потому, что для достижения всех вышеназванных целей вам в любом случае придется разработать свой собственный Ansible-like движок, а это весьма затратно по времени. Полученное решение (yag) выложено в свободный доступ на github. Рассмотрим примеры добавления новых игр в базу. Ace Ventura Pet Detective Старая, мультяшная Point-n-Click адвенчура. Распространялась на 1CD. Для добавление поддержки создаем папку в ports/games со следующей структурой: aceventura:
tasks: install_image.yml main.yml run.yml info.yml Структура остается на усмотрение автора, обязательными являются лишь info.yml (описание игры) и main.yml (точка входа). Код можете посмотреть в репозитории, опишу лишь суть. Установка производиться с помощью команды: yag install aceventura --source=/path/to/CD1.iso
В install_image.yml передается путь к образу (/path/to/CD1.iso), где производится распаковка и копирование. Источником может быть как исполнимый файл с GOG-а (конкретно этой игры там нет), так и любой другой формат носителя. Запуск: yag run aceventura
Игра требует наличия save-ов в основной папке, поэтому запускающий скрипт (run.yml) копирует save-ы из постоянного хранилища и запускает wine с правильными параметрами. При выходе новые save-ы копируются обратно в хранилище. За сейвами во всех играх нужно внимательно следить и не забывать их сохранять (save your saves), создавая символические ссылки там, где это возможно. Также для запуска именно этой игры нужно включить virtual desktop: - wine:
exec: "{{ app_folder }}/Ace.exe" virtual_desktop: "800x600" Обо всех поддерживаемых параметрах модуля wine читайте здесь. Bad Mojo (redux) Тоже классика, в которой вам предлагается вжиться в роль милой букашки. Структура папок аналогична первому примеру: badmojo_redux:
tasks: main.yml run.yml install_image.yml install_innosetup.yml templates: BADMOJO.j2 vars: main.yml info.yml Здесь уже поддерживается несколько вариантов установки: yag install badmojo_redux --source=/path/to/CD.iso
yag install badmojo_redux --source=/path/to/badmojo_gog_setup.exe
Игра требует точного указания путей к ресурсам, поэтому создаем Jinja-совместимый шаблон конфига (BADMOJO.j2). Запуск: yag run badmojo_redux
Как видите, внутри скриптов нам доступна вся мощь Ansible, к тому же мы можем спокойно дописывать свои модули. Другие примеры можно посмотреть здесь Недостатки И все-таки Ansible — это в первую очередь про развертывание микросервисов на "тысячах нод". Использовать его для локальной установки игр, а тем более заменять им apt/pkg, с одной стороны, забивание гвоздей микроскопом, но с другой, если вся необходимая функциональность имеется — почему бы и нет? Более того, недостаток может легко превратиться в достоинство при реализации, например, онлайн сервиса видеоигр, где развертывание приложений на удаленные сервера станет необходимостью (кстати, если кто-то умеет звук\видео в VNC — пишите в личку, есть идея для неплохого стартапа). Следствие главного недостатка — задержки при выполнении скриптов. Не критично при инсталляции, но может раздражать при запуске. Также для добавления новых приложений требуется опыт в написании Ansible-playbooks. Но этого не избежать в любом подобном менеджере. А здесь вы хотя бы сможете применить полученные знания в другой области (к примеру, устроиться на работу в сферу devops). Возможности Описанный подход открывает много возможностей. Выше упоминалось о полноценной замене apt/pkg во всех дистрибутивах всех ОС. Согласитесь, было бы здорово, если бы, например, для установки Skype вам не пришлось качать deb-файл в Ubuntu, шаманить с pacman в Archlinux или мучиться с эмулятором linux в FreeBSD, а просто выполнить, например: yag install skype
и получить одинаковый результат в любой ОС. При этом все скрипты установки для разных ОС версионированы и поддерживаются в актуальном состоянии сообществом пользователей! А мощь Ansible-playbooks позволяет гибко реализовывать любые механизмы добавления в любой ОС. Теперь самое важное: если вам понравилась идея, важно чтобы именно вы добавили свою любимую игру\программу в репозиторий, оформив простой PR на github. Спасибо! =========== Источник: habr.com =========== Похожие новости:
Игры и игровые приставки ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:25
Часовой пояс: UTC + 5