Pull to refresh
0

Marmalade C++ и ShiVa3D: начало работы с игровыми движками для платформы Android x86

Reading time 11 min
Views 12K
Занимаетесь разработкой кросс-платформенного приложения или игры для Android? Если так, то вам стоит присмотреться к специальным инструментам. Например, к SDK Marmalade C++ 8.0 и игровому движку ShiVa3D. Сегодня мы поговорим об их применении для платформы Android x86.



Marmalade C++ SDK


Идея, лежащая в основе Marmalade SDK, звучит следующим образом: «написанное один раз запускается где угодно». Мысль это не новая, но вполне актуальная. Один и тот же код можно компилировать и исполнять на всех поддерживаемых платформах – вместо того, чтобы использовать разные языки программирования и API. Такая универсальность достигается благодаря API, основанному на C/C++, который играет роль уровня абстракции для API каждой из целевых платформ.

Marmalade SDK – это набор инструментов для разработки кросс-платформенных приложений. Сам он может работать в различных средах, мы будем пользоваться Windows. Marmalade включает в себя набор библиотек, примеров кода и инструментов для разработки, тестирования и развёртывания приложений на различных платформах. В частности – на Android x86. Пакет хорошо документирован.

Предварительная подготовка


Ниже мы поговорим об использовании Marmalade SDK в среде Windows. Если вы работаете в Mac OS, обратитесь к этому разделу документации.
Итак, перед установкой Marmalade SDK надо подготовиться. А именно, для дальнейшей работы нам понадобится:

  • Windows 7 или более новая версия ОС;

  • Java JRE 5 или выше;

  • Microsoft Visual Studio 2008 SP1/2010/2012/2013/2015 (С++), подойдут различные варианты, в том числе – и Express-версии пакета;

  • Scons (C++), ZeroBrane Studio (Lua);

  • Среда разработки Android. Можно загрузить её с сайта Google или получить в составе Intel INDE;

  • Android NDK. Если вы установили Intel INDE, NDK уже будет присутствовать в системе.

  • Apache Ant (необязательно).

Перед работой стоит проверить переменные среды, и, если они при установке вышеописанных инструментов, не были правильно настроены, исправить это.

  • Переменная ANDROID_SDK_ROOT должна содержать полный путь к папке Android SDK. В нашем случае SDK установлена в составе Intel INDE, данная переменная выглядит так: C:\Intel\INDE\IDEintegration\SDK

  • Переменная ANDROID_NDK_ROOT, соответственно, должна указывать на папку Android NDK. В нашем случае это C:\Intel\INDE\IDEintegration\NDK

  • Переменная JAVA_HOME содержит путь к JAVA JDK. В нашем случае – это C:\Program Files\Java\jdk1.7.0_79

  • Переменная ANT_HOME должна указывать на папку Apache ANT. Например, она может выглядеть так: C:\ant\apache-ant-1.9.6

  • В переменной Path, помимо прочего, должны содержаться пути к следующим папкам: JDK, JDK bin, NDK, ANT bin, Android SDK tools, Android SDK platform-tools. Пути разделяются точкой с запятой.

Редактируя переменные среды, будьте внимательны, проследите, чтобы в конце путей не было специальных символов или разделителей вроде «\».

Теперь, когда предварительная подготовка проведена, пришло время загрузить Marmalade SDK. Нас интересует, в частности, Marmalade Core. Прежде чем вам дадут ссылку на загрузку пакета, потребуется регистрация на сайте. После установки, для того, чтобы приступить к экспериментам, нужно будет ввести лицензионный код, который придёт на электронную почту, указанную при регистрации.

Разработка для Android x86 с использованием Marmalade SDK


Рассмотрим проект HelloWorld из набора примеров, который поставляется вместе с Marmalade SDK. В нашем случае проект находится здесь: C:\Marmalade\8.0\examples\HelloWorld.


Содержимое папки примера HelloWorld

В папке находятся MKB и CPP-файлы для двух демонстрационных проектов. В них показаны разные способы, которыми Marmalade может поприветствовать мир. Имена файлов, относящихся к одному проекту, совпадают.
Файл с расширением MKB содержит информацию о проекте. А именно:

  • Параметры компиляции
  • Информацию об используемых библиотеках
  • Сведения о файлах с исходным кодом
  • Данные о графических, звуковых и других ресурсах
  • Параметры развёртывания проекта

Подробности об MKB-файлах можно найти в документации. CPP-файл – это исходный код проекта, написанный на C++.

Существует три способа работы с Marmalade-проектами. Все они связаны с MKB-файлами. Первый применяется при автоматическом создании проекта для используемой IDE, второй задействует инструменты командной строки, третий основан на использовании Marmalade Hub.

Работа с Marmalade-проектом в Visual Studio


Сделаем двойной щелчок по файлу IwGxHelloWorld.mkb. Marmalade, открыв интерфейс командной строки, выполнит для нас большую работу, которая в итоге приведёт к появлению рядом с этим файлом пары новых папок и к открытию в Visual Studio проекта IwGxHelloWorld_vc14.


Проект, открытый в Visual Studio

Скомпилируем проект и запустим его на x86-симуляторе Marmalade. Для этого выполним команду меню Debug > IwGxHelloWorld_vc14 Properties…


Команда IwGxHelloWorld_vc14 Properties

В появившемся окне нажмём на кнопку Configuration Manager.


Кнопка Configuration Manager

Теперь, в поле Configuration, выберем вариант x86 Debug. Нажмём кнопку Close.


Настройка конфигурации проекта

Вернувшись в основное окно Visual Studio, выполним команду меню Debug > Start Debugging.


Команда начала отладки проекта

Если появится окно с предупреждением, нажмём в нём кнопку Yes.


Окно с предупреждением

Если появится окно с сообщением об отсутствии отладочной информации, так же нажмём Yes. Теперь остаётся лишь ждать, наблюдая в окне Output за процессом подготовки нашего проекта к запуску. Если всё прошло так, как нужно, будет открыто окно Marmalade x86 Simulator с запущенным Hello World.


Проект HelloWorld успешно запущен в эмуляторе.

Сборка проекта из командной строки


В Marmalade SDK входит пакетный файл mkb.bat, который можно вызывать из командной строки для обработки MKB-файлов. Это позволяет ускорить работу. Предположим, наш MKB-файл называется Hello.mkb. Перейдём в папку, в которой расположен этот файл, и с помощью нижеприведённой команды выполним перестроение проекта для всех поддерживаемых платформ:

>>mkb.bat Hello.mkb –execute –rebuild

Если нужно работать с какой-то конкретной платформой, в нашем случае, с Android x86, в MKB-файл, в раздел option, можно внести следующее дополнение:

option
{
android-x86
}

Для сборки Debug и Release-версий проекта можно воспользоваться, соответственно, следующими командами:

>> mkb.bat Hello.mkb --execute --debug
>> mkb.bat Hello.mkb --execute --release

Для того чтобы mkb.bat можно было запускать из командной строки, нужно добавить путь к папке bin s3e для установленной копии Marmalade в переменную среды Path. Например, путь может выглядеть так: C:\Marmalade\8.0\s3e\bin.

Работа с Marmalade Hub


После установки Marmalade SDK в вашей системе будет установлен и Marmalade Hub. Это – набор инструментов, автоматизирующий работу с проектами. Запустим его и на первой странице выберем команду Create new project:


Создание нового проекта в Marmalade Hub

Появится окно создания нового проекта:


Окно создания нового проекта

Здесь нас интересуют следующие поля:

  • В поле Type выберем Core C++;
  • В поле Name введём имя проекта;
  • В поле Location укажем директорию проекта;
  • В поле Template выберем шаблон Empty C++;

После выполнения этих настроек нажмём на кнопку Create. Проект будет создан, в окне Marmalade Hub откроется новая закладка:


Новый проект в окне Marmalade Hub

Нас интересует платформа Android x86, поэтому нажмём на кнопку Create deployment и в появившемся окне настроим параметры развёртывания:


Настройка параметров развёртывания проекта

А именно, выберем Android в поле Platform, в списке поддерживаемых архитектур укажем GCC X86 ANDROID. Нажмём на кнопку Next. В следующем окне нам предложат указать имя пакета и его версию. Не будем менять стандартные значения, нажмём на кнопку Create.

Проект для нужной архитектуры будет создан. Теперь его можно запустить в эмуляторе, для этого служит кнопка Run in simulator, доступная, когда выбрана закладка Project, или на устройстве. При условии, естественно, что к компьютеру подключено Android-устройство подходящей архитектуры, готовое к USB-отладке приложений.

Для развёртывания и запуска проекта на устройстве (в нашем случае это планшет ASUS Fonepad 8, который построен на основе CPU Intel Atom Z3530) нажмём на кнопку Install and run on device. Если проект удалось удачно установить и запустить, об этом можно будет узнать из сообщения в строке состояния, выведенного зелёным цветом.


Успешная установка и запуск проекта на Android-устройстве

На устройстве будет запущен наш Marmalade-проект.


Приложение, созданное с помощью Marmalade SDK, запущено на устройстве

Двоичные файлы .SO и .OBJ проекта можно найти по адресу C:\MarmaladeTest\HelloWorld\build_helloworld_vc14\Debug_HelloWorld_vc14_gcc_x86_android. Это, соответственно, HelloWorld.so и HelloWorld.obj.

Сгенерированный APK-файл проекта (HelloWorld.apk) находится здесь: C:\MarmaladeTest\HelloWorld\deployments\HelloWorld.0.gcc_x86_android. Marmalade SDK 8.0 поддерживает как создание индивидуальных APK-файлов для конкретных вариантов платформы Android, так и универсальные файлы, содержащие версии библиотек для различных платформ (fat binary). При размещении проекта в Google Play можно загружать различные варианты APK-файлов для разных платформ.

Игровой движок ShiVa3D


Примечание: Актуальна та же версия движка, о которой здесь идёт речь, поэтому оставил всё как есть. Немного изменил оформление и подачу материала.

ShiVa3D – это набор инструментов для разработки трёхмерных игр. Всё в нём направлено на эту цель. В частности, он оснащён графическим редактором, рассчитанным на создание игр и приложений для Web, игровых консолей и мобильных устройств. А именно, с помощью ShiVa3D можно создавать приложения для Windows, Mac OS, Linux, iPhone, iPad, BlackBerry Tablet OS/BlackBerry 10, Android, Palm OS, Wii, WebOS, это автономные приложения и приложения, выполняемые в веб-браузере.

Движок использует OpenGL, OpenGL ES, или DirectX, может выполнять программный вывод графики. ShiVa3D поддерживает подключаемые модули, ставшие индустриальными стандартами, в частности, NVIDIA PhysX, библиотеку для работы со звуком FMOD и ARToolKit.

ShiVa3D Web Edition – это полная бесплатная версия, которую можно использовать для экспериментов.

В дополнение к вышеупомянутому редактору, ShiVa3D предоставляет разработчику ShiVa3D Authoring Tool – средство для авторинга проектов, созданных в редакторе для платформ Windows, Mac OS, Linux, iPhone, iPod, iPad, Android, BlackBerry QNX, и Palm.

Установка ShiVa3D


Прежде чем установить ShiVa3D, нужно будет подготовиться. В целом, нижеприведенный список дополнительных средств соответствует тому, что мы рассматривали выше, для подготовки к установке Marmalade SDK, однако, здесь есть и некоторые особенные требования, характерные для ShiVa3D. А именно, нам понадобятся:

  • Windows 7 или выше;
  • Среда разработки Android;
  • Android NDK;
  • Cygwin. Это приложение позволяет организовать в Windows рабочую среду в стиле Linux. При инсталляции Cygwin нужно выбрать и установить следующие пакеты: autoconf, automake, binutils, gcc-core, gcc-g++, gcc4-core, gcc4-g++, gdb, pcre, pcre-devel, gawk, make, python. Не забудьте выбрать GNU-версию make, иначе вы не сможете выполнять построение проектов с использованием NDK.
  • Java JDK;
  • Apache Ant;
  • Microsoft Visual Studio C++;

Теперь стоит проверить переменные среды, и, если они при установке вышеописанных инструментов, не были правильно настроены, исправить это.

  • Переменная ANDROID_SDK_ROOT должна содержать полный путь к папке Android SDK. В нашем случае SDK установлена в составе Intel INDE, данная переменная выглядит так: C:\Intel\INDE\IDEintegration\SDK

  • Переменная ANDROID_NDK_ROOT, соответственно, должна указывать на папку Android NDK. В нашем случае это C:\Intel\INDE\IDEintegration\NDK

  • Переменная ANT_HOME должна указывать на папку Apache ANT. Например, она может выглядеть так: C:\ant\apache-ant-1.9.6

  • В переменной Path, помимо прочего, должны содержаться пути к следующим папкам: JDK, JDK bin, NDK, Cygwin bin, ANT bin, Android SDK tools, Android SDK platform-tools. Пути разделяются точкой с запятой.

Напоминаем, что редактируя переменные среды, стоит проследить за тем, чтобы в конце путей не было специальных символов или разделителей вроде «\».

Теперь всё готово к загрузке и установке ShiVa3D. В частности, нас интересует ShiVa3D Web Edition.
Пакет поставляется с множеством примеров, для первых экспериментов вы можете загрузить один из них. Для того чтобы это сделать, нужно, после запуска ShiVa Editor, воспользоваться кнопкой Open or Drop a Game в разделе Game Editor главного окна. Будет открыто окно Open со списком игровых проектов. Предполагая, что вы нашли игровой проект для экспериментов, рассмотрим процедуру экспорта проекта с помощью редактора ShiVa3D.

Экспорт проекта в STK-файл


Выполним команду General > Game Editor > Game > Export для запуска процедуры экспорта.


Запуск процедуры экспорта проекта в ShiVa3D

Заполним поля в появившемся окне, введя имя (name) и версию (version) экспортируемого приложения. Укажем расположение для файлов, которые будут получены в результате экспорта. В нашем случае используется папка D:\ShiVa3D_prog\game_export. Вы можете использовать любую другую папку.


Настройка параметров экспорта

Обратите внимание на то, что на выходе должен получиться единственный STK-файл, за это отвечает флаг Runtime Package.

Компиляция приложения с использованием ShiVa 3D Authoring Tool


После экспорта проекта закроем ShiVa Editor и запустим ShiVa 3D Authoring Tool.


Окно ShiVa 3D Authoring Tool

Выберем, в левой части окна, пункт Android, выполнив по нему двойной щелчок.


Окно ShiVa 3D Authoring Tool после выбора пункта Android

Импортируем приложение, экспортом которого мы занимались ранее. Для этого нужно заполнить соответствующие поля в данном окне, указав пути к нужным файлам. Тут же можно добавить изображение для иконки приложения, картинку для стартового экрана.


Выбор файлов для создания проекта

Нажмём на кнопку Settings, которая находится в правой нижней части окна, откроется экран настроек.


Окно настроек

В этом окне, в соответствующих полях, нужно указать пути к различным программным средствам, которые нужны для подготовки приложения. Среди них – Cygwin, Android NDK и другие.

После того, как ввод данных завершён, нажмём ОК, и, вернувшись в основное окно ShiVa 3D Authoring Tool, активируем вкладку Step 2: Authoring.


Переход к вкладке Step 2: Authoring

Здесь нужно ввести имя пакета приложения.


Работа с вкладкой Step 2: Authoring

Перейдём на вкладку Step 3: Build. Здесь можно задать параметры сборки. А именно – минимальную версию Android, целевую платформу (x86 в нашем случае), выходную директорию.


Настройка параметров сборки приложения на вкладке Step 3: Build

Установив подходящие значения, нажмём на кнопку Build, которая расположена в правой нижней части экрана. Если всё пройдёт успешно, система сообщит об этом.


Успешная компиляция приложения

Работая с ShiVa3D, мы ограничены использованием ShiVa 3D Authoring Tool, инструмента с графическим интерфейсом. Поддержка средств командной строки здесь не предусмотрена. Рассмотрим подробнее настройки Authoring Tool для подготовки приложений, рассчитанных на платформу x86.

Настройка ShiVa 3D Authoring Tool для платформы x86


  1. Создайте приложение в ShiVa Editor и экспортируйте его. Обратите особое внимание на имя файла проекта. Оно должно состоять из прописных и заглавных букв латинского алфавита (a-z или A-Z), цифр (0-9), может включать в себя знак подчёркивания ( _). Другие символы в имени файла приведут к ошибкам на этапе компиляции. Важно учитывать, что игровой проект сначала нужно экспортировать средствами ShiVa Editor, а потом уже обрабатывать с помощью ShiVa Authoring Tool.

  2. Откройте ShiVa 3D Authoring Tool, сделайте двойной щелчок по пункту Android. С этого момента вы можете воспользоваться вышеприведенным руководством с некоторыми отличиями. А именно, когда вы окажетесь на закладке Step 2: Authoring, вы увидите там поле Authoring type.


Поле Authoring type

По умолчанию в этом поле установлено значение APK Package. Если APK-пакет приложения, который можно тут же установить на устройство – это всё, что вам нужно, не меняйте значение данного поля.

Учтите, что при таких настройках никаких дополнительных файлов вы не получите. Они, конечно, существуют в процессе сборки пакета, но хранятся во временной папке, и, когда необходимость в них отпадает, удаляются.

Если вам нужны исходные файлы, а не APK-пакет, выберите в поле Authoring type вариант Project. В итоге будет сгенерирован ZIP-файл с исходными файлами проекта, но APK-файл создан не будет.

Папка, в которую попадают сгенерированные при компиляции файлы (APK или ZIP), задаётся на закладке Step 3: Build, в поле Output folder. Для того чтобы до этого поля добраться, нужно воспользоваться полосой прокрутки.


Поле Output folder

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

Для выбора целевой платформы компиляции проекта служит поле CPU support на закладке Step 3: Build. Оно расположено выше поля Output folder. По умолчанию здесь установлено значение Default. Нас интересует пункт x86.


Выбор целевой платформы

Настраивая минимальную версию Android, необходимую для работы приложения и установив в поле Minimum OS support версию API меньше 9, вы можете столкнуться с ошибками.


Выбор минимальной версии Android API

О файлах, получаемых в результате компиляции проекта


После того, как вы учли всё то, о чём мы только что говорили, ваша ShiVa3D-игра готова к компиляции для платформы x86. То, что получится на выходе, зависит от выбранного варианта Authoring type: APK Package или Project. Однако, в любом случае, файлы окажутся в указанной выходной директории. Наша папка расположена по такому адресу: D:\ShiVa3D_prog\authoring_tool_output.

При выборе варианта APK Package в ней будет содержаться один .apk-файл:
D:\ShiVa3D_prog\authoring_tool_output\FistApp_1-debug.apk

При выборе варианта Project файл будет тоже один, но на этот раз – с расширением .zip:
D:\ShiVa3D_prog\authoring_tool_output\FistApp_1_Android.zip

Этот архив, в свою очередь, содержит двоичные файлы, файлы манифестов, make-файлы, ресурсы и build-файлы проекта.

Выводы


Из этого руководства вы узнали о том, как сделать первые шаги в работе с Marmalade SDK и ShiVa 3D, ориентируясь на платформу Android x86. Если вы задумываетесь о том, чтобы написать собственную мобильную игру, то, вполне возможно, один из этих инструментов окажется именно тем, что вам нужно.

Оригинал статьи тут.
Tags:
Hubs:
+20
Comments 13
Comments Comments 13

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева