Портирование RenPy-игрушек на HaikuOS и общие вопросы пакетостроения
Преамбула
Други мои, есть у меня мечта - портануть на Гайку вагончик игр, написанных на
Bennu GD
,
Ren'Py
(и, как незибежное следствие,
Pygame
).
Есть очень впечатляющие вещи среди них.
N лет назад я убедился, что трудностей собственно с портированием не будет:
пигейм портили раз 20 на БеОС, Бенну я сам собрал почти без проблем. Но!
Наша любимая ОС немного нестабильна, и сделанные сборки переставали работать (а то и собираться) через
k-ревизий (libpng и libssl передают привет!). Так что, пруфнув концепт, я забил на портирования в ожидании стабилизации
Гаечки и появления штатных средств пакетирования и дистрибуции.
И вот, осень года 2013. Свершилось: замерджен пакетник! Я воспрял духом и оживился.
Пакетник
Пакетник замерджен. начали выходить ночные сборки с ним билдятся, баги фиксятся,
гайды пишутся.
Но™ некоторые сильные бородатые люди из русскоязычного комъюнити оказались немного недовольны
получившейся реализацией (хотя всецело одобряют саму идею). Настолько немного, что
затевают форк с
альтернативной
системой управления пакетами.
Кто прав кто виноват и можно ли всё исправить? Жизнь рассудит.
А я стану её безжалостным орудием! А
мы можем в этом поспособствовать
воплотив мой оригинальный план: попробовать всунуть в новорожденный репозиторий Гайки
реальный софт со сложными и неоднозначными зависимостями.
В процессе, естественно повылазит куча вопросов принципиальных и технических, решение
которых должно натолкнуть на мудрые мысли...
Поехали?
Ein Plan
Начнём портить с ренпишного. Цели:
Juniper's Knot (RenPy 6.13)
Starswirl Academy [Demo] (RenPy 6.15)
Dysfunctional Systems: Ep1 (RenPy 6.15), коммерческая
Magical Diary [Steam version] (RenPy 6.13?), коммерческая
Oh Josiah (RenPy 6.15)
(последняя просто до кучи :))
Бесплатные игры будем трамбовать в пакеты.
Для коммерческих игр нужно изготовить патч-инсталлятор.
Но в первую голову глянем на сам RenPy. Что такое renpy по сути? - это модуль
для питона - хитрая надстройка над pygame, который тоже модуль питона. Всё это счастье
базируется, в основном, на SDL.
Кроме модуля у renpy есть renpy-sdk, это конструктор, в котором сбственно и создаются игры.
Тоже написано на питоне. В конструктор встроены (опционально) редакторы Editra и jEdit.
Первый тоже на питоне (wxGTK), а второй на Яве.
Имеем граф зависимостей (упрощённо):
game
<< renpy
<< python
renpy
<< pygame
<< python
[.. skip ..]
<< glew | gles
<- fribidi
<- jEdit
pygame
<< SDL
<< python
jEdit
<< jre
Усугубим:
renpy-6.13 основан на python-2.6, более позние версии на python-2.7. Питоны эти
обратно несовместимы. Т.е. игруле собраной с renpy-6.13 не подойдет renpy-6.15.
Ну и pygame тоже разных версий нужен.
По моему норамално, чтоб пообстрелять пакетник :)
Поехали
Посмотрим, что у нас есть на старте:
~> uname -a
Haiku shredder 1 hrev46104 Sep 25 2013 01:16:26 BePC Haiku
~> installoptionalpackage -l
Optional Packages that have been installed:
...
Python
SDLLibs
...
Installable Optional Packages:
...
developmentjava
fribidi
...
~>
Питон 2.6, SDL 1.2, что позволяет нам относительно беспроблемно собрать
pyagme и renpy-6.13. (см. скриншот в начале).
Патчим и полируем
[... skip ...]Пакуем игрушку
[... skip ...][... продолжение следует ...]