Пользователь
0,0
рейтинг
18 августа 2011 в 13:14

Разработка → Cocos2d-x: Пишем первое кроссплатформенное приложение из песочницы

Предисловие.


Программирование для мобильных платформ становиться все популярнее. Ежедневно, на свет появляются новые приложения и игры, что, естественно, увеличивает конкуренцию на этом рынке. И каждый, уважающий себя разработчик должен разрабатывать и поддерживать свой программный продукт, как минимум на двух самых популярных платформах, коими, на мой взгляд, являются android и iOS. Еще в недавнем прошлом, для такой поддержки, требовалось разрабатывать две различные программы на разных языках программирования. Но сейчас, появляется много кроссплатформенных движков, помогающих экономить разработчикам драгоценное время.

В этой статье я хочу показать простоту использования одного из них. Cocos2d-x – бесплатный кроссплатформенный игровой 2D движок — порт популярного движка cocos2d для iPhone. Мультиплатформенный «кокос» поддерживает iOS, Android, WoPhone и Win32. Поддержка Win32 не полноценна, работает через эмуляцию OpenGL ES и служит только для разработки и отладки приложений. Создатели движка не планируют реализацию полноценной поддержки Windows, и к тому же заявляют, что далеко не на всех компьютерах будет работать эмуляция OpenGL ES. Чуть ниже, в статье, мы с вами создадим простой проект, который в дальнейшем, можно будет собрать под вышеперечисленные платформы.

Практика


От слов, к делу. Язык программирования C++, в качестве среды, используем Microsoft Visual Studio 2010. Первым делом нужно скачать сам движок (На момент написания статьи использовалась версия движка cocos2d-1.0.1-x-0.9.1.zip). Распаковываем zip архив в удобную для вас папку (в моем случае c:\android\rep\cocos2d-1.0.1-x-0.9.1\). Структуру рабочего каталога можно увидеть ниже:



  • В подкаталогах Box2D и chipmunk находятся исходные файлы соответствующих библиотек физических движков;
  • В каталоге lua – исходники библиотеки поддержки языка lua;
  • Папка cocos2dx содержит исходники основного движка кокоса;
  • В templates вспомогательные файлы шаблоны, для генерации проектов под разные платформы;
  • Так же здесь располагаются несколько тестовых проектов, таких как HelloWorld, HelloLua и Tests.

Перед тем, как создавать наш проект, выполним файл install-templates-msvc.bat, который создаст шаблоны для Visual Studio 2010. Затем, откроем в VS решение(солюшен) cocos2d-win32.vc2010.sln. В списке проектов, для дальнейшей работы, нужно выполнить построение библиотек в нашем решении(солюшене). Если лень отстраивать каждый проект по отдельности, можно построить тестовое приложение tests, библиотеки соберутся автоматом. И наконец, создадим новый проект (Ctrl-Shift-N). В качестве шаблона выберем Cocos2d-win32 Application, имя пусть будет MyCocosProject, а для простоты, проект будет находиться в той же папке, что и сам движок (c:\android\rep\cocos2d-1.0.1-x-0.9.1\), если вы выберете другое расположение, необходимо будет в настройках проекта правильно указать пути к библиотекам, решение(солюшен) оставляем тем же. Жмем OK.



В появившемся окне «визарда» можно пока отключить физические движки, убрав соответствующие галочки, жмем кнопку Finish. Все! Мы создали наш первый проект:


Открываем файл HelloWorldScene.cpp в проекте и ищем строчку:

CCLabelTTF* pLabel = CCLabelTTF::labelWithString("Hello World", "Thonburi", 64);

заменяем строку «Hello World», на любой текст, например «My First Crossplatform Application», размер шрифта меняем с 64 на 24!
Делаем наш проект запускаемым, и выполняем его (F5). Если библиотеки были построены успешно, то и наше приложение должно запуститься.



Если у вас получилось запустить приложение на вашем PC под управление Windows, то возможно, вы сделали первый шаг к написанию собственной мультиплатформенной игры, тот шаг, который вы до сих пор не решались сделать. Пока наше приложение собрано только под Win32, но мы можем собрать его и под iPhone, и под Android. На мой взгляд, основным плюсом данного движка, является то, что разработчику для отладки не обязательно иметь под рукой ни «живые» мобильные устройства, ни их эмуляторы, ни средства компиляции под эти платформы. Пишем и проверяем все под Win32, а все остальное понадобиться лишь на этапе окончательной сборки, когда основные алгоритмы будут уже реализованы. Описание процесса сборки проекта под другие платформы достойно отдельной статьи, которую я обязательно постараюсь написать в ближайшее время.

Послесловие.


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

Ссылки


Денис @Denver2003
карма
10,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (12)

  • +2
    Описание процесса сборки проекта под другие платформы достойно отдельной статьи, которую я обязательно постараюсь написать в ближайшее время.
    Жду с нетерпением
  • +1
    Если был опыт работы с Lua в cocos2d-x, то напишите об этом.

    P.S. Вот еще я писал по теме возможно кому-то пригодится:
    Выбираем мультиплатформенный движок для разработки мобильных игр (часть 1)
    Выбираем мультиплатформенный движок для разработки мобильных игр (часть 2)
    • +2
      Опыта работы с lua, к сожалению, не было. А на cocos2d-x набрел именно после этих ваших статей.
  • 0
    Пробовал этот движок на Андроид. К сожалению нету никаких средств (я долго не искал) для отладки на устройстве. Также при любой ошибке приложение «тупо вылетает».
    Мое мнение — сомнительное удовольствие. Хотя возможно изначальная разработка на не Андроид, потом «портирование» под Андроид ду зе трик…
    • 0
      Добавлю — «вылетает» из-за того, что пользовательский код является «нативным» — т.е. это не джава байт-код. Также именно с этим связано отсутствие «нормальных» методов отладки.
      Вопрос в деталях я не изучал, поэтому прежний и этот пост ИМХО.
      • 0
        Согласен. Я совсем недавно начал изучение этого движка и одна из целей, понять, можно ли написать на нем качественное приложение для обоих платформ.
        • 0
          Можно.
      • 0
        Если вылетает, значит с огромной долей вероятности косяк Ваш. Компилируйте debug-версию, смотрите stack-trace и находите место «вылета» с точностью до строки в исходном файле.

        P.S. в последнем ndk вообще ndk-stack для этого добавили, должно быть еще удобнее, чем через arm-eabi-addr2line ;)
  • 0
    Пишу на cocos2d-x на iOS и Android. Под Android много геморроя доставляет общение с АPI, приходится писать JNI на каждый чих. Удовольствие для мазохистов
    • 0
      а отладку под андроид как делаете?
      • 0
        printf
      • 0
        запись в лог + arm-eabi-addr2line для нахождения места «вылета»

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