Я, всем довольный, работаю в Cocos Creator 3 [1]
Я, всем довольный, работаю в Cocos Creator 3 [1]

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


Cocos Creator 3 [1] - это китайский опенсорсный игровой движок, заточенный на разработку браузерных игр и интерактивных/игровых рекламных блоков. Он весьма популярен в Китае, и очень слабо известен в остальном мире.

Статистика использования игровых движков в играх на Стиме [2]
Статистика использования игровых движков в играх на Стиме [2]

В статистике Стима их набралось 740 штук, что равно примерно 0,9%. В принципе это весьма солидно. Вероятно тут в статистике очень хорошо помогли китайские коллеги. Сюда входят и игры на прошлых версиях Кокоса, который довольно сильно отличается от текущей третьей. Есть немного даже и популярных игр.

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

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

  2. Это китайский движок, он бесплатный, опенсорсный, и есть основания полагать, что он не станет вдруг банить/блокировать российских разработчиков. С Construct, Unity, Unreal Engine, Phaser и т.д. у меня сомнений по этому поводу несколько больше.

  3. Он заточен на браузерные 2D игры/рекламу и в итоговом билде вес от самого движка минимален. У меня при поверхностной оптимизации получилось меньше 2 МБ.

  4. Язык разработки - typescript/javascript, и нет блюпринтов.

  5. Интерфейс слизан с Unity, и он довольно удобный.

Игра "Король гоблинов" в процессе разработки [3]
Игра "Король гоблинов" в процессе разработки [3]

А теперь о сложностях, с которыми столкнулся я, и с которыми скорее всего столкнётся любой другой разработчик, впервые работающий с Кокосом.

1. Маленькое англоязычное и русскоязычное сообщество. В китайских соцсетях всё очень хорошо. А в остальных не очень.
- Есть туториал Флеппи Бёрда от самой команды Кокоса [4], что полезно, но разработка простого игрового процесса ооочень далека от разработки реальной игры. На их канале есть ещё туториал, но я не нашёл в нём чего-то дополнительно ценного.
- Есть англоязычные уроки[5], которые хоть и для 2-ой версии, но зато сжатые и краткие без воды.
- Есть русский туторила от Grozamir[6] - уроков у него немного, но зато он ещё ведёт группу в Телеграме, где я смог найти несколько решений для своих проблем.
Есть конечно ещё, но в процессе поиска Вы будете натыкаться на китайские туториалы, очень старые туториалы и онлайн-разработку. Если примеры для Вас важны - лучше выбирайте Unity или другие популярные.

Официальный гайд сохранения игровых данных [7] - лажа
Официальный гайд сохранения игровых данных [7] - лажа

2. Официальная документация неполная и иногда с ошибками. Простой пример. Вы захотите сохранять игровой процесс и попробуете воспользоваться официальным гайдом [7]. В реальности же, вы должны воспользоваться вот таким кодом: window.localStorage.setItem('configData', JSON.stringify(configData)). А всё дело в том, что гайд написан для версии Кокоса 2.x, а в третьем всё по другому. И неважно, что на этой странице гордо висит плашка - актуализировано пару недель назад.

Лишний пиксель - и пусть весь мир подождёт, пока ты будешь искать баг
Лишний пиксель - и пусть весь мир подождёт, пока ты будешь искать баг

3. Во время модерации на Яндекс-площадку была выявлена ошибка, что при некоторых разрешениях экрана появляется горизонтальная и вертикальная прокрутки. В любом браузере. Это было не очень весело, но удалось выявить причину. В игровом блоке id=GameDiv движок сам вычисляет ширину width=770px. Так вот, иногда ширина экрана оказывается равна 769.6px, а движок её округляет до 770. При этом родительский блок самой игровой площадки выделяет 769px на игру.
Мы получаем лишний пиксель, который создаёт горизонтальную прокрутку. Но т.к. горизонтальная прокрутка тоже занимает место, то из-за неё возникает и вертикальная прокрутка. Я это исправил костылём, добавив в шаблон билда Кокоса для тега body css свойство overflow: hidden;. Мне как-то казалось, что подобные проблемы не должны возникать в таких местах в игровых движках. Какая наивность.

4. Рынок труда. Он очень не очень для специалистов в Cocos Creator. Если Вы хотите работать в Геймдеве программистом, то найти хорошо оплачиваемую работу будет сложнее, чем с навыками в более популярных движках. Я работать в Геймдеве программистом не хочу, поэтому для меня этот пункт недостатком не является. Но для многих может.

О чём я не могу судить

  1. Готовых ассетов немного, но я ими не пользуюсь, поэтому не принципиально.

  2. 3D есть и игру в нём сделать можно. Не пробовал, но беглый взгляд со стороны указывает, что тут всё слабовато с 3D. Мне в 3D сейчас не хочется, поэтому тоже не принципиально.

  3. Меня несколько пугает процесс сборки билда под Стим, т.к. по косвенным признакам лёгким этот процесс назвать нельзя. Официального шаблона или гайда я не нашёл, а это уже тревожный признак.

"Sort the court" оригинал Flash/Unity [8] и "Король гоблинов" мой на Cocos [3]
"Sort the court" оригинал Flash/Unity [8] и "Король гоблинов" мой на Cocos [3]

Как результат, я доделал и опубликовал игру на Яндекс-площадке. Это слямзенная версия старой флеш игры "Sort the court", но только про злых и циничных гоблинов. Улучшил игровой процесс в меру своих возможностей, сделав 7 концовок и сильно уменьшив повторяемость диалогов оригинала. Прошу попробовать. Надеюсь, что фатальных багов не обнаружится. (перевёрнутый дварф после казни и воскрешения не считается)

Выводы

Я пока и сам не уверен, стоит ли соло-разработчику работать с Кокосом. Есть плюсы, но и много минусов. Если минусы Unity Вас не волнуют, то вероятнее всего он будет оптимальным выбором. А может даже Godot или Unreal, если Вас зовёт дорога приключений.

Список источников

  1. Cocos Creator 3

  2. Статистика игровых движков на Стиме

  3. Король гоблинов. Симулятор королевства на Яндекс-площадке

  4. Туториал от Кокоса eng

  5. Гайды на Кокос eng (v2)

  6. Русские гайды на Кокос

  7. Устаревшая документация save/load от Кокоса

  8. Sort the court на itch_io

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


  1. jonic
    10.10.2024 07:07

    Мне для хобби нравится. Еще больше нравится что можно открыть исходник рантайма и разобраться как оно работает.


    1. qnok Автор
      10.10.2024 07:07

      Это да. А ещё тут по умолчанию тут обфускации никакой нет, но можно прикрутить самостоятельно сверху.


      1. jonic
        10.10.2024 07:07

        А еще мне понравилось как легко редактор расширять своим функционалом


        1. qnok Автор
          10.10.2024 07:07

          Пока не пробовал. В каких местах помогло? Может какая-нибудь публикация есть?


          1. jonic
            10.10.2024 07:07

            Менеджмент стейта, вызов дебаг функций, в принципе что в голову придет.

            Крме официальной доки и не читал ничего: https://docs.cocos.com/creator/3.8/manual/en/editor/extension/readme.html


  1. starfair
    10.10.2024 07:07

    Когда-то активно деплоил в этот движок на C++. В частности они потом добавляли мои наработки по меню уровней в стиле AngryBirds. Потом написал пару игр под Андроид с его помощью. В принципе, для начинающих игроделов, тогда (больше 10 лет назад), это был очень даже неплохой движок. Сейчас поставил, покрутил немного, и как то забыл снова. Особого прогресса нет. Но в целом, для создания игр (особенно в 2d), там и тогда было всего вполне достаточно, а сейчас уж так и подавно! Но если и правда думать о рынке труда, а не о инди проектах, то лучше что то более востребованное учить и использовать


  1. iRusher
    10.10.2024 07:07

    Для соло разработки осваиваю Godot , в новой версии 4.3 добавили поддержку FBX, и это просто шикарная тема для того чтобы делать 2Д спрайты из 3д модели, и дальнейшей анимации, экономит очень много времени