Cocos2d-x — це фреймворк для створення кросплатформних 2D-ігор на C++. Насправді, це вже цілий ряд інструментів для розробки ігор кількома мовами.
Він розрахований на людей з різним рівнем підготовки. Можна робити відносно прості штуки, типу Flappy Bird або Fruit Ninja, так і складніші сайд-скроллери та навіть стратегії. У будь-якому разі використання C++ як основної мови зробить програми легкими та швидкими, а отже — найкращими :)
Карантин можна розглядати як привід вивчити щось нове, тому я спробую зробити серію постів, котрі описують основи цього програмного каркаса.
Встановлення
Процес встановлення для різних платформ непогано описаний в офіційній документації. Також відносно свіжі інструкції можна знайти у цьому блозі: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 має приблизно таку структуру:
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 порівняно небагато, але достатньо для вивчення. Проблема в тому, що вона переважно застаріла, тому морально підготуйтесь — доведеться співвідносити написане і реальний стан речей.
Почнемо з «офіційних» джерел:
- посібник з основними термінами;
- документація по коду, згенерована Doxygen;
- форум, там багато навчальних матеріалів, але вони теж сильно застаріли;
- функціональні тести — розробники вважають це демонстрацією того, як правильно використовувати програмний каркас. На форумі часто можуть порадити «глянути, як зроблено в тестах».
Окрім того, у різних блогах є серії постів, присвячених Cocos2d-x:
- rezghob.com — мабуть, найбільш свіжа серія, яка є сьогодні;
- навчальна серія gamefromscratch.com — вже сильно застаріла, але там гарно описані багато речей;
- кілька статей на raywenderlich.com: основи, невеличка гра, велика гра з картою;
- навчальні відео від Sonar Systems (також доступні на цій сторінці). Загалом те ж саме, що й у текстових постах інших авторів;
- ще трохи блогів різної актуальності: раз, два, три, чотири.
У 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».
На цьому поки що все, дякую за увагу :)
Ще немає коментарів