20

Нативный запуск игр на движке Ren'Py в Linux

Надеюсь, ни для кого не станет открытием, что операционные системы на базе ядра Linux не пользуются большим почётом среди разработчиков видеоигр. Такое положение дел вынуждает энтузиастов по всему миру разрабатывать различные ухищрения для запуска Windows-игр в Linux. В этом материале мы познакомимся с небольшой хитростью, которая позволит нам выполнить нативный запуск множества игровых проектов на движке Ren'Py, даже если сами разработчики не позаботились о версии для Linux.

Особенности Ren'PyПрежде чем переходить к запуску игр, необходимо чуть подробней разобрать, что из себя представляет игровой движок Ren'Py и созданные с его помощью игры.


Ren'Py - это открытый игровой движок, ориентированный на создания ролевых игр и визуальных новелл с помощью языка программирования Python. Пользуется широкой популярностью среди инди-разработчиков и насчитывает десятки тысяч игр, среди которых такие известные проекты, как: Бесконечное лето, Врата Штейна, Doki Doki Literature Club и многие другие.

Более подробно разбирать настолько простой игровой движок не имеет большого смысла. Так что не будем тянуть кота за хвост и перейдём уже к запуску игр.


Система автора

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

Запуск игр из консолиДля демонстрации работоспособности была выбрана случайная бесплатная визуальная новелла Stillwater.

1. Удостоверимся, что наша выбранная визуальная новелла построена именно на игровом движке Ren'Py. Для этого заходим в папку с установленной игрой и проверяем наличие там подпапки renpy. Если она есть, то переходим к следующему шагу.

В папке с игрой, помимо файлов расширения .exe для запуска игры под Windows, также присутствует и стандартный скрипт .sh для запуска в Linux. Однако не спешите его запускать, потому как c ним могут часто возникать различные проблемы, связанные с правами доступа или же его попросту может и не быть.

2. Для запуска игры переходим в папку с установленной игрой и в подпапке /lib/linux-x86_64 находим основной исполняемый файл игры. Обычно он подписан как и сама игра.

Вводим в терминале команды:

cd папка_с_вашей_игрой/lib/linux-x86_64 # Перейти в папку с игрой

./название_вашей_игры  # Запустить игру


Такой немного муторный, но изощренный способ, позволяет выполнить нативный запуск любой игры созданный на игровом движка Ren'Py.

Если кому-то лень каждый раз это всё проделывать, то можно прямо как в Windows, тыкая бездумно по картиночкам реализовать запуск игр.


Способ для ленивых1. Выполним установку файлового менеджера: sudo pacman -S nautilus.

2. Переходим с помощью нового файлового менеджера в подпапку /lib/linux-x86_64 и через правый клик>свойства назначаем файл исполняемым.

3. Пробуем выполнить запуск.

Всё работает!


Заключение

Вот, собственно, и всё! Без установки каких-либо прослоек совместимости, а лишь зная особенности работы игрового движка Ren'Py, мы всего за пару минут сумели превратить наш Linux в настоящую игровую станцию с доступом к множеству прекрасных игровых проектов. Уважайте свободу, используйте Linux и ни в коем случае не предавайте себя.


Если вам понравился материал, то, пожалуйста, посетите блог автора ---> ТЫК.

Видеоверсия

ОРИГИНАЛ

GNU/Linux

1.2K поста15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Автор поста оценил этот комментарий
Вот такой. Кроме системных путей (/lib, /usr/lib/,/usr/sbin) есть ещё служебные пути в каталоге игры. Это всё, что не корневой каталог игры и не bin/ в этом каталоге. lib64 - скорее всего solibs, являющиеся зависимостями проекта. Ни лезть в такие каталоги самому, ни заставлять юзеров туда лезть не является хорошей идеей.

Вы на название темы обратили внимание?
О Создатель, про собственные либы уже было. Я понимаю, что вы не копались в том, как работает Renpy, а основываетесь на своём опыте работы c Unix-системами, но скрипт .sh в ренпу играх, лишь чекает систему пользователя и автоматом выбирает нужную архитектуру и запускает проект.

if [ -z "$RENPY_PLATFORM" ] ; then RENPY_PLATFORM="$(uname -s)-$(uname -m)" case "$RENPY_PLATFORM" in Darwin-*|mac-*) RENPY_PLATFORM="mac-x86_64" ;; *-x86_64|amd64) RENPY_PLATFORM="linux-x86_64" ;; *-i*86) RENPY_PLATFORM="linux-i686" ;; Linux-*)

Да. Обход это себе вредить. По поводу моих слов пп модифицированной среды есть что сказать? Или по-вашему в любом пакете в линуксе можно напрямую запустить бинарник и всё заработает?
Выше уже сказано. Вы на название темы обратили внимание X2?

Нативный запуск это прямой запуск, даже если разрабы рекламят свой проект с либами "Only Windows".

Термин нативный это обозначение способности запуска проекта на выбранном оборудование системы или  стандартными средствами системы. Никто не говорит бинарный запуск...

Вы слишком завязли в ТЗ.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Забыл дополнить последнее, Запуск ПО скомпилированого под систему и средствами системы.
В данном случае игра, что разработчиками заявляется "Only Windows" содержит из коробки все нужные либы. Так что куда нативнее...

1
Автор поста оценил этот комментарий
Какой служебный путь? Не путайте либы привязанные к проекту, с системными.

Вот такой. Кроме системных путей (/lib, /usr/lib/,/usr/sbin) есть ещё служебные пути в каталоге игры. Это всё, что не корневой каталог игры и не bin/ и usr/bin в этом каталоге. lib64 - скорее всего solibs, являющиеся зависимостями проекта. Ни лезть в такие каталоги самому, ни заставлять юзеров туда лезть не является хорошей идеей.


Обход - это себе вредить?

Да. Обход это себе вредить. Если у вас много времени копаться в файловой структуре проекта и игнорировать то, что написано разработчиками, то пожалуйста. По поводу моих слов пп модифицированной среды есть что сказать? Или по-вашему в любом каталоге с игрой в линуксе (особенно такой, которая идёт 1 директорией с зависимостями, а не через пакетный менеджер) можно напрямую запустить бинарник и всё заработает? В игры под GemRB играли когда-нибудь?


Нативный запуск это прямой запуск, даже если разрабы рекламят свой проект с либами "Only Windows".

Термин "нативный запуск на Linux" обычно обозначает наличие бинарников ELF. Применительно к скриптам применяют просто термин "запуск", тк не бывает "не нативного" запуска .py на линуксе. Исключение - если игра поставляется с .so шками и другими платформо-специфичными зависимостями. Но если их нет под линукс, вы простым чмодом игру не запустите в любом случае.

раскрыть ветку (1)
Автор поста оценил этот комментарий
Вот такой. Кроме системных путей (/lib, /usr/lib/,/usr/sbin) есть ещё служебные пути в каталоге игры. Это всё, что не корневой каталог игры и не bin/ в этом каталоге. lib64 - скорее всего solibs, являющиеся зависимостями проекта. Ни лезть в такие каталоги самому, ни заставлять юзеров туда лезть не является хорошей идеей.

Вы на название темы обратили внимание?
О Создатель, про собственные либы уже было. Я понимаю, что вы не копались в том, как работает Renpy, а основываетесь на своём опыте работы c Unix-системами, но скрипт .sh в ренпу играх, лишь чекает систему пользователя и автоматом выбирает нужную архитектуру и запускает проект.

if [ -z "$RENPY_PLATFORM" ] ; then RENPY_PLATFORM="$(uname -s)-$(uname -m)" case "$RENPY_PLATFORM" in Darwin-*|mac-*) RENPY_PLATFORM="mac-x86_64" ;; *-x86_64|amd64) RENPY_PLATFORM="linux-x86_64" ;; *-i*86) RENPY_PLATFORM="linux-i686" ;; Linux-*)

Да. Обход это себе вредить. По поводу моих слов пп модифицированной среды есть что сказать? Или по-вашему в любом пакете в линуксе можно напрямую запустить бинарник и всё заработает?
Выше уже сказано. Вы на название темы обратили внимание X2?

Нативный запуск это прямой запуск, даже если разрабы рекламят свой проект с либами "Only Windows".

Термин нативный это обозначение способности запуска проекта на выбранном оборудование системы или  стандартными средствами системы. Никто не говорит бинарный запуск...

Вы слишком завязли в ТЗ.
показать ответы
1
DELETED
Автор поста оценил этот комментарий

Достаточно же просто +x прописать на те файлы, которые не вышло запустить и спокойно запускать игру с sh, который идёт от разработчика.  Зачем мудрить? Если хочется запускать с ярлыка - /use/share/applications вроде путь для гнома, для кед не помню, другими de не пользовался давно.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Не всегда, гном иногда блочит на 10 минут ввод рута, что не позволяет так выполнить запуск.

показать ответы
2
Автор поста оценил этот комментарий

Сборник вредных советов + пиар блога.


- Прямой запуск исполняемого файла игры, находящегося явно по служебному пути, - плохая идея. Игре может требоваться например модифицированный LD_LIBRARY_PATH или установка конфига/ресурсов в ~/ перед запуском. Какие именно действия требуются для гарантии запуска - знают только двое: высокоуровневый установочный скрипт и высокоуровневый скрипт для запуска игры. Делать что-то в их обход - себе вредить. Если у вас проблемы с install.sh, почему не фиксить их, ведь почему-то необходимость делать то же самое для исполняемого файла у вас вопросов не вызвала?


- Запускать игру в обход того, что написано в README или на сайте, поставляющем игру, - себе вредить.
Не нужно изобретать НИКАКОЙ магии с chmod итд. Всё должно быть описано в readme. Есть README для линукса, но он работает - открываем баг, по желанию фиксим его на своей стороне, если он простой (вроде прав доступа на install.sh). Нет README и наиболее очевидные действия (прямой запуск исполняемого файла) не работают - тоже баг.


- Что такое "нативный запуск" применительно к скриптам на питоне, коими являются игры на Ren'Py?

раскрыть ветку (1)
Автор поста оценил этот комментарий

PS. Вы слишком следуете методичкам.

2
DELETED
Автор поста оценил этот комментарий

Причем здесь рут вообще? Просто chmod +x path_to_file для файлов, на которые ругнулся скрипт и все.

раскрыть ветку (1)
Автор поста оценил этот комментарий

В ведите пару раз не тот и поймёте о чём я.

показать ответы
2
Автор поста оценил этот комментарий

Сборник вредных советов + пиар блога.


- Прямой запуск исполняемого файла игры, находящегося явно по служебному пути, - плохая идея. Игре может требоваться например модифицированный LD_LIBRARY_PATH или установка конфига/ресурсов в ~/ перед запуском. Какие именно действия требуются для гарантии запуска - знают только двое: высокоуровневый установочный скрипт и высокоуровневый скрипт для запуска игры. Делать что-то в их обход - себе вредить. Если у вас проблемы с install.sh, почему не фиксить их, ведь почему-то необходимость делать то же самое для исполняемого файла у вас вопросов не вызвала?


- Запускать игру в обход того, что написано в README или на сайте, поставляющем игру, - себе вредить.
Не нужно изобретать НИКАКОЙ магии с chmod итд. Всё должно быть описано в readme. Есть README для линукса, но он работает - открываем баг, по желанию фиксим его на своей стороне, если он простой (вроде прав доступа на install.sh). Нет README и наиболее очевидные действия (прямой запуск исполняемого файла) не работают - тоже баг.


- Что такое "нативный запуск" применительно к скриптам на питоне, коими являются игры на Ren'Py?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Какой служебный путь? Не путайте либы  привязанные к проекту, с системными.
Ничего игры не требуют, просто в линуксе интерпретатор из коробки.
Решать? Пожалуйста, это на выбор пользователя.
Обход - это себе вредить? Закройте ТЗ.
Нативный запуск это прямой запуск, даже если разрабы рекламят свой проект с либами "Only Windows".

показать ответы