Ноябрь 2016 кратко

October 2016 recap
Эта статья описывает начало разделения библиотеки MJIN на модули.

Как только мы собрали OpenSceneGraph для Android, стало очевидно, что часть функционала MJIN не нужна на Android. Например, UIQt – это основа интерфейса Редактора. Раз Редактор – это приложение для ПК, то UIQt не нужен на Android.

Мы решили рассмотреть два подхода к разделению MJIN на модули: во время сборки (build-time) и исполнения (run-time).
Разделение во время сборки означает гибкую систему настроек MJIN, что позволит собирать её различно под каждую платформу.
Разделение во время исполнения означает разделение MJIN на несколько небольших библиотек с последующим соединением во время исполнения, что позволит легко менять функционал без повторной сборки.

Исследование разделения во время исполнения.

Т.к. разделение во время исполнения имеет больше преимуществ, мы начали с этого подхода.
Самый простой способ достичь его заключался в использовании C API, т.к. правила C ABI намного проще правил C++ ABI.

Мы создали маленький проект, включающий в себя приложение, библиотеку и плагин.
Приложение было слинковано с библиотекой и использовало её для загрузки плагина.
Библиотека предоставляла функции для регистрации плагина и вызывала его функции.
Плагин предоставлял функции для библиотеки и вызывал её функции.

Исследование прошло на ура: проект работал в полном соответствии с нашими ожиданиями на Linux и Windows.
Тем не менее, т.к. MJIN на текущий момент является большой монолитной сущностью, мы отложили применение C API до окончания разделения во время сборки.

Начало разделения во время сборки.

Мы выделили следующие модули из MJIN:

  • Android: предоставляет Java Native Interface (JNI) к MJIN
  • Sound: предоставляет доступ к OpenAL
  • UIQt: предоставляет доступ к Qt

Модули Sound и UIQt на текущий момент статически линкуются в MJIN, тогда как модуль Android линкуется динамически из-за ограничений JNI.

В следующем году мы изменим структуру MJIN так, чтобы её можно было легче собрать под разные платформы.

На этом мы заканчиваем статью о начале разделения библиотеки MJIN на модули.

This entry was posted in Monthly recap, News and tagged , . Bookmark the permalink.

Home Forums Ноябрь 2016 кратко

This topic contains 0 replies, has 1 voice, and was last updated by  kornerr 5 months, 1 week ago.

Viewing 1 post (of 1 total)
Author Posts
Author Posts
15 December 2016 at 10:51 #2435

kornerr
Participant

[lang_en] This article describes the start of MJIN library separation into modules. [/lang_en] [lang_ru] Эта статья описывает начало разделения библио
[See the full post at: http://opengamestudio.org/news/2426]


  Quote
Viewing 1 post (of 1 total)

You must be logged in to reply to this topic.