Задача: Написать игру для платформы Facebook Instant Games на HTML5, используя движок для создания игр. Полученная игра должна иметь минимальный объем и хороший фпс. Ограничение по размеру у фейсбук хостинга — не более 5Мб в заархивированном виде.
Для тестов возьмем следующие движки:
Defold
Libgdx
Corona(HTML5 в альфа версии)
Unity 3d — на закуску — почти уверен, что не впишется в заявленные для объема рамки
Cocos не получилось скачать(хостинг DigitalOcean заблочил РКН)
Сравниваемые объективные параметры:
Размер архива с билдом
Объем загруженных данных при запуске в браузере
Остальные параметры можно считать субъективными.
Для тестов на каждом из движков создадим простенькую аркадную игру. Суть игры — сверху экрана двигаются пять блоков, каждый с собственной прочностью. Посередине экрана находится управляемый игроком круг, у которого тоже есть своя прочность. При столкновении блока и круга прочность уменьшается у обоих на 1. Если прочность круга станет меньше 0 — конец игры. А если прочность блока будет меньше 1 — он исчезает, открывая дорогу для круга. Пополнение прочности круга происходит за счет подбора бонусов, которые создаются вместе с блоками, но расположены чуть ниже.
На написание данной игры сподвиг совместный конкурс Corona Labs и VK Direct Games, основное требование которого было создание игры для VK Direct Games на движке Corona на тему «Путешествие во времени». Поэтому игра будет называться Wormhole или Кротовая нора. Начальная задумка: блоки — это кротовые норы, чтобы пройти через них требуется расход антиматерии(в описании игры сбор бонусов), ну а кружок это сборщик антиматерии и проходчик через эти норы.
Рассмотрим из каких объектов и частей состоит игра. Каждый блок состоит из трёх основных компонентов: квадратный блок, текст со значением прочности и хвост. Блоки могут быть двух видов — синие и желтые. В зависимости от типа при столкновении с кругом меняется «год назначения» (синий минус, желтый плюс). Хвост у всех одинаковый — градиент от синего к желтому или перевернут на 180 градусов от желтого к синему.
Кружочек состоит также из нескольких частей. Часть один — синий круг с текстом прочности, часть два — хвост, чья длина и отражает прочность, каждый вагончик хвоста может отображать 0 — 6 единиц прочности. Хвост следует за кружочком в режиме змейки. Положением кружочка управляет игрок передвигая пальцем по экрану, но изменяя только положение по координате Х.
Результаты испытания движков приведены в таблице:
Движок
Объём архива с билдом, Мб
Объём загруженных данных, Мб
Defold
1,2
1,3
Corona
2,0
2,0
Libgdx
2,7
0,8
Unity
4,5
4,5
Согласно результатам — меньший объем у Defold, однако для дальнейшей разработки я решил выбрать Libgdx и вот почему:
Прошлый проект также делал на Libgdx — (меньше времени уйдёт на понимание работы движка, возможность использования собственных наработок с прошлой игры)
Более быстрая загрузка игры (0,8 vs 1,3)
Corona по объему на втором месте, но ФПС наименьший из всех(да для Corona HTML5 — это альфа тестирование). Достоинством Defold можно считать встроенный редактор атласов текстур и существование специального расширения для FB Instant Games. Unity — он всё же для более крупных проектов, для мелких HTML5 игр — явный перебор.