В данном руководстве вы узнаете о том, как создать простую игру с помощью Cocos2d-x 3.0 или более поздней версии в среде разработки Windows и как скомпилировать её для запуска в Windows и Android.



Что такое Cocos2d-x?


Cocos2d-x – кросс-платформенный фреймворк для игр (и других графических приложений, например, интерактивных книг), основанный на cocos2d для iOS, но вместо Objective-C использующий языки C++, JavaScript или Lua.

Одно из преимуществ этого фреймворка – возможность создания игр для разных платформ (Android, iOS, Win32, Windows Phone, Mac, Linux и другие). При этом основа программы остается той же – требуется лишь незначительная адаптация под конкретную платформу.

Консоль Cocos2d-x


Консоль cocos2d-console появилась в версии 3.0. Это командная строка, предусматривающая те же функции, что и средства управления проектами в Cocos2d-x или Cocos2d-JS — создание, выполнение, построение, отладку и т.д.

Создаём свою первую игру


1. Скачайте последнюю версию фреймворка и распакуйте архив. В данном руководстве использовалась версия 3.3rc0, а архив фреймворка был распакован на рабочий стол (C:\Users\intel-user\Desktop\cocos2d-x-3.3rc0).

image
Структура директории Cocos2d-x версии 3.3 RC0

2. Чтобы создать в cocos2d-x новый проект, используйте setup.py (скрипт на языке Python), который находится в папке фреймворка. Он позволит конфигурировать все переменные среды для платформ Win32 и Android. Перед выполнением setup.py вам потребуется скачать, инсталлировать и конфигурировать следующие элементы:


Если вы не установили Python Runtime, скачайте версию 2.7.6 отсюда: www.python.org/download

image
Расположение setup.py

3. Откройте командную строку (cmd.exe) и выполните следующие команды:

– Перейдите в папку скрипта (папку фреймворка):

cd C:\Users\intel-user\Desktop\cocos2d-x-3.3rc0

– Выполните скрипт setup.py:

python setup.py (or setup.py only)

Примечание: чтобы выполнить команду Python из командной строки, добавьте в переменную среды path папку, куда установлен Python. Скрипт потребует пути инсталляции для Android SDK, Android NDK и ANT.

– Папка Android NDK:

image
Cocos2d-console требует указания пути к папке NDK

– Путь к папке Android SDK:

image
Cocos2d-console требует пути к папке SDK

– Путь к папке Apache ANT:

image
Cocos2d-console требует пути к папке ANT

После указания всех путей снова откройте командную строку (cmd.exe). Это действие необходимо для использования команд cocos2d-console.

4. Наберите cmd.exe, чтобы выйти на командную строку (команды cocos2d-console можно вводить только здесь) и снова откройте папку фреймворка:

cd C:\Users\intel-user\Desktop\cocos2d-x-3.3rc0

На следующем шаге мы создадим новый проект Cocos2d-x:

cocos new MyGame –p com.Project.MyGame –l cpp –d Project



Создание проекта Cocos2d-x

Краткое пояснение параметров:
  • new: создаёт новый проект; за ним должно следовать имя проекта (в данном примере -MyGame);
  • -p: задаёт имя пакета;
  • -l: выбирает язык программирования; значением может быть cpp или lua;
  • -d: директория, в которой фреймворк создаёт структуру проекта.

Если всё нормально, то проект создается в папке Project – в директории, куда был распакован фреймворк.


Структура директории MyGame

Созданный проект содержит базовый код игры (классы), ресурсы (изображения, аудио и т.д.) и по одному проекту для каждой поддерживаемой фреймворком платформы.

Создаём Android-приложение


Требования:
  • Для создания игровых приложений для Android вам нужно конфигурировать все переменные среды (Android SDK, Android NDK и ANT). Если вы ещё не выполнили этот шаг, смотрите выше раздел «Создаём свою первую игру».
  • Установленный Java Development Kit (JDK)

Примечание: для создания Android-приложений Cocos2d-console использует команду javac, поэтому нужно добавить переменную среды JAVA_HOME (путь для JDK).

1. Мы будем компилировать игровую программу для нескольких архитектур, а фреймворк не компилирует по умолчанию для x86 и armeabi-v7a. Отредактируйте файл Application.mk в C:\Users\intel-user\Desktop\cocos2d-x-3.3rc0\Project\MyGame\proj.android\jni


Расположение файла Application.mk

2. Добавьте в этот файл следующую строку:

APP_ABI := armeabi armeabi-v7a x86


Application.mk после добавления строки APP_ABI

Теперь, после добавления целевых архитектур, давайте скомпилируем нашу игру!

3. Используя подсказку командной строки, перейдите в папку фреймворка:

cd C:\Users\intel-user\Desktop\cocos2d-x-3.3rc0

4. Выполните показанную ниже команду и запустите игру для Android:

cocos run –s Project\MyGame –p android



Выполнение команды для компиляции и выполнения игры для Android

  • run: компилирует и выполняет проект;
  • -s: путь к папке проекта;
  • -p: выбранная платформа.

Примечание: если требуется только компиляция, введите:

cocos compile –s Project\MyGame –p android

Если всё работает правильно, то команда cocos2d-console будет использовать adb (если это задано в переменных среды) для инсталляции файла APK на подключённом устройстве или инициализированном эмуляторе. При их отсутствии команда будет ожидать доступности устройства или эмулятора, как показано ниже:


Команда ожидает устройства или инициализированного эмулятора

При наличии подключенного устройства или инициализированного эмулятора появится следующий экран:


Экран игровой программы на платформе Android

Создание приложений Win32 (для ПК под Windows 7 или Windows 8)


Нам потребуется Visual Studio 2012 или более поздняя версия.

1. Используя приглашение командной строки (cmd.exe), перейдите в папку, куда был распакован фреймворк:

cd C:\Users\intel-user\Desktop\cocos2d-x-3.3rc0

2. Для компиляции и запуска игры на выполнение в среде Windows введите команду:

cocos run –s Project\MyGame –p win32


Выполнение команды компиляции и запуска игры в Windows

Кратко о параметрах:
  • run: компиляция и запуск на выполнение выбранного проекта
  • -s: путь к папке проекта
  • -p: выбранная платформа

Примечание: если требуется только компиляция, используйте “compile” вместо “run”, как в следующем примере:

cocos compile –s Project\MyGame –p win32

Если всё работает правильно, то после выполнения команды run вы увидите следующий экран:


Экран игры на платформе Windows

Для компиляции и запуска проекта игры можно использовать Visual Studio:

1. В директории Project откройте файл Visual Studio MyGame.sln в папке “proj.win32”.


Структура директории проекта Win32

2. Для компиляции проекта нажмите F6 (или используйте меню Build -> Build Solution) и F5 для его запуска (либо меню Debug -> Start Debugging). После построения и выполнения вы должны увидеть тот же экран, что и после выполнения шагов для консоли.


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

Итак, теперь вы знаете, как создать и скомпилировать игру для Android (x86 и ARM), Windows 7 и Windows 8 (в режиме десктопа), браво :)

Чуть не забыли


В настоящее время в версии Cocos2d-x 3.3 есть проблема – инструментарий не позволяет создавать проекты (подробности здесь). Эта проблема исправлена в последней предварительной редакции, но в последнем релизе Cocos2d-x пока остается.

Подробности по оптимизации компиляции смотрите в наших замечаниях по оптимизации.

Хозяйке на заметку


» Исходный код фреймворка Cocos2d-x доступен по лицензии MIT License, а скачать его можно здесь.
» Cocos2d-x и документация по нему
» Консоль cocos2d-console

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


  1. gorz
    15.06.2015 15:18
    +1

    Чуть не забыли

    В настоящее время в версии Cocos2d-x 3.3 есть проблема – инструментарий не позволяет создавать проекты (подробности здесь). Эта проблема исправлена в последней предварительной редакции, но в последнем релизе Cocos2d-x пока остается.


    Я конечно понимаю, что это перевод, но сейчас уже доступна версия 3.6, зачем писать устаревшую информацию?


  1. and7ey
    15.06.2015 15:40
    +1

    Обещали рассказать о том, как создать простую игру. А на самом деле показали, как показать картинку с помощью Cocos2D.

    Жду следующую статью, где вы действительно опишите, как создать простую игру (например, типа настольной, где игроки бросают кубики по очереди и их фишки передвигаются по полю).


  1. SBKarr
    15.06.2015 15:44
    +4

    Мы используем cocos2d-x в приложениях уже два года (тогда была ещё версия 2.0).

    Cocos2d-x близок к железу по сравнению с другими подобными проектами. В некоторых местах это позволяет существенно ускорить работу за счёт низкоуровневых оптимизаций. Например, у нас есть своя полуавтоматическая система для пакетной отрисовки в дополнение к встроенной. Встроенная система умеет «пакетить» только идущие подряд вызовы отрисовки, а наша собирает однородные не перекрывающие друг друга объекты в буфер вне зависимости от порядка. Самое оно для типографики, теней, и тому подобного.

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

    У cocos2d-x мало хороших периферийных инструментов. У нас собственная реализация потоков, сетевого взаимодействия, своя событийная система. Это всё в самом движке уже есть, но реализация хромает на обе ноги. Для проекта среднего уровня, тем не менее, более чем достаточно. Ещё нас категорически не устроила реализация рендеринга шрифтов, но это уже относится к нашей специфике.

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


  1. egoserg
    15.06.2015 19:11

    Подскажите пожалуйста как убрать три точки screencloud.net/v/u6dL
    Я не смог найти как это убрать.
    Буду благодарен


  1. egoserg
    15.06.2015 19:13

    Автор статьи забыл упомянуть о Cocostudio


  1. nullc0de
    16.06.2015 13:25
    +1

    Реально вымораживают подобные статьи, где в заголовке суть одна «Создание многоплатформенных игр с использованием Cocos2d-x версии 3.0 и выше» и думаешь, что будет реальный пример кода и разные подводные камни в разработке рассмотрят. В итоге все содержимое сводится к «Как установить ...», коих статей итак полно, а реально достойных статей мало в рунете и проще читать все на английском.


  1. demonit
    30.06.2015 14:24

    а какое отношение данная статья имеет к hub Cocoa упомянутом под титлом?