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

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

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

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

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

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

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

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

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

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

image

image

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

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

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

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

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

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

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

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

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

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

Публикации

Истории

Работа

Unity разработчик
13 вакансий
iOS разработчик
23 вакансии
Swift разработчик
42 вакансии

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн