Создание мобильной игры с использованием cocos2d-x

в 8:57, , рубрики: android, cocos2d-x, mobile development, игры, мобильная разработка, я пиарюсь, метки: , , ,

Не буду скрывать, основной целью написать пост был для меня рассказ об игре-головоломке для Android, над которой я тщательно работал последние несколько месяцев.
Игра называется Ray of Life, она бесплатна и доступна в Google Play: play.google.com/store/apps/details?id=com.atdevsoft.games.rol
(прямая ссылка на маркет )
Я старался сделать игру со свежей и интересной идеей и надеюсь, что так и вышло.

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

О самом кокосе уже есть несколько упоминаний на хабре. Для тех, кто забыл: это кросс-платформенный движок для мобильных игр с открытым исходным кодом, построеный на основе cocos2d-iphone. Самыми интересными поддерживаемыми ОС на данный момент являются: Android, iOS, Samsung Bada, BlackBerry Tablet OS.
Хотя я дал ссылку только на Android-приложение, версия под iOS прекрасно работает и ждет своей очереди — не секрет, что App Store сейчас насыщен хорошими игровыми приложениями и к продвижению надо подходить очень серъезно.
Версия под BlackBerry QNX собирается без особых проблем. Была небольшая досадная ошибка в CCUserDefault с выходом за пределы массива, но, поскольку, сообщество у кокоса довольно активное, такого рода ошибки находятся и исправляются быстро — надо только следить за форумом. А вот проблемы начинаются на устройствах пользователей — 9 из 10 отзывов говорят о том, что игра падает еще в процессе навигации по меню, хотя модерация прошла с первого раза без замечаний. Надеюсь, что проблема уже исправлена: уже вышло два новых релиза cocos2d-x с момента публикации игры и обновилось SDK у BlackBerry. Обновленная сборка уже отправлена на рассмотрение в App World. Кстати, работа с интурментами Blackberry далека от приятной: версия эмулятора 1.0 не хотела ничего показывать в портретной ориентации, на которую расчитана игра; а 2.0, которая сейчас висит в разделе native development tools вообще непригодна для работы. Нашлась чуть более старая версия эмулятора в разделе Java-инструментов, в которой, наконец, удалось запустить игру для тестирования.

У cocos2d-x из неохваченных больших платформ осталась только Windows Phone. Но, пока Microsoft не откроет возможность собирать native-код, прямой порт невозможен. Есть, правда, и хорошие новости: недавно появилась версия кокоса на C#, использующая XNA. То есть, портировать игру на Windows Phone можно переводом кода из С++ в С#, не вникая в разницу между OpenGL ES и XNA. Проект еще совсем молодой, поддержки некоторых возможностей не хватает, но презентация текущего состояния очень обнадеживает:

Производительность у кокоса вполне приличная: Android-версия без проблем работает на стареньком Samsung Spica, на котором даже приложения контактов и будильника угнетающе тормозят.

Таким образом, если у вас есть опыт работы с cocos2d-iphone, cocos2d-x будет отличным выбором для миграции на другие мобильные платформы. Названия всех классов и макросов сохранены, с переводом проблем быть не должно. Наиболее заметным изменением, наверное, будет необходимость возвращать bool из init-методов. Поскольку, в С++ при вызове метода у NULL-объекта вы получите исключение, в отличие от Objective C, авторы cocos2d-x предлагают действовать так:
cocos2d-iphone код

-(id) init {
  if ((self=[super init])) {
  ...
  }
  return self;
} 

рекомендуется переводить в cocos2d-x таким образом:

bool HelloWorld::init() {
  if (CCLayer::init()) {
  ...
  }
  return true;
}

Подводя итог, хочу порекомендовать cocos2d-x как перспективную платформу. Гуру мобильной разработки могут сказать, что Marmalade или Corona являются более оптимальными решениями. Не смотря на то, что они платные, обе не стоят космичиских денег и хорошая игра их обязательно окупит. Но, мне кажется, что если вы в одиночку делаете свой не очень масштабный проект, не до конца уверены в своем успехе, лучше потратить эти деньги на работу дизайнера или рекламу.
Удачи в ваших разработках.

Автор: Zst

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js