Библиотека SDL 2 как таргет для Monkey X

  1. 2 г. назад

    Есть такая мультиплатформенная графическая библиотека - SDL 2 . Список таргетов очень значителен и весьма впечатляет - Android и iOS, Linux, Windows, Windows CE, BeOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX и QNX — и вдобавок есть неофициальные порты на другие системы.

    Насколько трудоёмким будет создание нового таргета для Monkey, базирующегося на SDL API как на платформе? Вероятно, самые трудности лежат в использовании указателей? (Или это как-то можно обойти использованием Poke?). Интерес не праздный, я бы использовал такое на ура, особенно если можно будет отвязаться от Mojo и от $99, имея возможность иметь кучу SDL-таргетов на не-Pro-версии Monkey X.

    Сейчас Monkey использует фреймворк GLFW для десктоп таргета, так что создание подобного на SDL, не должно стать большой проблемой. Проблемы с указателями обходятся путем написания нативной обертки для функций требующих указателей. Т.к. исходный код всех таргетов открыт, то можно основываться на нем.

    Но сам для себя я выбрал другой путь. Сейчас я работаю над форком Monkey - Mungo , в состав которого входит фреймворк harmony. В отличии от mojo, harmony написан на monkey и содержит не так много нативного кода. Также есть еще одно принципиальное отличие - harmony был создан для написания фреймворков подобных mojo и сейчас у меня уже есть реализация графической части mojo на harmony.

    К сожалению, в данный момент код harmony закрыт. Есть большая вероятность, что я сделаю его открытым и бесплатным, но мне нужно еще некоторое время, чтобы подумать.

  2. devolonter

    8 Mar 2015 Администратор Ответ
    2 г. назад исправил devolonter

    Сейчас Monkey использует фреймворк GLFW для десктоп таргета, так что создание подобного на SDL, не должно стать большой проблемой. Проблемы с указателями обходятся путем написания нативной обертки для функций требующих указателей. Т.к. исходный код всех таргетов открыт, то можно основываться на нем.

    Но сам для себя я выбрал другой путь. Сейчас я работаю над форком Monkey - Mungo , в состав которого входит фреймворк harmony. В отличии от mojo, harmony написан на monkey и содержит не так много нативного кода. Также есть еще одно принципиальное отличие - harmony был создан для написания фреймворков подобных mojo и сейчас у меня уже есть реализация графической части mojo на harmony.

    К сожалению, в данный момент код harmony закрыт. Есть большая вероятность, что я сделаю его открытым и бесплатным, но мне нужно еще некоторое время, чтобы подумать.

  3. Успехов проекту Mungo! Буду его использовать. Если у Вас есть что-то вроде плана работ (чем будет отличаться от Monkey, каковы предпосылки для появления форка), то я бы с удовольствием разместил эту информацию на нашем форуме по модульным языкам .

    Кстати, идеология Monkey X мне близка непонаслышке. Я являюсь автором подобной Monkey среды XDev , которая тоже спроектирована для разработки под различные таргеты с единого исходника (правда, набор таргетов другой - MS-DOS, ZX Spectrum, MSX, Windows 32/64 бит, Linux, Java ME, готовится подсистема для Android). Лучше всех проработан таргет ZX Spectrum, остальные находятся в различной степени готовности и доступны с репозитория проекта XDev .

    XDev работает по тому же принципу, что и Monkey - транслирует исходный текст в Си (а также в байт-код JVM) и вызывает средства сборки для нужной платформы. Входной язык XDev - паскалеподобный Оберон , наследник Модулы-2, и его надмножества (Оберон-2, Компонентный Паскаль). Это ещё более простые языки, чем Monkey.

    Мне кажется, такие средства как Monkey и XDev - реакция инди-разработчика на избыточную сложность IT-индустрии; ведь каждый новый язык, который с большим или меньшим восторгом принимается программистами, решая проблемы в одной области, часто порождает ворох проблем в другой (расходы на обучение специалистов, сопряжение с другими средствами и т.п.). Простой исходный язык и мультитаргетность - общие моменты Monkey и XDev.

    Унифицировать "старые" платформы, подводя под единый стиль разработки, - весьма нетривиальная задача, значительно более трудная, чем с современными платформами. И вот, кстати, я при разработке XDev примерялся к SDL 2 как к основе для современных таргетов. Но пока ещё не перешёл на неё - использую SDL 1.2

    Могу также дать парочку ссылок на неоконченные игры, разрабатываемые на XDev, не чтобы поиграть, а, скорее, чтобы оценить идеологический подход:

    Порт игры Dark Woods на Оберон - ZX Spectrum, Windows 32/64, Linux, Java ME.

    Игра Dash для J2ME, MS DOS и ZX Spectrum Скриншоты

  4. devolonter

    15 Mar 2015 Администратор

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

    @Zorko Успехов проекту Mungo! Буду его использовать. Если у Вас есть что-то вроде плана работ (чем будет отличаться от Monkey, каковы предпосылки для появления форка), то я бы с удовольствием разместил эту информацию на нашем форуме по модульным языкам

    Спасибо. Я на оф. форуме пытался составить, что-то типа дорожной карты, но в итоге придерживаться ее не удалось. Сейчас я пытаюсь реанимировать разработку. Она не забрасывалась, но темпы несколько удручают. Как только разберусь с этим, все подробно распишу, расскажу :)

или зарегистрируйтесь чтобы комментировать!