Cocos Creator: Это самый мощный игровой движок, о котором вы не знали

Если ты решил начать делать игры под Яндекс Игры, но Unity и другие движки тебя не устраивают — билды много весят, долгие загрузки и другие проблемы — то эта статья для тебя.

Почему не unity?

Я начинал на unity и несколько лет работал на нем. Потом пересел на unreal engine 4/5. Но так получилось, что я попал в html5 игры, и unity в этом плане, мягко говоря, не очень. Кроме того, у него есть свои недостатки. В статьях по best practices for Unity часто пишут: это не юзай, это медленно работает, и пишите свою реализацию и т. д. Кроме того, Unity имеет закрытый исходный код, что тоже дает определенные ограничения.

Другие движки, которые я использую, такими проблемами не страдают. Конечно, выбор движка зависит от ваших потребностей и предпочтений. Лично я определился с двумя движками для разработки HTML5-игр: Defold для 2D, а также Cocos Creator для 3D и 2D игр. У defold мне нравится комьюнити, оно очень крутое, у билдов маленький размер, что очень важно для браузерных игр, для скриптов используется замечательный скриптовый язык Lua. Если есть тяжелые задачи, можно переписать на плюсе. У defold ещё много хорошего, но об этом в другой раз. А по кокосу вы узнаете в ходе статьи.

Что ещё за кокос?

Большинство не слышало про Cocos Creator, а у некоторых ассоциации с Cocos2d-x. Так вот, Cocos2d‑x — это фреймворк, который перестал обновляться в 2019 году. Сейчас актуален Cocos Creator. Но базовый слой Cocos Creator развился из Cocos2d-x.

С официального сайта Cocos:

Cocos Creator — это бесплатный кроссплатформенный инструмент разработки игр с открытым исходным кодом, основанный на сценариях, компонентах и данных, в основе которого лежит создание контента. Благодаря простому в использовании рабочему процессу создания контента и мощному набору инструментов разработчика, разработчики могут легко создавать свои собственные игры с глубокой поддержкой Cocos Creator всех основных платформ, что позволяет быстро публиковать игры на Web, мобильных телефонах и различных платформах для мини-игр. Для веб-платформ и мини-игр используется чистый движок JavaScript, обеспечивающий лучшую производительность и меньший размер пакета. На других мобильных платформах базовый фреймворк реализован на C++ для обеспечения большей эффективности во время выполнения.

Коротко — это как unity, только от китайцев, бесплатно и с открытым исходным кодом, кроссплатформенный, для 2д- и 3д-игр.

Кто вообще это использует?

Ubisoft, Gameloft, Square Enix, FunPlus, Tencent и другие.

А какие игры на нем сделаны?

036b1c73395c6fe41f8c42d1f0302f4e.png

Brain Out от Focus Apps: Более 100 миллионов установок на Google Play.

Top War: Battle Game от Topwar Studio: Более 50 миллионов установок на Google Play.

Idle Heroes от DHGAMES: Более 10 миллионов установок на Google Play.

Idle Mafia от FunPlus: Более 10 миллионов установок на Google Play.

SSSnaker от Habby (издатель Archero): Более 1 миллиона установок на Google Play.

Minimal Dungeon RPG от CapPlay: Более 1 миллиона установок на Google Play.

Обратите внимание, что эти данные на момент написания статьи, и количество установок может увеличиваться со временем.

Cocos Creator также популярен для разработки браузерных игр, особенно на платформах WeChat (там больше половины игр на Cocos Creator) и Facebook (Организация Meta, а также ее продукты Instagram и Facebook, признаны экстремистскими и запрещены на территории РФ).

Так, а почему именно Cocos?

Есть несколько причин, почему я предпочел Cocos Creator другим движкам:

  1. Знакомый интерфейс. Cocos Creator предоставляет редактор с привычными окнами, такими как сцена, ресурсы, инспектор, иерархия и т. д. что упрощает работу, особенно если у вас уже есть опыт с другими движками, например Unity.

  1. Гибкость. Cocos Creator позволяет вырезать модули движка в билде, которые вам не нужны. Это дает возможность создавать оптимизированные и компактные билды.

  1. Скорость развития. Cocos Creator активно развивается, и разработчики регулярно выпускают новые функции и обновления. Например, уже есть экспериментальная поддержка WebGPU, что позволяет использовать современные технологии для повышения производительности.

  1. Открытый исходный код. Cocos Creator — это open‑source проект, что дает возможность вносить свои изменения и дополнения в движок.

Подводные камни

Однако есть несколько недостатков, о которых стоит знать:

  1. Популярность вне Китая. Cocos Creator пока более популярен в Китае, что означает меньше доступного обучающего контента на английском и на русском. Это может быть затруднением для начинающих разработчиков, и поддержка может быть ограниченной за пределами китайского сообщества (я эту ситуацию начал исправлять).

  1. Не так много работы. В отличие от популярных движков, таких как Unity, вакансий для разработчиков на Cocos Creator может быть меньше. Это может потребовать дополнительных усилий в поиске работы или создании собственной команды.

Тем не менее, если вы готовы справиться с этими недостатками, Cocos Creator может быть отличным выбором для разработки ваших HTML5-игр.

Что под капотом?

Начиная с версии cocos creator 3.6, движок можно назвать «двухъядерным». То бишь есть ядро на c++ и ядро на js/ts. И для разных платформ используется своё ядро. Да, такой подход в gamedev не распространен, потому что он чрезвычайно затратен. Для этого надо, чтобы не было «сильных» различий между ядрами, а то на одном ядре будет свинья, а на другом крипер (кто понял — тот понял).

6c5be588d18e22aaeef6a5a8d187d0cd.png

Интерфейс редактора

Почти как в unity. Всё стандартно: окно scene, assets, inspector, hierarchy и т. д. Если есть опыт с другими движками, то проблем с редактором не будет. Но тем, кто сидел на unity или unreal, будет непривычно, потому что многих инструментов будет не хватать. Например, на момент написания статьи нет кисти для рисования объектов по террейну. И надо все расставлять ручками. Но я уже реализовал пару инструментов для автоматической расстановки и подобие кисти для ландшафта (TerrainWorldElementGenerator).

Интерфейс Cocos Creator

Интерфейс Cocos Creator

Typescript

TypeScript — это язык программирования, разрабатываемый и поддерживаемый Microsoft, который представляет собой надмножество языка JavaScript. Он добавляет статическую типизацию к JavaScript, позволяя разработчикам определять типы данных для переменных, функций, объектов и других элементов кода. TypeScript компилируется в обычный JavaScript, поэтому его можно запускать в любой среде, поддерживающей JavaScript.

Ts любят около 72% программистов на Stack Overflow. Ts — ещё open-source проект.

В движке для написания скриптов используется Typescript. Javascript уже давно не используется, только иногда для плагинов. 

До Cocos Creator я ни разу не использовал Ts, но мне лично он понравился. Что мне понравилось в Ts, так это объединение типов (в некоторых случаях довольно полезная возможность) и вообще работать с типами. И много других возможностей языка. Если использовали unity, то быстро освоитесь в этом языке.

Для Ts я использую vs code с плагинами. Для некоторых это будет плюсом, так как не надо устанавливать десятки гигов, чтобы писать код (привет, обычная visual studio) или много потребляющая ОЗУ ide от jetbrains. 

Физика

Начнем с 3д-физики. Cocos Creator поддерживает 4 физических движка (а что, так можно было?):

  • Bullet (по умолчанию): физический движок по умолчанию, asm.js/wasm версия Bullet. Физический движок с обнаружением столкновений и симуляцией физики.

  • Встроенный: встроенный физический движок, легкий движок только для обнаружения столкновений.

  • Cannon.js: Физический движок с обнаружением столкновений и симуляцией физики.

  • PhysX: Игровой физический движок, разработанный NVIDIA. Физический движок с обнаружением столкновений и симуляцией физики.

Что поддерживает каждый физический движок.

Что поддерживает каждый физический движок.

НЕ ИСПОЛЬЗУЙТЕ BULLET ДЛЯ ГОНОЧНОЙ ИГРЫ

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

2д-физика — здесь всё легко, есть Box2d и встроенный (для простых игр). Также присутствуют различные соединения как для 2д, так и для 3д.

В Cocos Creator 3.8 будет character controller.

Про обрезания движка

В Cocos Creator это называется Feature Cropping. Вы просто снимаете галочки с модулей, которые вам не нужны, и вуаля — у вас билд стал меньше.

38fdf274602d1896b09d3db4ae6294c2.png

Пустой проект с отключением всех модулей весит 305 КБ.

C модулями для 2д-игры с физикой (Box2d) пустой проект весит ~600 КБ, с нормальным набором модулей для 3д-игры с физикой (Bullet) пустой проект весит ~1250 кб.

Вес написан для билда в zip. Версия Cocos Creator 3.7.3.

Процесс разработки

Разработка под веб — это просто сказка (после Unity). Как проходит процесс:

Пишешь код — Ctrt+S — зашел в Cocos — перешел в браузер — и уже запускается игра.

Минимум задержек. И разработка не превращается в ожидание и смотрение в прогресс-бар (привет, unity).

Поддержка интеграции со сторонними сервисами

Есть интеграция с HUAWEI App Gallery Connect и HMS Core. Что очень полезно, так как AppGallery — тоже популярный стор (привет, смартфоны от HUAWEI). Но надо понимать, что там не будет много стран из первого тира.

А с sdk для браузерок проблем не будет, так как используется Ts. А если использовать сервисы наподобие gamepush, то это будет очень легко и быстро.

А можно онлайн-игру сделать?

Да, для мультиплеера есть colyseus sdk (бесплатный). Возможно, вы с ним сталкивались в других движках. Серверная часть пишется тоже на Ts. Colyseus тоже open-source.

Что по ECS?

Если вы работали с ecs в unity, то, наверное, слышали про LeoEcs. Так вот leopotam (разработчик LeoEcs) сделал порт для Ts (конечно же, работает и под cocos creator), но на момент написания статьи, чтобы получить LeoEcs, надо быть спонсором на boosty.

Различные реальности

Присутствуют VR, AR и WebXR.

Возможности Cocos Creator:

Итог

Cocos Creator — это хорошая альтернатива unity. Если будете использовать кокос, то у вас уже будут преимущества перед играми на unity и других движках под web. Но главное — это делать игры, в которых игрок хорошо проведет время.

Ссылки:

Cocos Creator.

Моя группа по Cocos Creator, там вы найдете много полезного.

© Habrahabr.ru