Как стать автором
Обновить

Побег из Зоопарка или как я делал казуальную игру под IOS

Время на прочтение3 мин
Количество просмотров2.4K

Много свободного времени = работа над новым проектом. На данную игру меня вдохновила публикация PapaBubaDiop про изгнание вирусов. В отличие от него, я решил использовать нативный фреймворк UIKit Dynamics. Во-первых — я с ним не работал, но очень хотел попробовать. А во-вторых — он нативный. И, хотя в мануале написано, что он не предназначен для создания игр, я все же решил попробовать.

Мне вообще нравятся игры, когда что-то падает, накапливается и идея, что это все должно куда-то пропадать по принципу воронки, подтолкнула меня приступить к разработке.

Имея идею я решил взяться за поиск бесплатных ассетов для дизайна. И случайно наткнулся на пак нарисованных зверушек. Вот и главные мои герои — именно им предстоит падать и кататься. А раз так — должна быть и цель — побег.

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

Начальная версия игры предполагала лимитированное время и подсчет кол-ва спасшихся беглецов, но затем я немного пересмотрел детали подсчета. Ведь нетрудно заметить, что форма ребят немножко отличается. Например, олень, мартышка и панда имеют не круглую форму и, соответственно, гораздо сложнее проходят препятствия. Было решено давать кол-во очков (credits) в зависимости от формы.

Вообще в UIKit Dynamics можно описать форму объекта взаимодействия указав параметр UIDynamicItemCollisionBoundsType. Он может быть прямоугольник, элипс или BezierPath. Мой случай — это элипс, причем форма элипса зависит от пропорций ассета объекта. Соответсвенно олень, мартыша и панда — продолговатый овал, а, например, курица, утка и змея — чистого вида круги. Звучит дивно, но такие ассеты)

Животины - овалы
image

image

image

Животины - круги
image
image
image

Самым муторным было, естественно, создание уровней. В UIKit Dynamics препятствие является невидимым, соответственно видимую часть нужно рисовать отдельно. Пришлось подготовить набор структур, каждая из которых содержит начальную и конечную точку препятствия и проходясь по ним — делать отрисовку и добавлять в виде барьера.

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

Когда уровней накопилось достаточно и игра стала близкой к готовности релиза, я решил добавить последний штришок — сделать некоторых питомцев более живыми. Поскольку ассетов с закрытыми глазами в бесплатном паке не было — было решено посадить за это дело жену. Так у половины зоопарка появилась анимация моргания.

Также под конец разработки было решено показывать следующую выпадающую животину — на некоторых уровнях это реально влияет на выбор места сброса.

В целом UIKit Dynamics и правда не предназначен для разработки игр. Самым большим ограничением стала невозможность анимировать препятствия. Возможно обходные решения есть, но достойных рабочих вариантов я пока не нашел. Поэтому на данный момент все барьеры статичны. При этом фреймворк достаточно прост в понимании, легок в использовании (т.к сразу внедрен) и не требует танцев с бубном.

Парочка советов по прохождению уровней. Не стоит сразу накидывать много живности — они любят кучковаться и застревать. Старайтесь держать дистанцию, но не забывайте про время.

Сама игра доступна здесь и абсолютно бесплатна.

Буду благодарен за отзывы о геймплее и оценки. Реально интересно насколько такой формат геймплея «заходит» обществу.

Будьте здоровы.
Теги:
Хабы:
Всего голосов 4: ↑3 и ↓1+2
Комментарии3

Публикации

Истории

Работа

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область