Краткое Введение В Структуру Moai

Когда речь идет о бизнес-приложениях, принято писать несколько копий для каждой из популярных мобильных платформ.

Это вполне оправдано, поскольку платформы Android/iOS/etc настолько специфичны, что реализовать принцип «Код сразу — запускать везде» достаточно сложно.

Однако ситуация совершенно иная, когда речь идет о мобильных играх.

В играх обычно есть свой стиль графических элементов — кнопок, меню и т. д., а вся графика построена либо на спрайтах, либо на 3D (заметьте — далее мы будем говорить только о 2D-движках).

Возникает вполне естественное желание один раз написать приложение и собрать его под разные платформы.

Кроссплатформенная структура MOAI поможет нам добиться этого.

Прежде всего, почему МОАИ? Эта основа была выбрана целенаправленно.

Для себя я решил, что мне нужен двигатель, который:

  • Кросс-платформенный
  • Использует аппаратное ускорение OpenGL.
  • Логика игры реализована на скриптовом языке (желательно LUA).

  • Должна быть возможность писать расширения на C/C++.

  • Желательно с открытым исходным кодом.

    Последнее было связано не с желанием сэкономить, а с возможностью редактировать сам движок в случае каких-то критических ошибок.

Раньше, до выбора фреймворка, я еще не программировал на Lua, но выбор все равно пал на него, поскольку по своим параметрам он подходит идеально — потребляет мало памяти, имеет сборку мусора и прекрасно интегрируется с приложениями на языке C. За время обучения Луа полностью оправдал его ожидания, поэтому могу сказать, что выбор оказался вполне удачным.

Среди кандидатов на фреймворки я рассматривал Corona SDK, Gideros, Cocos2d-X (да, его можно написать на Lua) и MOAI. Если сравнивать Corona SDK и Gideros, то на мой взгляд Gideros предпочтительнее.

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

Корона в бесплатном режиме ставит таймаут на сборку (но не на эмуляторе), и после запуска появляется диалог, что нужно купить Корону, дальше диалога не будет. Писать плагины можно только после покупки Corona Enterprise, цена на которую вообще не указана.

UPD: как мне написал пользователь Lerg, их продукт в последнее время немного изменился: habrahabr.ru/post/175689 Но все же в чем-то Corona лучше — у нее большее сообщество, да и сам движок более оптимизирован (загрузка спрайтов и т. д.).

Выбирая между Cocos2d-X и MOAI, я выбрал последний, потому что.

он изначально разрабатывался как движок Lua.

Монтаж

Давайте клонируем это здесь github.com/moai/moai-dev или, еще лучше, делаем вилку.

Бинарную сборку ставить не рекомендую, так как если вас не интересует доработка движка, то скорее всего лучше попробовать Gideros. Затем откройте проект в Xcode moai-sdk/xcode/osx/MoaiSample.xcodeproj и скомпилируйте двоичный файл moai. Внимание, существуют десктопные версии MOAI как для Windows, так и для Linux! Но собрать iOS-проект можно, конечно, только на Mac. После установки moai попробуем запустить пример: Перейдите в каталог /usr/local/moai-sdk/samples/hello-moai и запустите пример.



moai main.lua

На этом этапе программист, выполняющий разработку для Android или iOS, должен получить огромное удовольствие от того, как работает пример.

Оно начинается мгновенно! Никаких компиляций, перепаковок и т.п.

Я запустил пример и сразу увидел результат. Честно говоря, оно того стоит!

Андроид

Для запуска приложения на Android или iOS необходимо создать соответствующие сборки.

Для Android все делается довольно просто — с помощью скрипта moai-sdk/ant/make-host.sh создаем базовый Android-проект, для скрипта можно указать дополнительные параметры.

Базовый проект — это исходный код Android-приложения, который содержит библиотеки Moai, а также скрипт для упаковки lua-файлов, графики и других файлов, необходимых вашей программе, в конечный *.

apk. Скопируйте полученный unkown-host в нужное место (у меня это каталог ~/Projects), укажите путь к Android SDK в settings-local.sh:

android_sdk_root="/usr/local/android-sdk"

и путь, где находится основной проект Lua

src_dirs=( "/Users/alex/Projects/myproject" )

Теперь, чтобы запустить приложение на Android, запустите скрипт run-host.sh. Нужно иметь в виду, что сборщик довольно простой — он просто берет исходники Android-приложения, копирует в них проект MOAI и собирает apk. Те.

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



iOS

Под iOS механизм примерно такой же, но такого удобного скрипта для создания нового хоста нет. Предлагается скопировать пример проекта и изменить его.

В принципе, это несложно, но лично мне довольно неудобно, когда нужно возиться с графическими настройками проекта в Xcode. Внимание — свежие исходники MOAI из репозитория (что неудивительно) могут содержать ошибки, поэтому если не получается собрать проект, то попробуйте.

Поэтому, если вы не хотите тоже с этим разбираться, то либо проверяйте стабильные ревизии (по тегам), либо клонируйте мой форк ( https://github.com/Nepherhotep/moai-dev ), который редко обновляется и поэтому более стабилен.

Дальнейшая разработка выглядит так: вы пишете и тестируете код на работающей машине, а затем собираете его для Android/iOS перед выпуском версии.



Полезный

getmoai.com - Официальный сайт МОАИ github.com/moai/moai-dev — исходники на GitHub github.com/ymobe/rapanui/tree/master/rapanui-sdk - структура высокого уровня с использованием MOAI github.com/derickd/moaigui — библиотека виджетов для MOAI github.com/Nepherhotep/terevaka - еще один высокоуровневый фреймворк для МОАИ, самодельный и с вкусностями.

Подробности в моей следующей статье habrahabr.ru/post/176771 Теги: #moai sdk #iOS #Android #Lua #разработка iOS #Разработка мобильных приложений #Разработка Android

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.