Знайомство з Cocos2d-x

5 хв. читання

Cocos2d-x — це фреймворк для створення кросплатформних 2D-ігор на C++. Насправді, це вже цілий ряд інструментів для розробки ігор кількома мовами.

Він розрахований на людей з різним рівнем підготовки. Можна робити відносно прості штуки, типу Flappy Bird або Fruit Ninja, так і складніші сайд-скроллери та навіть стратегії. У будь-якому разі використання C++ як основної мови зробить програми легкими та швидкими, а отже — найкращими :)

Знайомство з Cocos2d-x
Гра Battle of Pathogens, розроблена за допомогою Cocos Creator

Карантин можна розглядати як привід вивчити щось нове, тому я спробую зробити серію постів, котрі описують основи цього програмного каркаса.

Встановлення

Процес встановлення для різних платформ непогано описаний в офіційній документації. Також відносно свіжі інструкції можна знайти у цьому блозі:Linux або Windows.

Тут доведеться зробити дві речі:

  • встановити необхідні програми: g++ та все інше, що треба для написання програм на C++, також Python та CMake. Для компіляції програм під Android знадобиться Android Studio (однак це окрема тема, якій потім буде присвячено інший пост).
  • скачати сам фреймворк, розпакувати його у потрібне місце і встановити змінні оточення.

У результаті стане можливим виконання команди cocos у командному рядку:

::>cocos -v
cocos2d-x-4.0
Cocos Console 2.3

Перший проєкт

Щоб перевірити, чи все встановлено правильно, Cocos2d-x може створити стандартний проєкт. Для цього треба виконати команду cocos new:

::>cocos new -d ./ -l cpp SmokeTest
> Copy template into /home/username/proj/cocos2d/SmokeTest
> Copying Cocos2d-x files...
> Rename project name from 'HelloCpp' to 'SmokeTest'
> Replace the project name from 'HelloCpp' to 'SmokeTest'
> Replace the project package name from 'org.cocos2dx.hellocpp' to 'org.cocos2dx.SmokeTest'
> Replace the Mac bundle id from 'org.cocos2dx.hellocpp' to 'org.cocos2dx.SmokeTest'
> Replace the iOS bundle id from 'org.cocos2dx.hellocpp' to 'org.cocos2dx.SmokeTest'

Опція -l cpp показує, що проєкт буде написано на C++. Повну довідку про команду можна отримати за допомогою cocos new --help.

У нашому випадку SmokeTest — це назва проєкту. Скрипт cocos створить теку з такою назвою та заповнить її початковими файлами. Переходимо у цю новостворену теку та запускаємо компіляцію командою cocos compile -p linux. Результатом має бути типовий для cmake лог.

Перша компіляція займає багато часу, тому що збирається весь фреймворк; пізніше буде набагато швидше.

Нарешті, запустити програму можна за допомогою cocos run, у результаті з'явиться щось таке:

Знайомство з Cocos2d-x

Структура проєкту

Проєкт Cocos2d-x має приблизно таку структуру:

SmokeTest
|-bin
|-Classes
  |-AppDelegate.cpp
  |-AppDelegate.h
  |-HelloWorldScene.cpp
  |-HelloWorldScene.h
|-cocos2d
  |- <багато файлів>
|-linux-build
  |- <багато файлів>
|-proj.ios_mac
|-proj.win32
|-proj.android
|-proj.linux
  |-main.cpp
|-Resources
|-CMakeLists.txt

Можливо, вміст буде трохи відрізнятись, якщо ви використовуєте Windows. У цьому випадку:

  • bin — результати компіляції: бінарник та ресурсні файли, які він буде завантажувати.
  • Classes — власне, ті файли, які ви будете створювати у процесі розробки. Поки що там кілька дефолтних класів, про які я розкажу детальніше у наступних постах.
  • cocos2d — вихідні файли фреймворку. Це окрема копія, призначена персонально для вашого проєкту. Найімовірніше, ви їх ніколи не будете змінювати. Водночас це найбільша тека проєкту: коли проєктів буде кілька, можна спробувати сімлінк для економії місця.
  • linux-build — проміжні файли, створені в процесі компіляції.
  • proj.ios_mac, proj.win32, proj.android, proj.linux — не мають значення. Наприклад, у proj.linux розташований файл main.cpp; його дефолтного вмісту цілком вистачить, редагувати файл ніколи не доведеться.
  • Resources — ресурси програми: зображення, шрифти та інші корисні речі. Згодом про них буде окремий пост.

Нарешті, CMakeLists.txt — це типовий файл cmake для нашого проєкту. Найважливіше у ньому — це список сирцевих файлів.

# add cross-platforms source files and header files
list(APPEND GAME_SOURCE
     Classes/AppDelegate.cpp
     Classes/HelloWorldScene.cpp
     )
list(APPEND GAME_HEADER
     Classes/AppDelegate.h
     Classes/HelloWorldScene.h
     )

Аби трохи повправлятися, можете перейменувати HelloWorldScene.h у щось більш правильне (наприклад, у SmokeTest.h). Так ви зможете оцінити, як відбувається збирання проєкту.

Інші джерела інформації

Документації по Cocos2d-x порівняно небагато, але достатньо для вивчення. Проблема в тому, що вона переважно застаріла, тому морально підготуйтесь — доведеться співвідносити написане і реальний стан речей.

Почнемо з «офіційних» джерел:

Окрім того, у різних блогах є серії постів, присвячених Cocos2d-x:

У 2013 році була видана паперова книжка «Cocos2d-X by Example Beginner's Guide», pdf-версію можна знайти в інтернеті (наприклад, тут). Очевидно, зараз вона теж застаріла, але все ще варта уваги.

Окрім того, є кілька платних курсів Udemy: «Cocos2d-x v3 C++ - Beginning Game Development» та «Flappy Bird Clone - The Complete Cocos2d-x C++ Game Course».

На цьому поки що все, дякую за увагу :)

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.8K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація