EugeneP

Портирование 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 ...]
[... продолжение следует ...]

comments powered by Disqus

Porting RenPy games to HaikuOS and genegal questions of package management

Porting in progress [...]


© EugeneP, 2009-2024