Оптимизация проекта на Construct 2 под мобильные устройства
Добра Вам, уважаемые читатели!
У инструмента по созданию игр Scirra Construct 2 уже довольно много пользователей. Всё чаще среди них я встречаю тех, кто разочаровался в данном конструкторе, пытаясь сотворить игру под мобильные платформы. Причина разочарования зачастую одна и та же: крайне низкая производительность на целевых устройствах. Чаще всего игроделы пеняют это на недостатки самого Construct 2, и приходят к заключению, что Construct 2 и мобильные устройства - вещи несовместимые. Однако это не совсем так. Есть определенные сложности, но так же есть и пути их решения, о чем я тут и расскажу.
1. Спрайты и анимации.
1.1. Старайтесь избегать больших спрайтов. Статичную картинку 1024х512 правильней будет порезать на более мелкие 512х512 куски(особенно это актуально для сильно вытянутых картинок).
1.2. Вместо нагромождения однотипных спрайтов используйте Tiled Background или TileMap, это значительно повысит производительность. Так же не стоит забивать тайлмап однотипными спрайтами с разными углами отображения т.к. в самом плагине есть опция поворота и отражения тайлов.
1.3. Не перегружайте анимации кадрами. Человеческий глаз скорей всего не увидит 60 кадров бега персонажа со скоростью 60 кадров в секунду. Порой хватает и 12 кадров со скоростью 12 кадров в секунду.
1.4. Избегайте программного изменения размеров спрайтов. Т.е. если вы загрузили в проект спрайт 512х512, а в игре Вы привели его к размеру 128х128, то имеет смысл изменить сам спрайт в редакторе спрайтов, а не масштабировать его в игровом редакторе.
1.5. Делайте Crop анимаций, для более плотной упаковки в атласы при экспорте. Так же старайтесь приводить их к размерам 16х16, 32х32, 64х64, 128х128 и т.д. Спрайт размером 129х129 на некоторых устройствах может восприниматься как спрайт с размерностью 256х256 (т.е. на порядок выше кратностью).
1.6. Большое количество спрайтов на экране приведет к сильной загрузке мобильного процессора. Старайтесь держать их количество в районе 60.
1.7. Не вращайте спрайты. Поведение Rotate снижает производительность.
1.8. Используйте Bounding Box в качестве маски для объектов (там где не требуется иное) - При такой маске просчеты коллизий происходят по легкому пути через простое сравнение координат и ширины объекта.
2. Настройки проекта.
2.1.Pixel Rounding. Округление значений размеров и положений до запятой. Выбор этой опции увеличит производительность, однако потеряется точность. Пример: Спрайт не сможет принять положение х=250.545, у=343.212, он примет положение х=251, у=343.
2.2.Sampling. Для увеличения производительности используйте опцию Point. Однако это не подходит для некоторых игр т.к. уберет сглаживание картинки. Идеально для пиксель арта.
2.3.Clear Background. Ставим опцию на NO. Отключает заполнение canvas белым фоном.
2.4.Force own texture на всех слоях ставим NO. Иначе каждый слой будет использовать свою собственную, отдельно отображаемую текстуру.
2.5. В свойствах слоев используйте Render Cells
3. Поведения.
3.1. Старайтесь избегать неоправданного нагромождения поведений(к примеру для движения объекта сразу с помощью платформера, 8 дирекшн, буллета и физики). Поведения несут в себе довольно много параметров, которые Вы зачастую не используете, но которые обрабатываются и проверяются при выполнении кода.
4. Физика.
4.1. Используйте более быстрые, чем Box2d Web физические движки, к примеру: CocoonJs Accelerated Physics, Chipmunk Physics
4.2. Используйте как можно меньшее кол-во граней в полигоне объекта. Идеал - 3 грани, терпимо - 8 граней, жесть - 20+ граней. Для квадратных и круглых объектов - используйте маски Bounding Box и Circle соответственно.
4.3. Избегайте взаимодействия физических объектов с иными поведениями. К примеру не правильно будет крепить физическое тело на Set XY и вращать его поведением Rotate и двигать поведением Платформер. Используйте возможности самого Physics для этих целей.
5. Текстовые объекты.
5.1. Вместо объекта Text используйте SpriteFont. Это значительно повысит производительность.
6. Группы, проверки, прочие хитрости.
6.1. Разбивайте события на группы. Отключайте неиспользуемые в данный момент времени группы событий. Это избавит от множества ненужных проверок и повысит производительность. К примеру незачем каждый тик проверять: "Прошел ли удар по персонажу", если игра стоит на паузе. Или так же не имеет смысла проверять нажата та или иная кнопка, если вовсе нет нажатия по экрану:
6.2. Уменьшайте количество событий, выполняемых "Every Tick". Некоторым событиям достаточно выполняться каждые 0.1-0.5-1 секунду, а не 0.016, для этого в эвент с проверкой можно поместить дополнительное условие: System: Every N seconds
6.3. Не забывайте ставить в событиях(без триггеров), требуемых единоразового выполнения Trigger once while true.
Пример: Player.X<20 -> Set LVL_START = 1, при значении координаты Х игрока выше 20, каждый тик переменная LVL_START будет принимать значение 1. При постановке Trigger once while true событие будет выполнено единожды.
6.4. Частицы. Могут негативно влиять на производительность мобильной игры. Старайтесь держать их количество в пределах 50 одновременно отображаемых.
6.5. Использование любых WebGL эффектов. В данный момент их использование напрочь убивает производительность.
6.6. Слабый мусоросборник. Старайтесь избегать частого создания-уничтожения объектов. К примеру падающие снежинки. Неправильный путь: создать снежинку сверху, уничтожить её по достижении низа, создать новую снежинку сверху и т.д. Правильный путь: Создать снежинку сверху, по достижении низа вновь переместить её наверх.
Соблюдая все эти моменты можно добиться довольно хорошей производительности даже на слабых мобильных устройствах. Приятного всем игростроения!
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Оптимизация проекта на Construct 2 под мобильные устройства», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.