Некоторое время назад RIM совместно с Marmalade проводили акцию по которой и мне удалось получить планшет Blackberry Playbook. По условиям акции в течение полугода с момента регистрации необходимо разработать и загрузить в Blackberry App World игру сделанную при помощи Marmlade SDK. После изучения в сети некоторого количества материала об этом SDK я наткнулся на записи о том что есть возможность использовать Cocos2D-x, что возможно сократило бы мне время на разработку(хотя я не имею опыта работы ни с Marmalade ни с Cocos2D-x). Далее я скачал последний релиз Cocos2D-x и не обнаружил в нём никаких следов возможности взаимодействия с Marmalade SDK.
Как оказалось позже, раньше ветку порта Cocos2D-x на Marmalade вёл Francis Styck и в ранних версиях были примеры создания Marmalade проекта, но он наткнулся на некие сложности и работа по портированию замедлилась. Затем за работу взялись ребята из Marmalade и на данный момент на гитхабе Cocos2D-x висит их pull request, который должен войти в следующий релиз. Но тем не менее рабочую версию Cocos2D-x с поддержкой Marmalade можно скачать отсюда.
Нигде в сети мне не удалось найти руководства о том как запустить cocos2d-x на Marmalade, поэтому я решил написать своё, т.к. довольно часто натыкался на вопросы как это сделать от других участников акции.
Если у вас ещё не установлен Marmalade SDK, то вам стоит это сделать пройдя по ссылке для скачивания и установки нужной версии.
Итак, после установки Marmalade SDK скачиваем версию cocos2d-x из этого репозитория. Если конечно к моменту прочтения вами этой статьи примеры для Marmalade не были добавлены в основную ветку.
Далее вы можете зайти в папку samplesHelloCppproj.marmalade и запустить файл HelloCPP.mkb — он выполнит все нужные действия и запустит IDE которую вы указали при установке Marmalade с открытым проектом HelloCpp. Но как быть если вы хотите создать свой, новый проект? Для этого вам нужно вручную перенести нужные библиотеки и отредактировать файл HelloCPP.mkb.
Я создал новую директорию и назвал её Cocos2D-x. В эту директорию из скачанного репозитория cocos2d-x нужно скопировать 2 папки — cocos2dx и extensions, попутно удалив из них всех папки с префиксом proj кроме proj.marmalade. Теперь здесь же создаём папку для нашего проекта, например m_test. В нашу папку m_test копируем папки Classes и Resources из samplesHelloCpp, а также папку src из samplesHelloCppproj.marmalade. Тут же создаём файл m_test.mkb со следующим содержанием:
options
{
#Папка для поиска субпроектов
module_path="../cocos2dx/proj.marmalade/"
#Папка из которой эмулятор берёт ресурсы игры
s3e-data-dir = "Resources/iphone"
}
includepaths
{
Classes
}
subprojects
{
IwGL
cocos2dx
}
assets
{
#Папка из которой реальное устройство берёт ресурсы игры
(Resources/iphone)
CloseNormal.png
CloseSelected.png
HelloWorld.png
}
files
{
[Main]
(src)
Main.h
Main.cpp
(Classes)
AppDelegate.h
AppDelegate.cpp
HelloWorldScene.h
HelloWorldScene.cpp
AppMacros.h
}
Сохраняем и запускаем файл. Откроется наш новый проект, открываем файл AppMacros.h и в 9ой строке меняем kDesignResolution_2048x1536 на kDesignResolution_480x320. Далее открываем app.icf и ищем там эти строки:
WinWidth=480
WinHeight=320
В обычных условиях эти сторки задают размер окна эмулятора, но у меня почему-то считывался только первый параметр и присваивался и как ширина и как высота, так что если у вас будет аналогичная проблема, то просто удалите эти строки, а размеры окна эмулятора укажите в самом эмуляторе в меню Configuration->Surface.
Компилируем под x86 и наслаждаемся результатом.
Какую-либо дополнительную информацию по параметрам mkb файла и по Marmalade вообще можно получить из документации поставляемой вместе с сдк, её можно открыть через Marmalade LaunchPad или просто из папки docs в директории с установленным SDK.
Буду признателен если кто-нибудь знает способ создать cocos2D-x проект проще.
Автор: TemaGreen